# HG changeset patch # User Paul Boddie # Date 1481648306 -3600 # Node ID 535f437d592e60a743d5c9f0470b81852fcb7868 # Parent b8782209d44595cf33317ea0e3ac60dc31d1fe16 Propagate the actual text for constant literals from the program code. diff -r b8782209d445 -r 535f437d592e common.py --- a/common.py Tue Dec 13 17:57:33 2016 +0100 +++ b/common.py Tue Dec 13 17:58:26 2016 +0100 @@ -395,7 +395,7 @@ for i, node in enumerate(n.nodes): assignments.append( compiler.ast.Assign([node], compiler.ast.Subscript( - compiler.ast.Name(temp), "OP_APPLY", [compiler.ast.Const(i)])) + compiler.ast.Name(temp), "OP_APPLY", [compiler.ast.Const(i, str(i))])) ) return self.process_structure_node(compiler.ast.Stmt(assignments)) diff -r b8782209d445 -r 535f437d592e compiler/ast.py --- a/compiler/ast.py Tue Dec 13 17:57:33 2016 +0100 +++ b/compiler/ast.py Tue Dec 13 17:58:26 2016 +0100 @@ -502,8 +502,9 @@ return "%s %s" % (self.expr, " ".join([("%s %s" % op) for op in self.ops])) class Const(Node): - def __init__(self, value, lineno=None): + def __init__(self, value, literal=None, lineno=None): self.value = value + self.literal = literal self.lineno = lineno def getChildren(self): @@ -513,7 +514,7 @@ return () def __repr__(self): - return "Const(%r)" % (self.value,) + return "Const(%r, %r)" % (self.value, self.literal) def __str__(self): return repr(self.value) diff -r b8782209d445 -r 535f437d592e compiler/transformer.py --- a/compiler/transformer.py Tue Dec 13 17:57:33 2016 +0100 +++ b/compiler/transformer.py Tue Dec 13 17:58:26 2016 +0100 @@ -742,7 +742,7 @@ def atom_number(self, nodelist): ### need to verify this matches compile.c k = eval(nodelist[0][1]) - return Const(k, lineno=nodelist[0][2]) + return Const(k, nodelist[0][1], lineno=nodelist[0][2]) def decode_literal(self, lit): if self.encoding: @@ -759,7 +759,7 @@ k = '' for node in nodelist: k += self.decode_literal(node[1]) - return Const(k, lineno=nodelist[0][2]) + return Const(k, node[1], lineno=nodelist[0][2]) def atom_name(self, nodelist): return Name(nodelist[0][1], lineno=nodelist[0][2])