puppetlabs/puppet · error · ArgumentError

%{function_name}(): The EPP template contains illegal expres

Error message

%{function_name}(): The EPP template contains illegal expressions (definitions)

What it means

Error "%{function_name}(): The EPP template contains illegal expressions (definitions)" thrown in puppetlabs/puppet.

Source

Thrown at lib/puppet/pops/evaluator/epp_evaluator.rb:73

  end

  def self.evaluate(parser, func_name, scope, use_global_scope_only, parse_result, template_args)
    template_args, template_args_set = handle_template_args(func_name, template_args)

    body = parse_result.body
    unless body.is_a?(Puppet::Pops::Model::LambdaExpression)
      # TRANSLATORS 'LambdaExpression' is a class name and should not be translated
      raise ArgumentError, _("%{function_name}(): the parser did not produce a LambdaExpression, got '%{class_name}'") %
                           { function_name: func_name, class_name: body.class }
    end
    unless body.body.is_a?(Puppet::Pops::Model::EppExpression)
      # TRANSLATORS 'EppExpression' is a class name and should not be translated
      raise ArgumentError, _("%{function_name}(): the parser did not produce an EppExpression, got '%{class_name}'") %
                           { function_name: func_name, class_name: body.body.class }
    end
    unless parse_result.definitions.empty?
      # TRANSLATORS 'EPP' refers to 'Embedded Puppet (EPP) template'
      raise ArgumentError, _("%{function_name}(): The EPP template contains illegal expressions (definitions)") %
                           { function_name: func_name }
    end

    parameters_specified = body.body.parameters_specified
    if parameters_specified || template_args_set
      enforce_parameters = parameters_specified
    else
      enforce_parameters = true
    end

    # filter out all qualified names and set them in qualified_variables
    # only pass unqualified (filtered) variable names to the template
    filtered_args = {}
    template_args.each_pair do |k, v|
      if k =~ /::/
        k = k[2..] if k.start_with?('::')
        scope[k] = v
      else

View on GitHub (pinned to e227c27540)

When it happens

Trigger: Thrown at lib/puppet/pops/evaluator/epp_evaluator.rb:73 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of puppetlabs/puppet@e227c27540 (2026-08-21). Data as JSON: /api/errors/918347349b325a83. Report an issue: GitHub.