mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-04 17:20:55 +07:00
Change receiver for initialization calls and don't resolve callee to constructors
Callee is now a receiver for these cases, previously it was `null`. Callee is not replaced with constructors to have an ability to map it onto self/cls parameters and process `(cls: Type[T], ...) -> T` annotations. Stay with the previous behaviour for navigation and looking for target element. GitOrigin-RevId: c0f9894cf50fd5d7fd325f095976d096fb948e89
This commit is contained in:
committed by
intellij-monorepo-bot
parent
be15656e6d
commit
fbbb78bc4e
@@ -69,20 +69,77 @@ public abstract class PyCommonResolveTest extends PyCommonResolveTestCase {
|
||||
assertInstanceOf(targetElement, PyFunction.class);
|
||||
}
|
||||
|
||||
public void testToConstructor() {
|
||||
PsiElement target = resolve();
|
||||
assertInstanceOf(target, PyFunction.class);
|
||||
assertEquals(PyNames.INIT, ((PyFunction)target).getName());
|
||||
public void testInitialization() {
|
||||
assertResolvesTo(
|
||||
"class Foo:\n" +
|
||||
" pass\n" +
|
||||
"Foo()\n" +
|
||||
" <ref>",
|
||||
PyClass.class,
|
||||
"Foo"
|
||||
);
|
||||
}
|
||||
|
||||
public void testInitializationWithDunderInit() {
|
||||
assertResolvesTo(
|
||||
"class Foo:\n" +
|
||||
" def __init__(self):\n" +
|
||||
" pass\n" +
|
||||
"Foo()\n" +
|
||||
" <ref>",
|
||||
PyClass.class,
|
||||
"Foo"
|
||||
);
|
||||
}
|
||||
|
||||
// PY-17877
|
||||
public void testInitializingToMetaclassDunderCall() {
|
||||
assertResolvesTo(LanguageLevel.getLatest(), PyFunction.class, PyNames.CALL);
|
||||
public void testInitializationWithMetaclassDunderCall() {
|
||||
assertResolvesTo(
|
||||
"class MyMeta(type):\n" +
|
||||
" def __call__(cls, p1, p2):\n" +
|
||||
" pass\n" +
|
||||
"\n" +
|
||||
"class MyClass(metaclass=MyMeta):\n" +
|
||||
" pass\n" +
|
||||
"\n" +
|
||||
"MyClass()\n" +
|
||||
" <ref>",
|
||||
PyClass.class,
|
||||
"MyClass"
|
||||
);
|
||||
}
|
||||
|
||||
public void testInitializationWithDunderInitAndMetaclassDunderCall() {
|
||||
assertResolvesTo(
|
||||
"class MyMeta(type):\n" +
|
||||
" def __call__(cls, p1, p2):\n" +
|
||||
" pass\n" +
|
||||
"\n" +
|
||||
"class MyClass(metaclass=MyMeta):\n" +
|
||||
" def __init__(self): pass\n" +
|
||||
"\n" +
|
||||
"MyClass()\n" +
|
||||
" <ref>",
|
||||
PyClass.class,
|
||||
"MyClass"
|
||||
);
|
||||
}
|
||||
|
||||
// PY-17877, PY-41380
|
||||
public void testInitializingNotToMetaclassSelfArgsKwargsDunderCall() {
|
||||
assertResolvesTo(LanguageLevel.getLatest(), PyClass.class, "MyClass");
|
||||
public void testInitializationWithMetaclassSelfArgsKwargsDunderCall() {
|
||||
assertResolvesTo(
|
||||
"class MyMeta(type):\n" +
|
||||
" def __call__(cls, *args, **kwargs):\n" +
|
||||
" pass\n" +
|
||||
"\n" +
|
||||
"class MyClass(metaclass=MyMeta):\n" +
|
||||
" pass\n" +
|
||||
"\n" +
|
||||
"MyClass()\n" +
|
||||
" <ref>",
|
||||
PyClass.class,
|
||||
"MyClass"
|
||||
);
|
||||
}
|
||||
|
||||
public void testInitOrNewReturnsInitWhenNewIsFirst() {
|
||||
|
||||
Reference in New Issue
Block a user