Method: Puppet::Pops::Types::PObjectType::PAnnotatedMember#assert_can_be_overridden

Defined in:
lib/puppet/pops/types/p_object_type.rb

#assert_can_be_overridden(member) ⇒ PAnnotatedMember

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Checks if the given member can override this member.

Parameters:

Returns:



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/puppet/pops/types/p_object_type.rb', line 172

def assert_can_be_overridden(member)
  unless instance_of?(member.class)
    raise Puppet::ParseError, _("%{member} attempts to override %{label}") % { member: member.label, label: label }
  end
  if @final && !(constant? && member.constant?)
    raise Puppet::ParseError, _("%{member} attempts to override final %{label}") % { member: member.label, label: label }
  end
  unless member.override?
    # TRANSLATOR 'override => true' is a puppet syntax and should not be translated
    raise Puppet::ParseError, _("%{member} attempts to override %{label} without having override => true") % { member: member.label, label: label }
  end
  unless @type.assignable?(member.type)
    raise Puppet::ParseError, _("%{member} attempts to override %{label} with a type that does not match") % { member: member.label, label: label }
  end

  member
end