aboutsummaryrefslogtreecommitdiffstats
path: root/mako/parsetree.py
diff options
context:
space:
mode:
Diffstat (limited to 'mako/parsetree.py')
-rw-r--r--mako/parsetree.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/mako/parsetree.py b/mako/parsetree.py
index 12b0498..554531e 100644
--- a/mako/parsetree.py
+++ b/mako/parsetree.py
@@ -176,7 +176,7 @@ class Expression(Node):
self.escapes_code.undeclared_identifiers.difference(
set(filters.DEFAULT_ESCAPES.keys())
)
- )
+ ).difference(self.code.declared_identifiers)
def __repr__(self):
return "Expression(%r, %r, %r)" % (
@@ -274,6 +274,10 @@ class Tag(Node):
if m:
code = ast.PythonCode(m.group(1).rstrip(),
**self.exception_kwargs)
+ # we aren't discarding "declared_identifiers" here,
+ # which we do so that list comprehension-declared variables
+ # aren't counted. As yet can't find a condition that
+ # requires it here.
undeclared_identifiers = \
undeclared_identifiers.union(
code.undeclared_identifiers)
@@ -327,7 +331,9 @@ class IncludeTag(Tag):
return []
def undeclared_identifiers(self):
- identifiers = self.page_args.undeclared_identifiers.difference(set(["__DUMMY"]))
+ identifiers = self.page_args.undeclared_identifiers.\
+ difference(set(["__DUMMY"])).\
+ difference(self.page_args.declared_identifiers)
return identifiers.union(super(IncludeTag, self).undeclared_identifiers())
class NamespaceTag(Tag):
@@ -414,7 +420,8 @@ class CallTag(Tag):
return self.code.declared_identifiers.union(self.body_decl.argnames)
def undeclared_identifiers(self):
- return self.code.undeclared_identifiers
+ return self.code.undeclared_identifiers.\
+ difference(self.code.declared_identifiers)
class CallNamespaceTag(Tag):
@@ -443,7 +450,8 @@ class CallNamespaceTag(Tag):
return self.code.declared_identifiers.union(self.body_decl.argnames)
def undeclared_identifiers(self):
- return self.code.undeclared_identifiers
+ return self.code.undeclared_identifiers.\
+ difference(self.code.declared_identifiers)
class InheritTag(Tag):
__keyword__ = 'inherit'