aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/rewriter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-03-03 10:48:47 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2019-03-03 13:57:25 +0200
commit5a22bb79016c5e7fe386c9cf035c8c3517e883f8 (patch)
tree1073ebf41d0dc732d140b5eb1b9dd037d69f7b51 /mesonbuild/rewriter.py
parent7199cd2095127770600b1c54eea53b044ce462c3 (diff)
downloadmeson-5a22bb79016c5e7fe386c9cf035c8c3517e883f8.zip
meson-5a22bb79016c5e7fe386c9cf035c8c3517e883f8.tar.gz
meson-5a22bb79016c5e7fe386c9cf035c8c3517e883f8.tar.bz2
rewriter: Use mparser to detect the end of some nodes
Diffstat (limited to 'mesonbuild/rewriter.py')
-rw-r--r--mesonbuild/rewriter.py35
1 files changed, 6 insertions, 29 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py
index fc4c2cf..ec78521 100644
--- a/mesonbuild/rewriter.py
+++ b/mesonbuild/rewriter.py
@@ -157,7 +157,7 @@ class MTypeList(MTypeBase):
super().__init__(node)
def _new_node(self):
- return mparser.ArrayNode(mparser.ArgumentNode(mparser.Token('', '', 0, 0, 0, None, '')), 0, 0)
+ return mparser.ArrayNode(mparser.ArgumentNode(mparser.Token('', '', 0, 0, 0, None, '')), 0, 0, 0, 0)
def _new_element_node(self, value):
# Overwrite in derived class
@@ -644,16 +644,16 @@ class Rewriter:
# Build src list
src_arg_node = ArgumentNode(Token('string', cmd['subdir'], 0, 0, 0, None, ''))
- src_arr_node = ArrayNode(src_arg_node, 0, 0)
+ src_arr_node = ArrayNode(src_arg_node, 0, 0, 0, 0)
src_far_node = ArgumentNode(Token('string', cmd['subdir'], 0, 0, 0, None, ''))
- src_fun_node = FunctionNode(cmd['subdir'], 0, 0, 'files', src_far_node)
+ src_fun_node = FunctionNode(cmd['subdir'], 0, 0, 0, 0, 'files', src_far_node)
src_ass_node = AssignmentNode(cmd['subdir'], 0, 0, '{}_src'.format(cmd['target']), src_fun_node)
src_arg_node.arguments = [StringNode(Token('string', cmd['subdir'], 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', cmd['subdir'], 0, 0, 0, None, ''))
- tgt_fun_node = FunctionNode(cmd['subdir'], 0, 0, cmd['target_type'], tgt_arg_node)
+ tgt_fun_node = FunctionNode(cmd['subdir'], 0, 0, 0, 0, cmd['target_type'], tgt_arg_node)
tgt_ass_node = AssignmentNode(cmd['subdir'], 0, 0, '{}_tgt'.format(cmd['target']), tgt_fun_node)
tgt_arg_node.arguments = [
StringNode(Token('string', cmd['subdir'], 0, 0, 0, None, cmd['target'])),
@@ -758,31 +758,8 @@ class Rewriter:
col = node.colno
start = offsets[line] + col
end = start
- if isinstance(node, ArrayNode):
- if raw[end] != '[':
- mlog.warning('Internal error: expected "[" at {}:{} but got "{}"'.format(line, col, raw[end]))
- return
- counter = 1
- while counter > 0:
- end += 1
- if raw[end] == '[':
- counter += 1
- elif raw[end] == ']':
- counter -= 1
- end += 1
-
- elif isinstance(node, FunctionNode):
- while raw[end] != '(':
- end += 1
- end += 1
- counter = 1
- while counter > 0:
- end += 1
- if raw[end] == '(':
- counter += 1
- elif raw[end] == ')':
- counter -= 1
- end += 1
+ if isinstance(node, (ArrayNode, FunctionNode)):
+ end = offsets[node.end_lineno - 1] + node.end_colno
# Only removal is supported for assignments
elif isinstance(node, AssignmentNode) and i['action'] == 'rm':