mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 22:44:27 +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]
|
annassign = expr_stmt.children[1]
|
||||||
if annassign.type == 'annassign':
|
if annassign.type == 'annassign':
|
||||||
# TODO this is not proper matching
|
# 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
|
return False
|
||||||
|
|
||||||
# Filter for name mangling of private variables like __foo
|
# Filter for name mangling of private variables like __foo
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ Foo.baz
|
|||||||
Foo().baz
|
Foo().baz
|
||||||
|
|
||||||
class VarClass:
|
class VarClass:
|
||||||
var_instance1: int = 1
|
var_instance1: int = ''
|
||||||
var_instance2: float
|
var_instance2: float
|
||||||
var_class1: typing.ClassVar[str] = 1
|
var_class1: typing.ClassVar[str] = 1
|
||||||
var_class2: typing.ClassVar[bytes]
|
var_class2: typing.ClassVar[bytes]
|
||||||
@@ -77,9 +77,9 @@ class VarClass:
|
|||||||
self.var_
|
self.var_
|
||||||
|
|
||||||
|
|
||||||
#? ['var_class1', 'var_class2']
|
#? ['var_class1', 'var_class2', 'var_instance1']
|
||||||
VarClass.var_
|
VarClass.var_
|
||||||
#?
|
#? int()
|
||||||
VarClass.var_instance1
|
VarClass.var_instance1
|
||||||
#?
|
#?
|
||||||
VarClass.var_instance2
|
VarClass.var_instance2
|
||||||
|
|||||||
Reference in New Issue
Block a user