in python/moz/l10n/formats/mf2/validate.py [0:0]
def _validate_expression(expr: Expression) -> None:
if isinstance(expr.arg, VariableRef):
_validate_variable(expr.arg)
elif expr.arg is not None and not isinstance(expr.arg, str):
raise MF2ValidationError(f"Invalid expression operand: {expr.arg}")
if expr.function is None:
if expr.arg is None:
raise MF2ValidationError(
"Invalid expression with no operand and no function"
)
if expr.options:
raise MF2ValidationError("Invalid expression with options but no function")
elif isinstance(expr.function, str) and identifier_re.fullmatch(expr.function):
_validate_options(expr.options)
else:
raise MF2ValidationError(f"Invalid function name: {expr.function}")
_validate_attributes(expr.attributes)