Eager resolve does not record class object bounds (which are unsupported anyways)
This commit is contained in:
@@ -670,7 +670,8 @@ public class DescriptorResolver {
|
||||
trace.record(BindingContext.REFERENCE_TARGET, subjectTypeParameterName, typeParameterDescriptor);
|
||||
if (bound != null) {
|
||||
if (constraint.isClassObjectConstraint()) {
|
||||
typeParameterDescriptor.addClassObjectBound(bound);
|
||||
// Class object bounds are not supported
|
||||
//typeParameterDescriptor.addClassObjectBound(bound);
|
||||
}
|
||||
else {
|
||||
typeParameterDescriptor.addUpperBound(bound);
|
||||
|
||||
@@ -24,8 +24,8 @@ class Test1<T : A>()
|
||||
{
|
||||
|
||||
fun test(t : T) {
|
||||
T.foo()
|
||||
T.bar()
|
||||
<!TYPE_PARAMETER_ON_LHS_OF_DOT!>T<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!TYPE_PARAMETER_ON_LHS_OF_DOT!>T<!>.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
t.foo()
|
||||
t.bar()
|
||||
}
|
||||
@@ -54,8 +54,8 @@ fun <T : A> test2(t : T)
|
||||
<!UNSUPPORTED!>class object T : B<!>,
|
||||
<!UNSUPPORTED!>class object T : A<!>
|
||||
{
|
||||
T.foo()
|
||||
T.bar()
|
||||
<!TYPE_PARAMETER_ON_LHS_OF_DOT!>T<!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!TYPE_PARAMETER_ON_LHS_OF_DOT!>T<!>.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
t.foo()
|
||||
t.bar()
|
||||
}
|
||||
@@ -64,7 +64,7 @@ val t1 = test2<<!UPPER_BOUND_VIOLATED!>A<!>>(A())
|
||||
val t2 = test2<<!UPPER_BOUND_VIOLATED!>B<!>>(C())
|
||||
val t3 = test2<C>(C())
|
||||
|
||||
class Test<<!CONFLICTING_CLASS_OBJECT_UPPER_BOUNDS!>T<!>>
|
||||
class Test<T>
|
||||
where
|
||||
<!UNSUPPORTED!>class object T : <!FINAL_CLASS_OBJECT_UPPER_BOUND!>Foo<!><!>,
|
||||
<!UNSUPPORTED!>class object T : A<!> {}
|
||||
|
||||
@@ -14,12 +14,12 @@ import java.util.*
|
||||
val children = ArrayList<Element>()
|
||||
val attributes = HashMap<String, String>()
|
||||
|
||||
protected fun initTag<T : Element>(init : T.() -> Unit) : T
|
||||
protected fun initTag<T : Element>(<warning>init</warning> : T.() -> Unit) : T
|
||||
where <error>class object T : Factory<T></error>{
|
||||
val tag = T.create()
|
||||
tag.init()
|
||||
children.add(tag)
|
||||
return tag
|
||||
val tag = <error>T</error>.<error>create</error>()
|
||||
<error>tag</error>.<error>init</error>()
|
||||
children.add(<error>tag</error>)
|
||||
return <error>tag</error>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ class Test1<T : A>()
|
||||
{
|
||||
|
||||
fun test(t : T) {
|
||||
T.foo()
|
||||
T.bar()
|
||||
<error>T</error>.<error>foo</error>()
|
||||
<error>T</error>.<error>bar</error>()
|
||||
t.foo()
|
||||
t.bar()
|
||||
}
|
||||
@@ -54,8 +54,8 @@ fun <T : A> test2(t : T)
|
||||
<error>class object T : B</error>,
|
||||
<error>class object T : A</error>
|
||||
{
|
||||
T.foo()
|
||||
T.bar()
|
||||
<error>T</error>.<error>foo</error>()
|
||||
<error>T</error>.<error>bar</error>()
|
||||
t.foo()
|
||||
t.bar()
|
||||
}
|
||||
@@ -64,7 +64,7 @@ val t1 = test2<<error>A</error>>(A())
|
||||
val t2 = test2<<error>B</error>>(C())
|
||||
val t3 = test2<C>(C())
|
||||
|
||||
class Test<<error>T</error>>
|
||||
class Test<T>
|
||||
where
|
||||
<error>class object T : <error>Foo</error></error>,
|
||||
<error>class object T : A</error> {}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
fun <T> foo() where class object T : Any {
|
||||
T.<caret>toString()
|
||||
}
|
||||
@@ -163,19 +163,6 @@ public class JetJavaFacadeTest extends JetLightCodeInsightFixtureTestCase {
|
||||
doTestWrapParameter(false, false);
|
||||
}
|
||||
|
||||
public void testEa38770() {
|
||||
myFixture.configureByFile(fileName());
|
||||
|
||||
PsiReference reference = myFixture.getFile().findReferenceAt(myFixture.getCaretOffset());
|
||||
assertNotNull(reference);
|
||||
PsiElement element = reference.resolve();
|
||||
assertNotNull(element);
|
||||
assertInstanceOf(element, JetNamedFunction.class);
|
||||
JetNamedFunction toString = (JetNamedFunction) element;
|
||||
|
||||
assertNull("There should be no wrapper for built-in function", LightClassUtil.getLightClassMethod(toString));
|
||||
}
|
||||
|
||||
public void testInnerClass() throws Exception {
|
||||
myFixture.configureByFile(fileName());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user