# File lib/puppet/parser/compiler.rb, line 53
53:   def add_resource(scope, resource)
54:     @resources << resource
55: 
56:     # Note that this will fail if the resource is not unique.
57:     @catalog.add_resource(resource)
58: 
59: 
60:     # Add our container edge.  If we're a class, then we get treated specially - we can
61:     # control the stage that the class is applied in.  Otherwise, we just
62:     # get added to our parent container.
63:     return if resource.type.to_s.downcase == "stage"
64: 
65:     if resource.type.to_s.downcase != "class"
66:       raise ArgumentError, "Only classes can set 'stage'; normal resources like #{resource} cannot change run stage" if resource[:stage]
67:       return @catalog.add_edge(scope.resource, resource)
68:     end
69: 
70:     unless stage = @catalog.resource(:stage, resource[:stage] || (scope && scope.resource && scope.resource[:stage]) || :main)
71:       raise ArgumentError, "Could not find stage #{resource[:stage] || :main} specified by #{resource}"
72:     end
73: 
74:     resource[:stage] ||= stage.title unless stage.title == :main
75:     @catalog.add_edge(stage, resource)
76:   end