@property now returns Name.type == 'property', fixes muffinmad/anakin-language-server#15

This commit is contained in:
Dave Halter
2020-07-20 01:20:24 +02:00
parent 7281302281
commit 784e965d3a
7 changed files with 57 additions and 3 deletions

View File

@@ -37,7 +37,8 @@ py__doc__() Returns the docstring for a value.
"""
from jedi import debug
from jedi.parser_utils import get_cached_parent_scope, expr_is_dotted
from jedi.parser_utils import get_cached_parent_scope, expr_is_dotted, \
function_is_property
from jedi.inference.cache import inference_state_method_cache, CachedMetaClass, \
inference_state_method_generator_cache
from jedi.inference import compiled
@@ -72,6 +73,20 @@ class ClassName(TreeNameDefinition):
else:
yield result_value
@property
def api_type(self):
if self.tree_name is not None:
definition = self.tree_name.get_definition()
if definition.type == 'funcdef':
if function_is_property(definition):
# This essentially checks if there is an @property before
# the function. @property could be something different, but
# any programmer that redefines property as something that
# is not really a property anymore, should be shot. (i.e.
# this is a heuristic).
return 'property'
return super().api_type
class ClassFilter(ParserTreeFilter):
def __init__(self, class_value, node_context=None, until_position=None,