# File lib/puppet/parser/compiler.rb, line 139
139:   def evaluate_classes(classes, scope, lazy_evaluate = true)
140:     raise Puppet::DevError, "No source for scope passed to evaluate_classes" unless scope.source
141:     found = []
142:     param_classes = nil
143:     # if we are a param class, save the classes hash
144:     # and transform classes to be the keys
145:     if classes.class == Hash
146:       param_classes = classes
147:       classes = classes.keys
148:     end
149:     classes.each do |name|
150:       # If we can find the class, then make a resource that will evaluate it.
151:       if klass = scope.find_hostclass(name)
152: 
153:         if param_classes
154:           resource = klass.ensure_in_catalog(scope, param_classes[name] || {})
155:         else
156:           found << name and next if scope.class_scope(klass)
157:           resource = klass.ensure_in_catalog(scope)
158:         end
159: 
160:         # If they've disabled lazy evaluation (which the :include function does),
161:         # then evaluate our resource immediately.
162:         resource.evaluate unless lazy_evaluate
163:         found << name
164:       else
165:         Puppet.info "Could not find class #{name} for #{node.name}"
166:         @catalog.tag(name)
167:       end
168:     end
169:     found
170:   end