diff options
Diffstat (limited to 'lib/puppet/parser/ast/ifstatement.rb')
-rw-r--r-- | lib/puppet/parser/ast/ifstatement.rb | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/puppet/parser/ast/ifstatement.rb b/lib/puppet/parser/ast/ifstatement.rb index d216b7c65..9d52123b6 100644 --- a/lib/puppet/parser/ast/ifstatement.rb +++ b/lib/puppet/parser/ast/ifstatement.rb @@ -18,14 +18,19 @@ class Puppet::Parser::AST def evaluate(scope) value = @test.safeevaluate(scope) - if Puppet::Parser::Scope.true?(value) - return @statements.safeevaluate(scope) - else - if defined? @else - return @else.safeevaluate(scope) + # let's emulate a new scope for each branches + begin + if Puppet::Parser::Scope.true?(value) + return @statements.safeevaluate(scope) else - return nil + if defined? @else + return @else.safeevaluate(scope) + else + return nil + end end + ensure + scope.unset_ephemeral_var end end end |