summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r--lib/puppet/parser/interpreter.rb19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb
index 0e81c109f..b4936dd23 100644
--- a/lib/puppet/parser/interpreter.rb
+++ b/lib/puppet/parser/interpreter.rb
@@ -361,6 +361,7 @@ class Puppet::Parser::Interpreter
end
@files = []
+ @loaded = []
# Create our parser object
parsefiles
@@ -384,15 +385,19 @@ class Puppet::Parser::Interpreter
loaded = false
# First try to load the top-level module
mod = filename.scan(/^[\w-]+/).shift
- begin
- @parser.import(mod)
- Puppet.info "Autoloaded module %s" % mod
- loaded = true
- rescue Puppet::ImportError => detail
- # We couldn't load the module
+ unless @loaded.include?(mod)
+ @loaded << mod
+ begin
+ @parser.import(mod)
+ Puppet.info "Autoloaded module %s" % mod
+ loaded = true
+ rescue Puppet::ImportError => detail
+ # We couldn't load the module
+ end
end
- unless filename == mod
+ unless filename == mod and ! @loaded.include?(mod)
+ @loaded << mod
# Then the individual file
begin
@parser.import(filename)