mirror of
https://git.freebsd.org/ports.git
synced 2025-06-01 19:06:28 -04:00
upstream patch should allow building with newer pythons, while the old python still works
60 lines
2.1 KiB
Text
60 lines
2.1 KiB
Text
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<cdata>.*?\n?)%\}[ ]*(C\+\+)?"
|
|
+ r"%\{[ ]*C\+\+[ ]*\n(?P<cdata>(\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('"')
|
|
|