--- 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>"