diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2019-12-03 23:34:47 -0500 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2019-12-04 16:45:56 -0500 |
commit | 9b1a85747334e3e1c21e9a27f4aa79f7f44c1f2d (patch) | |
tree | 07868682f01264aad85710ee28fa19a9f711c37a /mesonbuild/mparser.py | |
parent | b1c8f765fa6e2af0d185d2a20dc68c7567c916eb (diff) | |
download | meson-9b1a85747334e3e1c21e9a27f4aa79f7f44c1f2d.zip meson-9b1a85747334e3e1c21e9a27f4aa79f7f44c1f2d.tar.gz meson-9b1a85747334e3e1c21e9a27f4aa79f7f44c1f2d.tar.bz2 |
dict: Fully evaluate keys
The only restriction is keys must be string after evaluation. This fix
various inconsistencies.
Diffstat (limited to 'mesonbuild/mparser.py')
-rw-r--r-- | mesonbuild/mparser.py | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py index 80ffefd..76ad374 100644 --- a/mesonbuild/mparser.py +++ b/mesonbuild/mparser.py @@ -676,19 +676,7 @@ class Parser: while not isinstance(s, EmptyNode): potential = self.current if self.accept('colon'): - key_value = self.statement() - if isinstance(s, StringNode): - if s.value in a.kwargs: - # + 1 to colno to point to the actual string, not the opening quote - raise ParseException('Duplicate dictionary key: {}'.format(s.value), self.getline(), s.lineno, s.colno + 1) - a.set_kwarg(s.value, key_value) - elif isinstance(s, IdNode) and isinstance(s.value, str): - for key in a.kwargs: - if s.value == key.value: - raise ParseException('Duplicate dictionary variable key: {}'.format(s.value), self.getline(), s.lineno, s.colno) - a.set_kwarg(s, key_value) - else: - raise ParseException('Key must be a string or string variable', self.getline(), s.lineno, s.colno) + a.set_kwarg(s, self.statement()) potential = self.current if not self.accept('comma'): return a |