KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY
#KT-5308 Fixed
This commit is contained in:
+5
-1
@@ -61,7 +61,11 @@ public class QualifierReceiver(
|
||||
fun getNestedClassesAndPackageMembersScope(): JetScope {
|
||||
val scopes = ArrayList<JetScope>(3)
|
||||
|
||||
scopes.addIfNotNull(classifier?.getClassObjectType()?.getMemberScope())
|
||||
val classObjectDescriptor = (classifier as? ClassDescriptor)?.getClassObjectDescriptor()
|
||||
if (classObjectDescriptor != null) {
|
||||
// non-static members are resolved through class object receiver
|
||||
scopes.add(DescriptorUtils.getStaticNestedClassesScope(classObjectDescriptor))
|
||||
}
|
||||
|
||||
scopes.addIfNotNull(packageView?.getMemberScope())
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class Foo {
|
||||
class object {
|
||||
val baz = Foo()
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
Foo.<caret>baz
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
class Foo {
|
||||
class object {
|
||||
val baz = Foo()
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
Foo.<caret>baz
|
||||
}
|
||||
|
||||
|
||||
Resolved call:
|
||||
|
||||
Resulting descriptor: val baz: Foo
|
||||
|
||||
Explicit receiver kind = THIS_OBJECT
|
||||
This object = Foo {<class-object-for-Foo>}
|
||||
Receiver argument = NO_RECEIVER
|
||||
@@ -0,0 +1,4 @@
|
||||
//KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY
|
||||
fun test() {
|
||||
IntRange.<caret>EMPTY
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
//KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY
|
||||
fun test() {
|
||||
IntRange.<caret>EMPTY
|
||||
}
|
||||
|
||||
|
||||
Resolved call:
|
||||
|
||||
Resulting descriptor: val EMPTY: IntRange
|
||||
|
||||
Explicit receiver kind = THIS_OBJECT
|
||||
This object = IntRange {<class-object-for-IntRange>}
|
||||
Receiver argument = NO_RECEIVER
|
||||
@@ -0,0 +1,9 @@
|
||||
object Foo {
|
||||
val baz = 42
|
||||
}
|
||||
|
||||
fun test() {
|
||||
Foo.<caret>baz
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
object Foo {
|
||||
val baz = 42
|
||||
}
|
||||
|
||||
fun test() {
|
||||
Foo.<caret>baz
|
||||
}
|
||||
|
||||
|
||||
Resolved call:
|
||||
|
||||
Resulting descriptor: val baz: Int
|
||||
|
||||
Explicit receiver kind = THIS_OBJECT
|
||||
This object = Foo {Foo}
|
||||
Receiver argument = NO_RECEIVER
|
||||
@@ -28,7 +28,7 @@ import java.util.regex.Pattern;
|
||||
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("compiler/testData/resolvedCalls")
|
||||
@InnerTestClasses({ResolvedCallsTestGenerated.Arguments.class, ResolvedCallsTestGenerated.DifferentCallElements.class, ResolvedCallsTestGenerated.FunctionTypes.class, ResolvedCallsTestGenerated.Invoke.class, ResolvedCallsTestGenerated.RealExamples.class, ResolvedCallsTestGenerated.Resolve.class, ResolvedCallsTestGenerated.ThisOrSuper.class})
|
||||
@InnerTestClasses({ResolvedCallsTestGenerated.Arguments.class, ResolvedCallsTestGenerated.DifferentCallElements.class, ResolvedCallsTestGenerated.FunctionTypes.class, ResolvedCallsTestGenerated.Invoke.class, ResolvedCallsTestGenerated.ObjectsAndClassObjects.class, ResolvedCallsTestGenerated.RealExamples.class, ResolvedCallsTestGenerated.Resolve.class, ResolvedCallsTestGenerated.ThisOrSuper.class})
|
||||
public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
|
||||
public void testAllFilesPresentInResolvedCalls() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
@@ -356,6 +356,29 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/resolvedCalls/objectsAndClassObjects")
|
||||
public static class ObjectsAndClassObjects extends AbstractResolvedCallsTest {
|
||||
public void testAllFilesPresentInObjectsAndClassObjects() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls/objectsAndClassObjects"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("classObject.kt")
|
||||
public void testClassObject() throws Exception {
|
||||
doTest("compiler/testData/resolvedCalls/objectsAndClassObjects/classObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt5308IntRangeConstant.kt")
|
||||
public void testKt5308IntRangeConstant() throws Exception {
|
||||
doTest("compiler/testData/resolvedCalls/objectsAndClassObjects/kt5308IntRangeConstant.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("object.kt")
|
||||
public void testObject() throws Exception {
|
||||
doTest("compiler/testData/resolvedCalls/objectsAndClassObjects/object.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/resolvedCalls/realExamples")
|
||||
public static class RealExamples extends AbstractResolvedCallsTest {
|
||||
public void testAllFilesPresentInRealExamples() throws Exception {
|
||||
@@ -427,6 +450,7 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
|
||||
suite.addTestSuite(DifferentCallElements.class);
|
||||
suite.addTestSuite(FunctionTypes.class);
|
||||
suite.addTestSuite(Invoke.class);
|
||||
suite.addTestSuite(ObjectsAndClassObjects.class);
|
||||
suite.addTestSuite(RealExamples.class);
|
||||
suite.addTestSuite(Resolve.class);
|
||||
suite.addTestSuite(ThisOrSuper.class);
|
||||
|
||||
Reference in New Issue
Block a user