aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/mesonmain.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-08-18 14:13:17 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-08-30 18:05:02 -0700
commit3731e1d8f38be0ba3360d6badae789b1078e5b5a (patch)
treef1995ced3659c5cd7de27f6d771f2c5a2c719819 /mesonbuild/interpreter/mesonmain.py
parentd6a1f85248e80650d628d969212a06992d1b8f4c (diff)
downloadmeson-3731e1d8f38be0ba3360d6badae789b1078e5b5a.zip
meson-3731e1d8f38be0ba3360d6badae789b1078e5b5a.tar.gz
meson-3731e1d8f38be0ba3360d6badae789b1078e5b5a.tar.bz2
make EnvironmentVariablesObject a proper holder
Currently, EnvironmentVariablesObject is a strange holder-that's-not-a-holder. This has implicaitons for things that expect to get an EnvironmentVariables object, as we can't automatically unholder it, and instead have to to manually do so. Now we can automatically unholder it, which makes everything much nicer.
Diffstat (limited to 'mesonbuild/interpreter/mesonmain.py')
-rw-r--r--mesonbuild/interpreter/mesonmain.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/mesonbuild/interpreter/mesonmain.py b/mesonbuild/interpreter/mesonmain.py
index 5355c47..9c4f50a 100644
--- a/mesonbuild/interpreter/mesonmain.py
+++ b/mesonbuild/interpreter/mesonmain.py
@@ -7,13 +7,13 @@ from .. import mlog
from ..mesonlib import MachineChoice, OptionKey
from ..programs import OverrideProgram, ExternalProgram
+from ..interpreter.type_checking import ENV_KW
from ..interpreterbase import (MesonInterpreterObject, FeatureNew, FeatureDeprecated,
typed_pos_args, permittedKwargs, noArgsFlattening, noPosargs, noKwargs,
typed_kwargs, KwargInfo, MesonVersionString, InterpreterException)
from .interpreterobjects import (ExecutableHolder, ExternalProgramHolder,
- CustomTargetHolder, CustomTargetIndexHolder,
- EnvironmentVariablesObject)
+ CustomTargetHolder, CustomTargetIndexHolder)
from .type_checking import NATIVE_KW, NoneType
import typing as T
@@ -415,9 +415,10 @@ class MesonMain(MesonInterpreterObject):
@FeatureNew('add_devenv', '0.58.0')
@noKwargs
- @typed_pos_args('add_devenv', (str, list, dict, EnvironmentVariablesObject))
- def add_devenv_method(self, args: T.Union[str, list, dict, EnvironmentVariablesObject], kwargs: T.Dict[str, T.Any]) -> None:
+ @typed_pos_args('add_devenv', (str, list, dict, build.EnvironmentVariables))
+ def add_devenv_method(self, args: T.Tuple[T.Union[str, list, dict, build.EnvironmentVariables]], kwargs: T.Dict[str, T.Any]) -> None:
env = args[0]
- if isinstance(env, (str, list, dict)):
- env = EnvironmentVariablesObject(env)
- self.build.devenv.append(env.vars)
+ msg = ENV_KW.validator(env)
+ if msg:
+ raise build.InvalidArguments(f'"add_devenv": {msg}')
+ self.build.devenv.append(ENV_KW.convertor(env))