diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-03-03 10:48:47 +0100 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-03 13:57:25 +0200 |
commit | 5a22bb79016c5e7fe386c9cf035c8c3517e883f8 (patch) | |
tree | 1073ebf41d0dc732d140b5eb1b9dd037d69f7b51 /mesonbuild/rewriter.py | |
parent | 7199cd2095127770600b1c54eea53b044ce462c3 (diff) | |
download | meson-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.py | 35 |
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': |