Fix bug:

[ 1327110 ] wrong TypeError traceback in generator expressions

by removing the code that can stomp on the users' TypeError raised by the
iterable argument to ''.join() -- PySequence_Fast (now?) gives a perfectly
reasonable message itself.  Also, a couple of tests.
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index 9f092b9..60f5fdb 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -657,6 +657,15 @@
         self.checkraises(TypeError, ' ', 'join')
         self.checkraises(TypeError, ' ', 'join', 7)
         self.checkraises(TypeError, ' ', 'join', Sequence([7, 'hello', 123L]))
+        try:
+            def f():
+                yield 4 + ""
+            self.fixtype(' ').join(f())
+        except TypeError, e:
+            if '+' not in str(e):
+                self.fail('join() ate exception message')
+        else:
+            self.fail('exception not raised')
 
     def test_formatting(self):
         self.checkequal('+hello+', '+%s+', '__mod__', 'hello')
diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py
index d80c3b6..fdd431d 100644
--- a/Lib/test/test_string.py
+++ b/Lib/test/test_string.py
@@ -51,6 +51,17 @@
 
         self.checkraises(TypeError, string_tests.BadSeq1(), 'join', ' ')
         self.checkequal('a b c', string_tests.BadSeq2(), 'join', ' ')
+        try:
+            def f():
+                yield 4 + ""
+            self.fixtype(' ').join(f())
+        except TypeError, e:
+            if '+' not in str(e):
+                self.fail('join() ate exception message')
+        else:
+            self.fail('exception not raised')
+
+
 
 
 class ModuleTest(unittest.TestCase):
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 78560de..037fa6a 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -1620,10 +1620,6 @@
 
 	seq = PySequence_Fast(orig, "");
 	if (seq == NULL) {
-		if (PyErr_ExceptionMatches(PyExc_TypeError))
-			PyErr_Format(PyExc_TypeError,
-				     "sequence expected, %.80s found",
-				     orig->ob_type->tp_name);
 		return NULL;
 	}
 
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 10ac80c..db2a690 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -4148,10 +4148,6 @@
 
     fseq = PySequence_Fast(seq, "");
     if (fseq == NULL) {
-	if (PyErr_ExceptionMatches(PyExc_TypeError))
-	    PyErr_Format(PyExc_TypeError,
-			 "sequence expected, %.80s found",
-			 seq->ob_type->tp_name);
     	return NULL;
     }