mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 05:54:25 +08:00
Changed semantics of ClassVar attributes in classes, fixes #1502
This commit is contained in:
@@ -115,7 +115,11 @@ class ClassFilter(ParserTreeFilter):
|
||||
annassign = expr_stmt.children[1]
|
||||
if annassign.type == 'annassign':
|
||||
# TODO this is not proper matching
|
||||
if 'ClassVar' not in annassign.children[1].get_code():
|
||||
|
||||
# If there is an =, the variable is obviously also
|
||||
# defined on the class.
|
||||
if 'ClassVar' not in annassign.children[1].get_code() \
|
||||
and '=' not in annassign.children:
|
||||
return False
|
||||
|
||||
# Filter for name mangling of private variables like __foo
|
||||
|
||||
@@ -57,7 +57,7 @@ Foo.baz
|
||||
Foo().baz
|
||||
|
||||
class VarClass:
|
||||
var_instance1: int = 1
|
||||
var_instance1: int = ''
|
||||
var_instance2: float
|
||||
var_class1: typing.ClassVar[str] = 1
|
||||
var_class2: typing.ClassVar[bytes]
|
||||
@@ -77,9 +77,9 @@ class VarClass:
|
||||
self.var_
|
||||
|
||||
|
||||
#? ['var_class1', 'var_class2']
|
||||
#? ['var_class1', 'var_class2', 'var_instance1']
|
||||
VarClass.var_
|
||||
#?
|
||||
#? int()
|
||||
VarClass.var_instance1
|
||||
#?
|
||||
VarClass.var_instance2
|
||||
|
||||
Reference in New Issue
Block a user