]> granicus.if.org Git - python/commitdiff
Some syntax errors were being caught by tokenize during the tabnanny
authorKurt B. Kaiser <kbk@shore.net>
Thu, 14 Feb 2008 03:25:59 +0000 (03:25 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Thu, 14 Feb 2008 03:25:59 +0000 (03:25 +0000)
check, resulting in obscure error messages.  Do the syntax check
first.  Bug 15627161562719  Backport of r52083

Lib/idlelib/NEWS.txt
Lib/idlelib/ScriptBinding.py

index 42c291b4c3a1c9c4b19c10913ab1c50695feae98..178aee4710e2ab31b0a4a52a99f5a28b78451599 100644 (file)
@@ -3,6 +3,10 @@ What's New in IDLE 1.2.2c1?
 
 *Release date: XX-FEB-2008*
 
+- Some syntax errors were being caught by tokenize during the tabnanny        
+  check, resulting in obscure error messages.  Do the syntax check            
+  first.  Bug 1562716, 1562719  (backport r52083)
+
 - Patch 1693258: Fix for duplicate "preferences" menu-OS X. Backport of r56204.
 
 - OSX: Avoid crash for those versions of Tcl/Tk which don't have a console
index f325ad1d254ecc2e011f3754b0eca2cafda1b480..3746eb830475a7f94b9ceb1f9ab79bb933c5bf7a 100644 (file)
@@ -57,9 +57,10 @@ class ScriptBinding:
         filename = self.getfilename()
         if not filename:
             return
+        if not self.checksyntax(filename):
+            return
         if not self.tabnanny(filename):
             return
-        self.checksyntax(filename)
 
     def tabnanny(self, filename):
         f = open(filename, 'r')
@@ -76,9 +77,6 @@ class ScriptBinding:
             self.editwin.gotoline(nag.get_lineno())
             self.errorbox("Tab/space error", indent_message)
             return False
-        except IndentationError:
-            # From tokenize(), let compile() in checksyntax find it again.
-            pass
         return True
 
     def checksyntax(self, filename):
@@ -139,11 +137,11 @@ class ScriptBinding:
         filename = self.getfilename()
         if not filename:
             return
-        if not self.tabnanny(filename):
-            return
         code = self.checksyntax(filename)
         if not code:
             return
+        if not self.tabnanny(filename):
+            return
         shell = self.shell
         interp = shell.interp
         if PyShell.use_subprocess: