aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliot Haisley <35050275+Apache-HB@users.noreply.github.com>2020-07-20 16:30:02 -0400
committerNirbheek Chauhan <nirbheek@centricular.com>2020-09-09 18:10:18 +0530
commitcc745d5c1a4775567d37e172edaebd48e84c5df4 (patch)
treeda9cc3f621b3f9df81f4a2c1389646f5b9064640
parentb5edb514d7e7a4a6852167bcccf57940ab245ccf (diff)
downloadmeson-cc745d5c1a4775567d37e172edaebd48e84c5df4.zip
meson-cc745d5c1a4775567d37e172edaebd48e84c5df4.tar.gz
meson-cc745d5c1a4775567d37e172edaebd48e84c5df4.tar.bz2
prevent disabler object from overwriting arrays
fixes #7107
-rw-r--r--mesonbuild/interpreterbase.py6
-rw-r--r--test cases/common/235 disabler array addition/meson.build9
-rw-r--r--test cases/common/235 disabler array addition/test.c1
3 files changed, 12 insertions, 4 deletions
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index c7c8fc4..39531c1 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -810,9 +810,7 @@ The result of this is undefined and will become a hard error in a future Meson r
assert(isinstance(node, mparser.PlusAssignmentNode))
varname = node.var_name
addition = self.evaluate_statement(node.value)
- if is_disabler(addition):
- self.set_variable(varname, addition)
- return
+
# Remember that all variables are immutable. We must always create a
# full new variable and then assign it.
old_variable = self.get_variable(varname)
@@ -836,7 +834,7 @@ The result of this is undefined and will become a hard error in a future Meson r
new_value = {**old_variable, **addition}
# Add other data types here.
else:
- raise InvalidArguments('The += operator currently only works with arrays, dicts, strings or ints ')
+ raise InvalidArguments('The += operator currently only works with arrays, dicts, strings or ints')
self.set_variable(varname, new_value)
def evaluate_indexing(self, node: mparser.IndexNode) -> TYPE_var:
diff --git a/test cases/common/235 disabler array addition/meson.build b/test cases/common/235 disabler array addition/meson.build
new file mode 100644
index 0000000..e080770
--- /dev/null
+++ b/test cases/common/235 disabler array addition/meson.build
@@ -0,0 +1,9 @@
+project('disabler_inside_array', 'c')
+
+exes = []
+
+exes += executable('a', 'test.c')
+
+exes += executable('b', 'test.c', dependencies : disabler())
+
+exes += executable('c', 'test.c')
diff --git a/test cases/common/235 disabler array addition/test.c b/test cases/common/235 disabler array addition/test.c
new file mode 100644
index 0000000..76e8197
--- /dev/null
+++ b/test cases/common/235 disabler array addition/test.c
@@ -0,0 +1 @@
+int main() { return 0; }