# File lib/puppet/type.rb, line 467
467:   def newattr(name)
468:     if name.is_a?(Class)
469:       klass = name
470:       name = klass.name
471:     end
472: 
473:     unless klass = self.class.attrclass(name)
474:       raise Puppet::Error, "Resource type #{self.class.name} does not support parameter #{name}"
475:     end
476: 
477:     if provider and ! provider.class.supports_parameter?(klass)
478:       missing = klass.required_features.find_all { |f| ! provider.class.feature?(f) }
479:       info "Provider %s does not support features %s; not managing attribute %s" % [provider.class.name, missing.join(", "), name]
480:       return nil
481:     end
482: 
483:     return @parameters[name] if @parameters.include?(name)
484: 
485:     @parameters[name] = klass.new(:resource => self)
486:   end