The user context parser should ignore keywords if they are not standing alone.

This commit is contained in:
Dave Halter
2014-10-30 01:56:08 +01:00
parent 1bb0eccc86
commit afca0ef047
2 changed files with 6 additions and 3 deletions

View File

@@ -280,9 +280,7 @@ class Script(object):
stmt = r.module.statements[-1]
except IndexError:
raise NotFoundError()
if isinstance(stmt, pr.KeywordStatement):
stmt = stmt.stmt
if not isinstance(stmt, pr.ExprStmt):
if not isinstance(stmt, (pr.ExprStmt, pr.KeywordStatement)):
raise NotFoundError()
user_stmt = self._parser.user_stmt()

View File

@@ -1,5 +1,6 @@
import re
import os
import keyword
from jedi import cache
from jedi import common
@@ -104,6 +105,10 @@ class UserContext(object):
elif tok_str in close_brackets:
level += 1
elif tok_type in [tokenize.NAME, tokenize.STRING]:
if keyword.iskeyword(tok_str[::-1]) and string:
# If there's already something in the string, a keyword
# never adds any meaning to the current statement.
break
force_point = True
elif tok_type == tokenize.NUMBER:
pass