Revise handling of tuple arguments so that the variables names match

those used by compile.c.  (test_grammar now depends on the names)
This commit is contained in:
Jeremy Hylton 2001-04-12 17:33:34 +00:00
parent e20bd19f86
commit bfb0cf822b
4 changed files with 16 additions and 16 deletions

View File

@ -495,7 +495,7 @@ class TupleArg:
def __repr__(self):
return "TupleArg(%s, %s)" % (self.count, self.names)
def getName(self):
return ".nested%d" % self.count
return ".%d" % self.count
def getArgCount(args):
argcount = len(args)

View File

@ -1101,11 +1101,10 @@ class AbstractFunctionCode:
self.emit('RETURN_VALUE')
def generateArgUnpack(self, args):
count = 0
for arg in args:
for i in range(len(args)):
arg = args[i]
if type(arg) == types.TupleType:
self.emit('LOAD_FAST', '.nested%d' % count)
count = count + 1
self.emit('LOAD_FAST', '.%d' % (i * 2))
self.unpackSequence(arg)
def unpackSequence(self, tup):
@ -1184,13 +1183,14 @@ def generateArgList(arglist):
args = []
extra = []
count = 0
for elt in arglist:
for i in range(len(arglist)):
elt = arglist[i]
if type(elt) == types.StringType:
args.append(elt)
elif type(elt) == types.TupleType:
args.append(TupleArg(count, elt))
count = count + 1
args.append(TupleArg(i * 2, elt))
extra.extend(misc.flatten(elt))
count = count + 1
else:
raise ValueError, "unexpect argument type:", elt
return args + extra, count

View File

@ -495,7 +495,7 @@ class TupleArg:
def __repr__(self):
return "TupleArg(%s, %s)" % (self.count, self.names)
def getName(self):
return ".nested%d" % self.count
return ".%d" % self.count
def getArgCount(args):
argcount = len(args)

View File

@ -1101,11 +1101,10 @@ class AbstractFunctionCode:
self.emit('RETURN_VALUE')
def generateArgUnpack(self, args):
count = 0
for arg in args:
for i in range(len(args)):
arg = args[i]
if type(arg) == types.TupleType:
self.emit('LOAD_FAST', '.nested%d' % count)
count = count + 1
self.emit('LOAD_FAST', '.%d' % (i * 2))
self.unpackSequence(arg)
def unpackSequence(self, tup):
@ -1184,13 +1183,14 @@ def generateArgList(arglist):
args = []
extra = []
count = 0
for elt in arglist:
for i in range(len(arglist)):
elt = arglist[i]
if type(elt) == types.StringType:
args.append(elt)
elif type(elt) == types.TupleType:
args.append(TupleArg(count, elt))
count = count + 1
args.append(TupleArg(i * 2, elt))
extra.extend(misc.flatten(elt))
count = count + 1
else:
raise ValueError, "unexpect argument type:", elt
return args + extra, count