diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-06-20 00:02:25 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-06-20 00:26:06 +0200 |
commit | 0358445b6e02c6adbc5edd841168f90a20430ce3 (patch) | |
tree | e92e40e3bd0ddf2dc3be0ecaaaa372cd88e3d18f | |
parent | a73791b529a22f71e9d72d0901cd001f3e25e999 (diff) | |
download | meson-0358445b6e02c6adbc5edd841168f90a20430ce3.zip meson-0358445b6e02c6adbc5edd841168f90a20430ce3.tar.gz meson-0358445b6e02c6adbc5edd841168f90a20430ce3.tar.bz2 |
fix: dicts and list need _holderify for fallback
-rw-r--r-- | mesonbuild/interpreterbase/interpreterbase.py | 4 | ||||
-rw-r--r-- | test cases/common/242 set and get variable/meson.build | 30 |
2 files changed, 30 insertions, 4 deletions
diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py index 8ef13c9..3ea10f4 100644 --- a/mesonbuild/interpreterbase/interpreterbase.py +++ b/mesonbuild/interpreterbase/interpreterbase.py @@ -799,7 +799,7 @@ The result of this is undefined and will become a hard error in a future Meson r index = posargs[0] fallback = None if len(posargs) == 2: - fallback = posargs[1] + fallback = self._holderify(posargs[1]) elif len(posargs) > 2: m = 'Array method \'get()\' only takes two arguments: the ' \ 'index and an optional fallback value if the index is ' \ @@ -845,7 +845,7 @@ The result of this is undefined and will become a hard error in a future Meson r return obj[key] if len(posargs) == 2: - fallback = posargs[1] + fallback = self._holderify(posargs[1]) if isinstance(fallback, mparser.BaseNode): return self.evaluate_statement(fallback) return fallback diff --git a/test cases/common/242 set and get variable/meson.build b/test cases/common/242 set and get variable/meson.build index ae6dadc..6023e88 100644 --- a/test cases/common/242 set and get variable/meson.build +++ b/test cases/common/242 set and get variable/meson.build @@ -1,7 +1,7 @@ project('set and get') var1 = 'test1.txt' -var2 = files('test1.txt') +var2 = files('test1.txt')[0] # Use is_disabler for accessing variables assert(var1 == 'test1.txt') @@ -9,7 +9,7 @@ assert(not is_disabler(var2)) # Ensure that set variables behave correctly set_variable('var3', 'test2.txt') -set_variable('var4', files('test2.txt')) +set_variable('var4', files('test2.txt')[0]) assert(var3 == 'test2.txt') assert(not is_disabler(var4)) @@ -35,3 +35,29 @@ assert(var7 == 'test2.txt') assert(not is_disabler(var8)) assert(get_variable('var9') == 'test2.txt') assert(not is_disabler(get_variable('var0'))) + +# test dict get +dict = {'a': var2} + +dict_t1 = dict['a'] +dict_t2 = dict.get('a') +dict_t3 = dict.get('a', var2) +dict_t4 = dict.get('b', var2) + +assert(not is_disabler(dict_t1)) +assert(not is_disabler(dict_t2)) +assert(not is_disabler(dict_t3)) +assert(not is_disabler(dict_t4)) + +# test lists +list = [var2] + +list_t1 = list[0] +list_t2 = list.get(0) +list_t3 = list.get(0, var2) +list_t4 = list.get(1, var2) + +assert(not is_disabler(list_t1)) +assert(not is_disabler(list_t2)) +assert(not is_disabler(list_t3)) +assert(not is_disabler(list_t4)) |