diff --git a/lesscpy/lessc/parser.py b/lesscpy/lessc/parser.py index de9a2fd..b4b2706 100644 --- a/lesscpy/lessc/parser.py +++ b/lesscpy/lessc/parser.py @@ -366,6 +366,8 @@ class LessParser(object): """ variable_decl : variable ':' style_list ';' """ p[0] = Variable(list(p)[1:-1], p.lineno(4)) + p[0].parse(self.scope) + self.scope.add_variable(p[0]) # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/lesscpy/plib/deferred.py b/lesscpy/plib/deferred.py index e9f6191..e84502d 100644 --- a/lesscpy/plib/deferred.py +++ b/lesscpy/plib/deferred.py @@ -60,6 +60,7 @@ class Deferred(Node): res = mixin.call(scope, args) if res: break if res: + [scope.add_variable(v) for v in mixin.vars] scope.deferred = ident res = [p.parse(scope) for p in res if p] while(any(t for t in res if type(t) is Deferred)): diff --git a/lesscpy/plib/mixin.py b/lesscpy/plib/mixin.py index a7d903f..2e34862 100644 --- a/lesscpy/plib/mixin.py +++ b/lesscpy/plib/mixin.py @@ -30,7 +30,9 @@ class Mixin(Node): self.name, args, self.guards = self.tokens[0] self.args = [a for a in utility.flatten(args) if a] self.body = Block([None, self.tokens[1]], 0) - self.scope = scope + self.vars = list(utility.flatten([list(v.values()) + for v in [s['__variables__'] + for s in scope]])) return self def raw(self):