Skip to content

Commit

Permalink
Set error only if token is also set
Browse files Browse the repository at this point in the history
  • Loading branch information
malthe committed May 8, 2017
1 parent a60b307 commit 68f2f99
Showing 1 changed file with 10 additions and 14 deletions.
24 changes: 10 additions & 14 deletions src/chameleon/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,15 +108,6 @@ def store_rcontext(name):
return subscript(name, load("rcontext"), ast.Store())


def set_error(exception, token):
return template(
"rcontext.setdefault('__error__', [])."
"append(token + (__filename, exc, ))",
exc=exception,
token=token
)


def set_token(stmts, token):
pos = getattr(token, "pos", 0)
body = template("__token = pos", pos=TokenRef(pos, len(token)))
Expand Down Expand Up @@ -1084,11 +1075,16 @@ def visit_Macro(self, node):
"except: NAME = None",
KEY=ast.Str(s=name), NAME=store(name))

exc_handler = set_error(
template(
"exc_info()[1]", exc_info=Symbol(sys.exc_info), mode="eval"
),
template("__tokens.get(pos, ())", pos="__token", mode="eval")
exc = template(
"exc_info()[1]", exc_info=Symbol(sys.exc_info), mode="eval"
)

exc_handler = template(
"if pos is not None: rcontext.setdefault('__error__', [])."
"append(token + (__filename, exc, ))",
exc=exc,
token=template("__tokens[pos]", pos="__token", mode="eval"),
pos="__token"
) + template("raise")

# Wrap visited nodes in try-except error handler.
Expand Down

0 comments on commit 68f2f99

Please sign in to comment.