mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Ignore init=False attributes while inspecting fields order (PY-30880)
This commit is contained in:
@@ -17,6 +17,7 @@ import com.jetbrains.python.psi.impl.PyCallExpressionHelper
|
||||
import com.jetbrains.python.psi.impl.PyEvaluator
|
||||
import com.jetbrains.python.psi.impl.stubs.PyDataclassFieldStubImpl
|
||||
import com.jetbrains.python.psi.resolve.PyResolveContext
|
||||
import com.jetbrains.python.psi.stubs.PyDataclassFieldStub
|
||||
import com.jetbrains.python.psi.types.*
|
||||
|
||||
class PyDataclassInspection : PyInspection() {
|
||||
@@ -102,7 +103,12 @@ class PyDataclassInspection : PyInspection() {
|
||||
PyNamedTupleInspection.inspectFieldsOrder(
|
||||
node,
|
||||
this::registerProblem,
|
||||
{ !PyTypingTypeProvider.isClassVar(it, myTypeEvalContext) },
|
||||
{
|
||||
val stub = it.stub
|
||||
val fieldStub = if (stub == null) PyDataclassFieldStubImpl.create(it) else stub.getCustomStub(PyDataclassFieldStub::class.java)
|
||||
|
||||
fieldStub?.initValue() != false && !PyTypingTypeProvider.isClassVar(it, myTypeEvalContext)
|
||||
},
|
||||
{
|
||||
val fieldStub = PyDataclassFieldStubImpl.create(it)
|
||||
|
||||
|
||||
@@ -59,4 +59,10 @@ class D1:
|
||||
@attr.dataclass
|
||||
class D2:
|
||||
x: int = attr.ib(default=attr.NOTHING)
|
||||
y: int
|
||||
y: int
|
||||
|
||||
|
||||
@attr.dataclass
|
||||
class E1:
|
||||
x: int = 0
|
||||
y: int = attr.ib(init=False)
|
||||
@@ -76,4 +76,10 @@ class C3:
|
||||
x: int = dataclasses.field(default_factory=dataclasses.MISSING)
|
||||
y: int
|
||||
|
||||
C3(1, 2)
|
||||
C3(1, 2)
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class D1:
|
||||
x: int = 0
|
||||
y: int = dataclasses.field(init=False)
|
||||
Reference in New Issue
Block a user