summary refs log tree commit diff
path: root/src/libexpr/parser.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexpr/parser.y')
-rw-r--r--src/libexpr/parser.y5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y
index 2ee3833fe6..c4afb72eac 100644
--- a/src/libexpr/parser.y
+++ b/src/libexpr/parser.y
@@ -91,12 +91,13 @@ static Expr fixAttrs(bool recursive, ATermList as)
         if (matchInherit(*i, src, names, pos)) {
             bool fromScope = matchScope(src);
             for (ATermIterator j(names); j; ++j) {
-                Expr rhs = fromScope ? makeVar(*j) : makeSelect(src, *j);
                 if (attrs.children.find(*j) != attrs.children.end()) 
                     throw ParseError(format("duplicate definition of attribute `%1%' at %2%")
                         % showAttrPath(ATmakeList1(*j)) % showPos(pos));
                 Tree & t(attrs.children[*j]);
-                t.leaf = rhs; t.pos = pos; if (recursive) t.recursive = false;
+                t.leaf = fromScope ? makeVar(*j) : makeSelect(src, *j);
+                t.pos = pos;
+                if (recursive && fromScope) t.recursive = false;
             }
         }