diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py index d4f4613..335e5b1 100644 --- a/Lib/compiler/transformer.py +++ b/Lib/compiler/transformer.py @@ -1328,6 +1328,13 @@ class Transformer: subscripts = [] for i in range(1, len(nodelist), 2): subscripts.append(self.com_subscript(nodelist[i])) + if len(nodelist) > 2: + tulplesub = [ + sub for sub in subscripts + if not (isinstance(sub, Ellipsis) or isinstance(sub, Sliceobj)) + ] + if len(tulplesub) == len(subscripts): + subscripts = [Tuple(subscripts)] return Subscript(primary, assigning, subscripts, lineno=extractLineNo(nodelist)) diff --git a/Lib/test/test_compiler.py b/Lib/test/test_compiler.py index 6394b53..1bcaa22 100644 --- a/Lib/test/test_compiler.py +++ b/Lib/test/test_compiler.py @@ -261,6 +261,11 @@ class CompilerTest(unittest.TestCase): # ShiftJIS source without encdef self._testErrEnc(sjis, sjis, 19) + def testDictWithTupleKey(self): + code1 = compiler.compile("d[(1,)] = 1", "", "exec") + code2 = compiler.compile("d[1,] = 1", "", "exec") + self.assertEquals(code1, code2) + NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard)