RefactoringRope/CodeAssistClient.py

changeset 234
a9d03af34d28
parent 232
65d7d745543d
child 239
f453f583c06b
--- a/RefactoringRope/CodeAssistClient.py	Sun Nov 05 17:23:43 2017 +0100
+++ b/RefactoringRope/CodeAssistClient.py	Sun Nov 19 19:31:46 2017 +0100
@@ -24,6 +24,7 @@
 
 import rope.base.libutils
 import rope.contrib.codeassist
+from rope.base.exceptions import BadIdentifierError
 
 from JsonClient import JsonClient
 
@@ -277,7 +278,7 @@
         except Exception as err:
             errorDict = self.__handleRopeError(err)
         
-        typeName = self.__getObjectTypeAnName(
+        typeName = self.__getObjectTypeAndName(
                 self.__project, source, offset, resource, maxfixes=maxfixes)
         
         documentationDict = self.__processDocumentation(cts, documentation,
@@ -333,8 +334,8 @@
         return dict(name=objectFullname, argspec=argspec, module=module,
                     docstring=documentation, typ=typeName[0])
     
-    def __getObjectTypeAnName(self, project, sourceCode, offset,
-                              resource=None, maxfixes=1):
+    def __getObjectTypeAndName(self, project, sourceCode, offset,
+                               resource=None, maxfixes=1):
         """
         Private method to determine an object type and name for the given
         location.
@@ -353,8 +354,12 @@
         from rope.base import pyobjects, pyobjectsdef, pynames
         from rope.contrib import fixsyntax
         
-        fixer = fixsyntax.FixSyntax(project, sourceCode, resource, maxfixes)
-        pyname = fixer.pyname_at(offset)
+        try:
+            fixer = fixsyntax.FixSyntax(project, sourceCode, resource,
+                                        maxfixes)
+            pyname = fixer.pyname_at(offset)
+        except BadIdentifierError:
+            pyname = None
         if pyname is None:
             return "<unknown>", "<unknown>"
         

eric ide

mercurial