mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-48012 Resolve and complete attributes in PEP 634 class patterns
Both are implemented other the type of the corresponding class. References resolve to any readable attribute of a class, however some obviously wrong variants such as special "dunder" attributes and methods are intentionally excluded from completion suggestions. GitOrigin-RevId: 5edac14f47cba39840b15b0dd7f21e2e46077261
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d15bf8a552
commit
1421975c96
@@ -0,0 +1,12 @@
|
||||
import dataclasses
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class C:
|
||||
count: int
|
||||
name: str
|
||||
|
||||
|
||||
match C(count=42, name='foo'):
|
||||
case C(<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,11 @@
|
||||
import typing
|
||||
|
||||
|
||||
class C(typing.NamedTuple):
|
||||
count: int
|
||||
name: str
|
||||
|
||||
|
||||
match C(count=42, name='foo'):
|
||||
case C(<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,6 @@
|
||||
class C:
|
||||
class_attr = 42
|
||||
|
||||
match C():
|
||||
case C(class_attr=<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,6 @@
|
||||
class C:
|
||||
class_attr = 42
|
||||
|
||||
match C():
|
||||
case C(cla<caret>):
|
||||
pass
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.__attr = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(__<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.__attr = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(__<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
attr = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.instance_attr = 42
|
||||
|
||||
match C():
|
||||
case C(instance_attr=<caret>=True):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.instance_attr = 42
|
||||
|
||||
match C():
|
||||
case C(instance<caret>=True):
|
||||
pass
|
||||
@@ -0,0 +1,12 @@
|
||||
class Base:
|
||||
def __init__(self):
|
||||
self.inherited_attr = 42
|
||||
|
||||
|
||||
class C(Base):
|
||||
pass
|
||||
|
||||
|
||||
match C():
|
||||
case C(inherited_attr=<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,12 @@
|
||||
class Base:
|
||||
def __init__(self):
|
||||
self.inherited_attr = 42
|
||||
|
||||
|
||||
class C(Base):
|
||||
pass
|
||||
|
||||
|
||||
match C():
|
||||
case C(inh<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
class C:
|
||||
class InnerClass:
|
||||
pass
|
||||
|
||||
|
||||
match C():
|
||||
case C(Inner<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.instance_attr = 42
|
||||
|
||||
match C():
|
||||
case C(instance_attr=<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.instance_attr = 42
|
||||
|
||||
match C():
|
||||
case C(ins<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
class C:
|
||||
def method(self):
|
||||
pass
|
||||
|
||||
|
||||
match C():
|
||||
case C(met<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,9 @@
|
||||
class C:
|
||||
@property
|
||||
def prop(self):
|
||||
pass
|
||||
|
||||
|
||||
match C():
|
||||
case C(prop=<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,9 @@
|
||||
class C:
|
||||
@property
|
||||
def prop(self):
|
||||
pass
|
||||
|
||||
|
||||
match C():
|
||||
case C(pro<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.attr = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(attr = <caret>):
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.attr = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(attr<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,6 @@
|
||||
class C:
|
||||
pass
|
||||
|
||||
match C():
|
||||
case C(__<caret>):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
attr1 = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(attr1=42):
|
||||
pass
|
||||
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
attr1 = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(att<caret>r2=42):
|
||||
pass
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
attr1 = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(attr1 = <caret>42):
|
||||
pass
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
class C:
|
||||
attr1 = 42
|
||||
|
||||
|
||||
match C():
|
||||
case C(att<caret>r2 = 42):
|
||||
pass
|
||||
Reference in New Issue
Block a user