aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorCharles Brunet <charles.brunet@optelgroup.com>2023-08-25 10:21:53 -0400
committerCharles Brunet <charles.brunet@optelgroup.com>2023-09-11 07:51:18 -0400
commit5b29eff8ad02348ff0495cd307b29259567e11df (patch)
tree3abf2b3cc03cb1134aeaa797101bd1affa6c7367 /mesonbuild
parent13ddf8bd025c3ff6257049cab6f3df1072ac0daf (diff)
downloadmeson-5b29eff8ad02348ff0495cd307b29259567e11df.zip
meson-5b29eff8ad02348ff0495cd307b29259567e11df.tar.gz
meson-5b29eff8ad02348ff0495cd307b29259567e11df.tar.bz2
parser: simplify other node constructors
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/cargo/builder.py6
-rw-r--r--mesonbuild/cmake/interpreter.py6
-rw-r--r--mesonbuild/mparser.py35
-rw-r--r--mesonbuild/rewriter.py10
4 files changed, 26 insertions, 31 deletions
diff --git a/mesonbuild/cargo/builder.py b/mesonbuild/cargo/builder.py
index 76d2e8b..3f7f688 100644
--- a/mesonbuild/cargo/builder.py
+++ b/mesonbuild/cargo/builder.py
@@ -71,7 +71,7 @@ def array(value: T.List[mparser.BaseNode], filename: str) -> mparser.ArrayNode:
"""
args = mparser.ArgumentNode(_token('array', filename, 'unused'))
args.arguments = value
- return mparser.ArrayNode(_symbol(filename, '['), args, _symbol(filename, ']'), -1, -1, -1, -1)
+ return mparser.ArrayNode(_symbol(filename, '['), args, _symbol(filename, ']'))
def identifier(value: str, filename: str) -> mparser.IdNode:
@@ -101,7 +101,7 @@ def method(name: str, id_: mparser.IdNode,
args.arguments = pos
if kw is not None:
args.kwargs = {identifier(k, id_.filename): v for k, v in kw.items()}
- return mparser.MethodNode(id_.filename, -1, -1, id_, _symbol(id_.filename, '.'), identifier(name, id_.filename), _symbol(id_.filename, '('), args, _symbol(id_.filename, ')'))
+ return mparser.MethodNode(id_, _symbol(id_.filename, '.'), identifier(name, id_.filename), _symbol(id_.filename, '('), args, _symbol(id_.filename, ')'))
def function(name: str, filename: str,
@@ -121,7 +121,7 @@ def function(name: str, filename: str,
args.arguments = pos
if kw is not None:
args.kwargs = {identifier(k, filename): v for k, v in kw.items()}
- return mparser.FunctionNode(filename, -1, -1, -1, -1, identifier(name, filename), _symbol(filename, '('), args, _symbol(filename, ')'))
+ return mparser.FunctionNode(identifier(name, filename), _symbol(filename, '('), args, _symbol(filename, ')'))
def equal(lhs: mparser.BaseNode, rhs: mparser.BaseNode) -> mparser.ComparisonNode:
diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py
index 88e5183..2f7cb69 100644
--- a/mesonbuild/cmake/interpreter.py
+++ b/mesonbuild/cmake/interpreter.py
@@ -995,7 +995,7 @@ class CMakeInterpreter:
if not isinstance(elements, list):
elements = [args]
args.arguments += [nodeify(x) for x in elements if x is not None]
- return ArrayNode(symbol('['), args, symbol(']'), 0, 0, 0, 0)
+ return ArrayNode(symbol('['), args, symbol(']'))
def function(name: str, args: T.Optional[TYPE_mixed_list] = None, kwargs: T.Optional[TYPE_mixed_kwargs] = None) -> FunctionNode:
args = [] if args is None else args
@@ -1006,7 +1006,7 @@ class CMakeInterpreter:
args = [args]
args_n.arguments = [nodeify(x) for x in args if x is not None]
args_n.kwargs = {id_node(k): nodeify(v) for k, v in kwargs.items() if v is not None}
- func_n = FunctionNode(self.subdir.as_posix(), 0, 0, 0, 0, id_node(name), symbol('('), args_n, symbol(')'))
+ func_n = FunctionNode(id_node(name), symbol('('), args_n, symbol(')'))
return func_n
def method(obj: BaseNode, name: str, args: T.Optional[TYPE_mixed_list] = None, kwargs: T.Optional[TYPE_mixed_kwargs] = None) -> MethodNode:
@@ -1018,7 +1018,7 @@ class CMakeInterpreter:
args = [args]
args_n.arguments = [nodeify(x) for x in args if x is not None]
args_n.kwargs = {id_node(k): nodeify(v) for k, v in kwargs.items() if v is not None}
- return MethodNode(self.subdir.as_posix(), 0, 0, obj, symbol('.'), id_node(name), symbol('('), args_n, symbol(')'))
+ return MethodNode(obj, symbol('.'), id_node(name), symbol('('), args_n, symbol(')'))
def assign(var_name: str, value: BaseNode) -> AssignmentNode:
return AssignmentNode(id_node(var_name), symbol('='), value)
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py
index 00b8731..75a12aa 100644
--- a/mesonbuild/mparser.py
+++ b/mesonbuild/mparser.py
@@ -376,9 +376,8 @@ class ArrayNode(BaseNode):
args: ArgumentNode
rbracket: SymbolNode
- def __init__(self, lbracket: SymbolNode, args: ArgumentNode, rbracket: SymbolNode,
- lineno: int, colno: int, end_lineno: int, end_colno: int):
- super().__init__(lineno, colno, args.filename, end_lineno=end_lineno, end_colno=end_colno)
+ def __init__(self, lbracket: SymbolNode, args: ArgumentNode, rbracket: SymbolNode):
+ super().__init__(lbracket.lineno, lbracket.colno, args.filename, end_lineno=rbracket.lineno, end_colno=rbracket.colno+1)
self.lbracket = lbracket
self.args = args
self.rbracket = rbracket
@@ -390,9 +389,8 @@ class DictNode(BaseNode):
args: ArgumentNode
rcurl: SymbolNode
- def __init__(self, lcurl: SymbolNode, args: ArgumentNode, rcurl: SymbolNode,
- lineno: int, colno: int, end_lineno: int, end_colno: int):
- super().__init__(lineno, colno, args.filename, end_lineno=end_lineno, end_colno=end_colno)
+ def __init__(self, lcurl: SymbolNode, args: ArgumentNode, rcurl: SymbolNode):
+ super().__init__(lcurl.lineno, lcurl.colno, args.filename, end_lineno=rcurl.lineno, end_colno=rcurl.colno+1)
self.lcurl = lcurl
self.args = args
self.rcurl = rcurl
@@ -490,9 +488,8 @@ class MethodNode(BaseNode):
args: ArgumentNode
rpar: SymbolNode
- def __init__(self, filename: str, lineno: int, colno: int,
- source_object: BaseNode, dot: SymbolNode, name: IdNode, lpar: SymbolNode, args: ArgumentNode, rpar: SymbolNode):
- super().__init__(lineno, colno, filename)
+ def __init__(self, source_object: BaseNode, dot: SymbolNode, name: IdNode, lpar: SymbolNode, args: ArgumentNode, rpar: SymbolNode):
+ super().__init__(name.lineno, name.colno, name.filename, end_lineno=rpar.lineno, end_colno=rpar.colno+1)
self.source_object = source_object
self.dot = dot
self.name = name
@@ -508,9 +505,8 @@ class FunctionNode(BaseNode):
args: ArgumentNode
rpar: SymbolNode
- def __init__(self, filename: str, lineno: int, colno: int, end_lineno: int, end_colno: int,
- func_name: IdNode, lpar: SymbolNode, args: ArgumentNode, rpar: SymbolNode):
- super().__init__(lineno, colno, filename, end_lineno=end_lineno, end_colno=end_colno)
+ def __init__(self, func_name: IdNode, lpar: SymbolNode, args: ArgumentNode, rpar: SymbolNode):
+ super().__init__(func_name.lineno, func_name.colno, func_name.filename, end_lineno=rpar.end_lineno, end_colno=rpar.end_colno+1)
self.func_name = func_name
self.lpar = lpar
self.args = args
@@ -631,8 +627,8 @@ class ParenthesizedNode(BaseNode):
inner: BaseNode
rpar: SymbolNode = field(hash=False)
- def __init__(self, lpar: SymbolNode, inner: BaseNode, rpar: SymbolNode, lineno: int, colno: int, end_lineno: int, end_colno: int):
- super().__init__(lineno, colno, inner.filename, end_lineno=end_lineno, end_colno=end_colno)
+ def __init__(self, lpar: SymbolNode, inner: BaseNode, rpar: SymbolNode):
+ super().__init__(lpar.lineno, lpar.colno, inner.filename, end_lineno=rpar.lineno, end_colno=rpar.colno+1)
self.lpar = lpar
self.inner = inner
self.rpar = rpar
@@ -850,7 +846,7 @@ class Parser:
raise ParseException('Function call must be applied to plain id',
self.getline(), left.lineno, left.colno)
assert isinstance(left.value, str)
- left = self.create_node(FunctionNode, left.filename, left.lineno, left.colno, self.current.lineno, self.current.colno, left, lpar, args, rpar)
+ left = self.create_node(FunctionNode, left, lpar, args, rpar)
go_again = True
while go_again:
go_again = False
@@ -869,19 +865,19 @@ class Parser:
e = self.statement()
self.block_expect('rparen', block_start)
rpar = self.create_node(SymbolNode, self.previous)
- return ParenthesizedNode(lpar, e, rpar, block_start.lineno, block_start.colno, self.current.lineno, self.current.colno)
+ return ParenthesizedNode(lpar, e, rpar)
elif self.accept('lbracket'):
lbracket = self.create_node(SymbolNode, block_start)
args = self.args()
self.block_expect('rbracket', block_start)
rbracket = self.create_node(SymbolNode, self.previous)
- return self.create_node(ArrayNode, lbracket, args, rbracket, block_start.lineno, block_start.colno, self.current.lineno, self.current.colno)
+ return self.create_node(ArrayNode, lbracket, args, rbracket)
elif self.accept('lcurl'):
lcurl = self.create_node(SymbolNode, block_start)
key_values = self.key_values()
self.block_expect('rcurl', block_start)
rcurl = self.create_node(SymbolNode, self.previous)
- return self.create_node(DictNode, lcurl, key_values, rcurl, block_start.lineno, block_start.colno, self.current.lineno, self.current.colno)
+ return self.create_node(DictNode, lcurl, key_values, rcurl)
else:
return self.e9()
@@ -962,8 +958,7 @@ class Parser:
args = self.args()
rpar = self.create_node(SymbolNode, self.current)
self.expect('rparen')
- method = self.create_node(MethodNode, methodname.filename, methodname.lineno, methodname.colno,
- source_object, dot, methodname, lpar, args, rpar)
+ method = self.create_node(MethodNode, source_object, dot, methodname, lpar, args, rpar)
if self.accept('dot'):
return self.method_call(method)
return method
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py
index 7527dab..a86b97e 100644
--- a/mesonbuild/rewriter.py
+++ b/mesonbuild/rewriter.py
@@ -192,7 +192,7 @@ class MTypeList(MTypeBase):
super().__init__(node)
def _new_node(self):
- return ArrayNode(_symbol('['), ArgumentNode(Token('', '', 0, 0, 0, None, '')), _symbol(']'), 0, 0, 0, 0)
+ return ArrayNode(_symbol('['), ArgumentNode(Token('', '', 0, 0, 0, None, '')), _symbol(']'))
def _new_element_node(self, value):
# Overwrite in derived class
@@ -731,7 +731,7 @@ class Rewriter:
node = tgt_function.args.kwargs[extra_files_key]
except StopIteration:
# Target has no extra_files kwarg, create one
- node = ArrayNode(_symbol('['), ArgumentNode(Token('', tgt_function.filename, 0, 0, 0, None, '[]')), _symbol(']'), tgt_function.end_lineno, tgt_function.end_colno, tgt_function.end_lineno, tgt_function.end_colno)
+ node = ArrayNode(_symbol('['), ArgumentNode(Token('', tgt_function.filename, 0, 0, 0, None, '[]')), _symbol(']'))
tgt_function.args.kwargs[IdNode(Token('string', tgt_function.filename, 0, 0, 0, None, 'extra_files'))] = node
mark_array = False
if tgt_function not in self.modified_nodes:
@@ -815,16 +815,16 @@ class Rewriter:
# Build src list
src_arg_node = ArgumentNode(Token('string', filename, 0, 0, 0, None, ''))
- src_arr_node = ArrayNode(_symbol('['), src_arg_node, _symbol(']'), 0, 0, 0, 0)
+ src_arr_node = ArrayNode(_symbol('['), src_arg_node, _symbol(']'))
src_far_node = ArgumentNode(Token('string', filename, 0, 0, 0, None, ''))
- src_fun_node = FunctionNode(filename, 0, 0, 0, 0, IdNode(Token('id', filename, 0, 0, 0, (0, 0), 'files')), _symbol('('), src_far_node, _symbol(')'))
+ src_fun_node = FunctionNode(IdNode(Token('id', filename, 0, 0, 0, (0, 0), 'files')), _symbol('('), src_far_node, _symbol(')'))
src_ass_node = AssignmentNode(IdNode(Token('id', filename, 0, 0, 0, (0, 0), source_id)), _symbol('='), src_fun_node)
src_arg_node.arguments = [StringNode(Token('string', filename, 0, 0, 0, None, x)) for x in cmd['sources']]
src_far_node.arguments = [src_arr_node]
# Build target
tgt_arg_node = ArgumentNode(Token('string', filename, 0, 0, 0, None, ''))
- tgt_fun_node = FunctionNode(filename, 0, 0, 0, 0, IdNode(Token('id', filename, 0, 0, 0, (0, 0), cmd['target_type'])), _symbol('('), tgt_arg_node, _symbol(')'))
+ tgt_fun_node = FunctionNode(IdNode(Token('id', filename, 0, 0, 0, (0, 0), cmd['target_type'])), _symbol('('), tgt_arg_node, _symbol(')'))
tgt_ass_node = AssignmentNode(IdNode(Token('id', filename, 0, 0, 0, (0, 0), target_id)), _symbol('='), tgt_fun_node)
tgt_arg_node.arguments = [
StringNode(Token('string', filename, 0, 0, 0, None, cmd['target'])),