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
diff --git a/Lib/idlelib/ScriptBinding.py b/Lib/idlelib/ScriptBinding.py
index f325ad1..3746eb8 100644
--- a/Lib/idlelib/ScriptBinding.py
+++ b/Lib/idlelib/ScriptBinding.py
@@ -57,9 +57,10 @@
         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 @@
             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 @@
         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: