Bug 1799982 - Remove uses of inline flags from XPIDL regexps. r=xpcom-reviewers,kmag Apparently the use of these is being turned into an error in Python 3.11. Fortunately, our uses appears to be rather trivial. For t_multilinecomment and t_LCDATA, I dropped the (?s) flag and just replaced the one use of . with (\n|.). (?s) means DOTALL, which means that dot includes any character, including a newline. Otherwise it means dot includes any character except a newline. I took the new t_singlelinecomment from IPDL's parser.py, so I assume it is reasonable enough. t_multilinecomment is also now the same as in IPDL. Differential Revision: https://phabricator.services.mozilla.com/D161738 diff --git xpcom/idl-parser/xpidl/xpidl.py xpcom/idl-parser/xpidl/xpidl.py --- xpcom/idl-parser/xpidl/xpidl.py +++ xpcom/idl-parser/xpidl/xpidl.py @@ -1634,36 +1634,36 @@ class IDLParser(object): t_LSHIFT = r"<<" t_RSHIFT = r">>" literals = '"(){}[]<>,;:=|+-*' t_ignore = " \t" def t_multilinecomment(self, t): - r"/\*(?s).*?\*/" + r"/\*(\n|.)*?\*/" t.lexer.lineno += t.value.count("\n") if t.value.startswith("/**"): self._doccomments.append(t.value) def t_singlelinecomment(self, t): - r"(?m)//.*?$" + r"//[^\n]*" def t_IID(self, t): return t t_IID.__doc__ = r"%(c)s{8}-%(c)s{4}-%(c)s{4}-%(c)s{4}-%(c)s{12}" % {"c": hexchar} def t_IDENTIFIER(self, t): r"(unsigned\ long\ long|unsigned\ short|unsigned\ long|long\ long)(?!_?[A-Za-z][A-Za-z_0-9])|_?[A-Za-z][A-Za-z_0-9]*" # NOQA: E501 t.type = self.keywords.get(t.value, "IDENTIFIER") return t def t_LCDATA(self, t): - r"(?s)%\{[ ]*C\+\+[ ]*\n(?P.*?\n?)%\}[ ]*(C\+\+)?" + r"%\{[ ]*C\+\+[ ]*\n(?P(\n|.)*?\n?)%\}[ ]*(C\+\+)?" t.type = "CDATA" t.value = t.lexer.lexmatch.group("cdata") t.lexer.lineno += t.value.count("\n") return t def t_INCLUDE(self, t): r'\#include[ \t]+"[^"\n]+"' inc, value, end = t.value.split('"')