Index: Lib/compiler/transformer.py =================================================================== --- Lib/compiler/transformer.py (revision 52818) +++ Lib/compiler/transformer.py (working copy) @@ -831,17 +831,11 @@ i = i + 3 else: # no vararg assert node[0] == token.COMMA - i += 1 - #elif node[0] == token.COMMA: - # i += 1 - # kwonlyargs, skip = self.keywordonlyargs(nodelist[i:]) - # i += skip - if nodelist[i][0] == token.NAME: + i += 2 + if i < len(nodelist) and nodelist[i][0] == token.NAME: kwonlyargs, skip = self.keywordonlyargs(nodelist[i:]) i += skip - print "kwonlyargs:", kwonlyargs - if i < len(nodelist): # should be DOUBLESTAR t = nodelist[i][0] @@ -869,7 +863,6 @@ # skip the comma i = i + 1 - print "names:", names, "defaults:", defaults, "kwonlyargs:", kwonlyargs, "flags:", flags return names, defaults, kwonlyargs, flags def com_fpdef(self, node): Index: Lib/test/test_compiler.py =================================================================== --- Lib/test/test_compiler.py (revision 52818) +++ Lib/test/test_compiler.py (working copy) @@ -19,52 +19,37 @@ libdir = os.path.dirname(unittest.__file__) testdir = os.path.dirname(test.test_support.__file__) -## for dir in [libdir, testdir]: -## for basename in os.listdir(dir): -## # Print still working message since this test can be really slow -## if next_time <= time.time(): -## next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL -## print >>sys.__stdout__, \ -## ' testCompileLibrary still working, be patient...' -## sys.__stdout__.flush() -## -## if not basename.endswith(".py"): -## continue -## if not TEST_ALL and random() < 0.98: -## continue -## path = os.path.join(dir, basename) -## if test.test_support.verbose: -## print "compiling", path -## f = open(path, "U") -## buf = f.read() -## f.close() -## if "badsyntax" in basename or "bad_coding" in basename: -## self.assertRaises(SyntaxError, compiler.compile, -## buf, basename, "exec") -## else: -## try: -## compiler.compile(buf, basename, "exec") -## except Exception, e: -## args = list(e.args) -## args[0] += "[in file %s]" % basename -## e.args = tuple(args) -## raise + for dir in [libdir, testdir]: + for basename in os.listdir(dir): + # Print still working message since this test can be really slow + if next_time <= time.time(): + next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL + print >>sys.__stdout__, \ + ' testCompileLibrary still working, be patient...' + sys.__stdout__.flush() - path = "/home/jiwon/p3yk/Lib/test/test_keywordonlyarg.py" - if test.test_support.verbose: - print "compiling", path - f = open(path, "U") - buf = f.read() - f.close() - #try: - compiler.compile(buf, "test_keywordonlyarg.py", "exec") - #except Exception, e: - # args = list(e.args) - # args[0] += "[in file %s]" % path - # e.args = tuple(args) - # raise + if not basename.endswith(".py"): + continue + if not TEST_ALL and random() < 0.98: + continue + path = os.path.join(dir, basename) + if test.test_support.verbose: + print "compiling", path + f = open(path, "U") + buf = f.read() + f.close() + if "badsyntax" in basename or "bad_coding" in basename: + self.assertRaises(SyntaxError, compiler.compile, + buf, basename, "exec") + else: + try: + compiler.compile(buf, basename, "exec") + except Exception, e: + args = list(e.args) + args[0] += "[in file %s]" % basename + e.args = tuple(args) + raise - def testNewClassSyntax(self): compiler.compile("class foo():pass\n\n","","exec") bool Bus::isRequestOnBus(uint addr) { }