diff options
| author | Volker Weißmann <volker.weissmann@gmx.de> | 2025-06-02 18:04:50 +0200 |
|---|---|---|
| committer | Jussi Pakkanen <jussi.pakkanen@mailbox.org> | 2025-06-09 21:01:09 +0300 |
| commit | 4a57a5fd0cdd5064a03566f40b61c827f27ea529 (patch) | |
| tree | 575074ebb07a3d786787e62c328c121653e53433 /mesonbuild/interpreterbase | |
| parent | a3f43cbc5b3738bd26f421d00c1b53736364954c (diff) | |
| download | meson-4a57a5fd0cdd5064a03566f40b61c827f27ea529.tar.gz | |
AstInterpreter: Fix dead-code-crash
Without this commit, the rewriter and the static introspection tool
crash if `meson.build` contains something like
```meson
if false
foo = not_defined
endif
```
or
```meson
if false
message(not_defined)
endif
```
While it could be argued, that you should not write stuff like this,
this used to raise a `MesonBugException`, which we have to fix.
Fixes #14667
Diffstat (limited to 'mesonbuild/interpreterbase')
| -rw-r--r-- | mesonbuild/interpreterbase/__init__.py | 2 | ||||
| -rw-r--r-- | mesonbuild/interpreterbase/baseobjects.py | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/interpreterbase/__init__.py b/mesonbuild/interpreterbase/__init__.py index 473379307..88fa706b9 100644 --- a/mesonbuild/interpreterbase/__init__.py +++ b/mesonbuild/interpreterbase/__init__.py @@ -61,6 +61,7 @@ __all__ = [ 'HoldableTypes', 'UnknownValue', + 'UndefinedVariable', ] from .baseobjects import ( @@ -85,6 +86,7 @@ from .baseobjects import ( HoldableTypes, UnknownValue, + UndefinedVariable, ) from .decorators import ( diff --git a/mesonbuild/interpreterbase/baseobjects.py b/mesonbuild/interpreterbase/baseobjects.py index 7cda5729f..5ad6f4351 100644 --- a/mesonbuild/interpreterbase/baseobjects.py +++ b/mesonbuild/interpreterbase/baseobjects.py @@ -127,6 +127,10 @@ class UnknownValue(MesonInterpreterObject): limitations in our code or because the value differs from machine to machine.''' +class UndefinedVariable(MesonInterpreterObject): + '''This class is only used for the rewriter/static introspection tool and + represents the `value` a meson-variable has if it was never written to.''' + HoldableTypes = (HoldableObject, int, bool, str, list, dict) TYPE_HoldableTypes = T.Union[TYPE_var, HoldableObject] InterpreterObjectTypeVar = T.TypeVar('InterpreterObjectTypeVar', bound=TYPE_HoldableTypes) |
