Handle testlist_safe and or_test like testlist.
diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py
index 65a69d4..3f631fe 100644
--- a/Lib/compiler/transformer.py
+++ b/Lib/compiler/transformer.py
@@ -945,7 +945,7 @@
         # loop to avoid trivial recursion
         while 1:
             t = node[0]
-            if t == symbol.exprlist or t == symbol.testlist or t == symbol.testlist_gexp:
+            if t in (symbol.exprlist, symbol.testlist, symbol.testlist_safe, symbol.or_test, symbol.testlist_gexp):
                 if len(node) > 2:
                     return self.com_assign_tuple(node, assigning)
                 node = node[1]
@@ -982,7 +982,7 @@
                 else:
                     raise SyntaxError, "can't assign to literal"
             else:
-                raise SyntaxError, "bad assignment"
+                raise SyntaxError, "bad assignment (%s)" % t
 
     def com_assign_tuple(self, node, assigning):
         assigns = []