DebugClients/Python3/DebugBase.py

changeset 2927
f36b757378f1
parent 2648
43a3bec63c09
child 2953
703452a2876f
diff -r ae7c9d9f3b4a -r f36b757378f1 DebugClients/Python3/DebugBase.py
--- a/DebugClients/Python3/DebugBase.py	Thu Sep 19 19:23:08 2013 +0200
+++ b/DebugClients/Python3/DebugBase.py	Sun Sep 22 16:03:25 2013 +0200
@@ -647,66 +647,70 @@
                 self._dbgClient.progTerminated(excval.code)
             return
         
-        elif exctype in [SyntaxError, IndentationError]:
+        if exctype in [SyntaxError, IndentationError]:
             try:
                 message, (filename, linenr, charnr, text) = excval[0], excval[1]
             except ValueError:
                 exclist = []
+                realSyntaxError = True
             else:
                 exclist = [message, [filename, linenr, charnr]]
-            
-            self._dbgClient.write("{0}{1}\n".format(ResponseSyntax, str(exclist)))
-        
-        else:
-            exctype = self.__extractExceptionName(exctype)
-            
-            if excval is None:
-                excval = ''
+                realSyntaxError = os.path.exists(filename)
             
-            if unhandled:
-                exctypetxt = "unhandled {0!s}".format(str(exctype))
-            else:
-                exctypetxt = str(exctype)
-            try:
-                exclist = [exctypetxt, str(excval)]
-            except TypeError:
-                exclist = [exctypetxt, str(excval)]
+            if realSyntaxError:
+                self._dbgClient.write("{0}{1}\n".format(ResponseSyntax, str(exclist)))
+                self._dbgClient.eventLoop()
+                return
+        
+        exctype = self.__extractExceptionName(exctype)
+        
+        if excval is None:
+            excval = ''
+        
+        if unhandled:
+            exctypetxt = "unhandled {0!s}".format(str(exctype))
+        else:
+            exctypetxt = str(exctype)
+        try:
+            exclist = [exctypetxt, str(excval)]
+        except TypeError:
+            exclist = [exctypetxt, str(excval)]
+        
+        if exctb:
+            frlist = self.__extract_stack(exctb)
+            frlist.reverse()
             
-            if exctb:
-                frlist = self.__extract_stack(exctb)
-                frlist.reverse()
-                
-                self.currentFrame = frlist[0]
-                self.currentFrameLocals = frlist[0].f_locals
-                # remember the locals because it is reinitialized when accessed
+            self.currentFrame = frlist[0]
+            self.currentFrameLocals = frlist[0].f_locals
+            # remember the locals because it is reinitialized when accessed
+            
+            for fr in frlist:
+                filename = self._dbgClient.absPath(self.fix_frame_filename(fr))
                 
-                for fr in frlist:
-                    filename = self._dbgClient.absPath(self.fix_frame_filename(fr))
-                    
-                    if os.path.basename(filename).startswith("DebugClient") or \
-                       os.path.basename(filename) == "bdb.py":
-                        break
-                    
-                    linenr = fr.f_lineno
-                    ffunc = fr.f_code.co_name
-                    
-                    if ffunc == '?':
-                        ffunc = ''
-                    
-                    if ffunc and not ffunc.startswith("<"):
-                        argInfo = inspect.getargvalues(fr)
-                        fargs = inspect.formatargvalues(argInfo.args, argInfo.varargs,
-                                                        argInfo.keywords, argInfo.locals)
-                    else:
-                        fargs = ""
-                    
-                    exclist.append([filename, linenr, ffunc, fargs])
-            
-            self._dbgClient.write("{0}{1}\n".format(ResponseException, str(exclist)))
-            
-            if exctb is None:
-                return
-            
+                if os.path.basename(filename).startswith("DebugClient") or \
+                   os.path.basename(filename) == "bdb.py":
+                    break
+                
+                linenr = fr.f_lineno
+                ffunc = fr.f_code.co_name
+                
+                if ffunc == '?':
+                    ffunc = ''
+                
+                if ffunc and not ffunc.startswith("<"):
+                    argInfo = inspect.getargvalues(fr)
+                    fargs = inspect.formatargvalues(argInfo.args, argInfo.varargs,
+                                                    argInfo.keywords, argInfo.locals)
+                else:
+                    fargs = ""
+                
+                exclist.append([filename, linenr, ffunc, fargs])
+        
+        self._dbgClient.write("{0}{1}\n".format(ResponseException, str(exclist)))
+        
+        if exctb is None:
+            return
+        
         self._dbgClient.eventLoop()
     
     def __extractExceptionName(self, exctype):

eric ide

mercurial