def _validate_expression()

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)