Class: Ruby::Rego::DefaultRuleValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/rego/compiler.rb

Overview

Validates default rule values for groundness.

Instance Method Summary collapse

Constructor Details

#initialize(child_node_extractors: DEFAULT_RULE_CHILD_NODE_EXTRACTORS, builtin_registry: Builtins::BuiltinRegistry.instance) ⇒ DefaultRuleValidator

Returns a new instance of DefaultRuleValidator.



564
565
566
567
568
569
570
# File 'lib/ruby/rego/compiler.rb', line 564

def initialize(
  child_node_extractors: DEFAULT_RULE_CHILD_NODE_EXTRACTORS,
  builtin_registry: Builtins::BuiltinRegistry.instance
)
  @child_node_extractors = child_node_extractors
  _ = builtin_registry
end

Instance Method Details

#check(rules_by_name) ⇒ Object

:reek:TooManyStatements



573
574
575
576
577
578
579
580
581
582
583
584
585
# File 'lib/ruby/rego/compiler.rb', line 573

def check(rules_by_name)
  Array(rules_by_name.values).flatten.each do |rule|
    value = rule.default_value
    next unless value
    next if comprehension_value?(value)
    next unless contains_variable_or_reference?(value)

    raise CompilationError.new(
      "Default rule values must be ground (no variables, references, or calls)",
      location: rule.location
    )
  end
end