Skip to content

Commit 6ec2acf

Browse files
east825intellij-monorepo-bot
authored andcommitted
PY-83700 Support implicit type aliases at class level
(cherry picked from commit efaf7fb9ae413370f18429859c05f114e6cf4677) IJ-CR-176451 (cherry picked from commit 71bdaa9858d8092ad6201ce773c8b5d4117b86f5) GitOrigin-RevId: be66d9701e23760f035a3f5f3db822cfcc8630bb
1 parent 8ed93e7 commit 6ec2acf

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyTypingAliasStubType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.jetbrains.python.PyElementTypes;
2626
import com.jetbrains.python.PyTokenTypes;
2727
import com.jetbrains.python.ast.impl.PyUtilCore;
28+
import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil;
2829
import com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider;
2930
import com.jetbrains.python.psi.*;
3031
import com.jetbrains.python.psi.resolve.PyResolveUtil;
@@ -68,7 +69,7 @@ public final class PyTypingAliasStubType extends CustomTargetExpressionStubType<
6869
}
6970

7071
private static @Nullable PyExpression getAssignedValueIfTypeAliasLike(@NotNull PyTargetExpression target, boolean forStubCreation) {
71-
if (!PyUtil.isTopLevel(target) || !looksLikeTypeAliasTarget(target)) {
72+
if (!(PyUtil.isTopLevel(target) || ScopeUtil.getScopeOwner(target) instanceof PyClass) || !looksLikeTypeAliasTarget(target)) {
7273
return null;
7374
}
7475
final PyExpression value = target.findAssignedValue();
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from lib import Baz
2+
3+
4+
def bar(baz: Baz.SOME_TYPE) -> None: ...
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from typing import Generic, TypeVar
2+
3+
T1 = TypeVar("T1")
4+
5+
6+
class Foo(Generic[T1]): ...
7+
8+
9+
class Baz:
10+
SOME_TYPE = Foo[int]

python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2957,6 +2957,11 @@ public void testImplicitTypeAliasUsingCallableWithNewStyleUnion() {
29572957
""");
29582958
}
29592959

2960+
// PY-83700
2961+
public void testImplicitTypeAliasAtClassLevelMultiFile() {
2962+
doMultiFileTest();
2963+
}
2964+
29602965
@NotNull
29612966
@Override
29622967
protected Class<? extends PyInspection> getInspectionClass() {

0 commit comments

Comments
 (0)