diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-07-01 10:01:54 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-07-07 11:20:41 -0700 |
commit | 20c5dfe869897fe4de76e8f38281239e282387f2 (patch) | |
tree | 55962d918c815335cbd8fdc1f3a229dc712f5600 /mesonbuild/interpreter/interpreter.py | |
parent | 4d05f9d64bb1266a02fdc5ba41a1852176b1eca3 (diff) | |
download | meson-20c5dfe869897fe4de76e8f38281239e282387f2.zip meson-20c5dfe869897fe4de76e8f38281239e282387f2.tar.gz meson-20c5dfe869897fe4de76e8f38281239e282387f2.tar.bz2 |
interpreter: use typed_pos_args for get_variable
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 2b6a90e..0ffa062 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -11,7 +11,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from mesonbuild.interpreterbase.baseobjects import TYPE_kwargs from .. import mparser from .. import environment from .. import coredata @@ -32,7 +31,7 @@ from ..interpreterbase import InterpreterException, InvalidArguments, InvalidCod from ..interpreterbase import Disabler, disablerIfNotFound from ..interpreterbase import FeatureNew, FeatureDeprecated, FeatureNewKwargs, FeatureDeprecatedKwargs from ..interpreterbase import ObjectHolder, RangeHolder -from ..interpreterbase import TYPE_nkwargs, TYPE_nvar, TYPE_var +from ..interpreterbase.baseobjects import TYPE_nkwargs, TYPE_nvar, TYPE_var, TYPE_kwargs from ..modules import ExtensionModule, ModuleObject, MutableModuleObject, NewExtensionModule, NotFoundExtensionModule from ..cmake import CMakeInterpreter from ..backend.backends import Backend, ExecutableSerialisation @@ -2734,24 +2733,22 @@ This will become a hard error in the future.''', location=self.current_node) varname, value = args self.set_variable(varname, value, holderify=True) + @typed_pos_args('get_variable', (str, Disabler), optargs=[object]) @noKwargs @noArgsFlattening @permissive_unholder_return - def func_get_variable(self, node, args, kwargs): - if len(args) < 1 or len(args) > 2: - raise InvalidCode('Get_variable takes one or two arguments.') - varname = args[0] + def func_get_variable(self, node: mparser.BaseNode, args: T.Tuple[T.Union[str, Disabler], T.Optional[object]], + kwargs: 'TYPE_kwargs') -> 'TYPE_var': + varname, fallback = args if isinstance(varname, Disabler): return varname - if not isinstance(varname, str): - raise InterpreterException('First argument must be a string.') + try: return self.variables[varname] except KeyError: - pass - if len(args) == 2: - return args[1] - raise InterpreterException('Tried to get unknown variable "%s".' % varname) + if fallback is not None: + return fallback + raise InterpreterException(f'Tried to get unknown variable "{varname}".') @typed_pos_args('is_variable', str) @noKwargs |