fixed exception in renderer for type inference error
This commit is contained in:
@@ -196,9 +196,10 @@ public class Renderers {
|
||||
JetType receiverType = substitutedDescriptor.getReceiverParameter().exists() ? substitutedDescriptor.getReceiverParameter().getType() : null;
|
||||
|
||||
final Collection<ConstraintPosition> errorPositions = Sets.newHashSet();
|
||||
List<JetType> valueArgumentTypes = Lists.newArrayList();
|
||||
List<JetType> parameterTypes = Lists.newArrayList();
|
||||
for (ValueParameterDescriptor valueParameterDescriptor : substitutedDescriptor.getValueParameters()) {
|
||||
valueArgumentTypes.add(valueParameterDescriptor.getType());
|
||||
parameterTypes.add(valueParameterDescriptor.getType());
|
||||
if (valueParameterDescriptor.getIndex() >= inferenceErrorData.valueArgumentsTypes.size()) continue;
|
||||
JetType actualType = inferenceErrorData.valueArgumentsTypes.get(valueParameterDescriptor.getIndex());
|
||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(actualType, valueParameterDescriptor.getType())) {
|
||||
errorPositions.add(ConstraintPosition.getValueParameterPosition(valueParameterDescriptor.getIndex()));
|
||||
@@ -216,7 +217,7 @@ public class Renderers {
|
||||
return errorPositions.contains(constraintPosition);
|
||||
}
|
||||
};
|
||||
table.functionArgumentTypeList(receiverType, valueArgumentTypes, isErrorPosition);
|
||||
table.functionArgumentTypeList(receiverType, parameterTypes, isErrorPosition);
|
||||
}
|
||||
|
||||
table.text("can be applied to")
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fun <K, V> testMutableMapEntry(<warning>map</warning>: MutableMap<K, V>, <warning>k1</warning>: K, <warning>v</warning>: V) {
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
<error>testMutableMapEntry</error><error>(hashMap(1 to 'a'), 'b')</error>
|
||||
}
|
||||
|
||||
//extract from library
|
||||
fun <K, V> hashMap(<warning>p</warning>: Pair<K, V>): MutableMap<K, V> {<error>}</error>
|
||||
fun <K, V> K.to(<warning>v</warning>: V): Pair<K, V> {<error>}</error>
|
||||
data class Pair<K, V> {}
|
||||
@@ -60,6 +60,7 @@ public abstract class AbstractJetPsiCheckerTest extends LightDaemonAnalyzerTestC
|
||||
Arrays.asList(
|
||||
new SimpleTestClassModel(new File("idea/testData/checker"), false, "jet", "doTest"),
|
||||
new SimpleTestClassModel(new File("idea/testData/checker/regression"), true, "jet", "doTest"),
|
||||
new SimpleTestClassModel(new File("idea/testData/checker/rendering"), true, "kt", "doTest"),
|
||||
new SimpleTestClassModel(new File("idea/testData/checker/infos"), true, "jet", "doTestWithInfos")
|
||||
),
|
||||
thisClass
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest}. DO NOT MODIFY MANUALLY */
|
||||
@InnerTestClasses({JetPsiCheckerTestGenerated.Checker.class, JetPsiCheckerTestGenerated.Regression.class, JetPsiCheckerTestGenerated.Infos.class})
|
||||
@InnerTestClasses({JetPsiCheckerTestGenerated.Checker.class, JetPsiCheckerTestGenerated.Regression.class, JetPsiCheckerTestGenerated.Rendering.class, JetPsiCheckerTestGenerated.Infos.class})
|
||||
public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest {
|
||||
@TestMetadata("idea/testData/checker")
|
||||
public static class Checker extends AbstractJetPsiCheckerTest {
|
||||
@@ -385,6 +385,19 @@ public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest {
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/checker/rendering")
|
||||
public static class Rendering extends AbstractJetPsiCheckerTest {
|
||||
public void testAllFilesPresentInRendering() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest", new File("idea/testData/checker/rendering"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("TypeInferenceError.kt")
|
||||
public void testTypeInferenceError() throws Exception {
|
||||
doTest("idea/testData/checker/rendering/TypeInferenceError.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/checker/infos")
|
||||
public static class Infos extends AbstractJetPsiCheckerTest {
|
||||
public void testAllFilesPresentInInfos() throws Exception {
|
||||
@@ -412,6 +425,7 @@ public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest {
|
||||
TestSuite suite = new TestSuite("JetPsiCheckerTestGenerated");
|
||||
suite.addTestSuite(Checker.class);
|
||||
suite.addTestSuite(Regression.class);
|
||||
suite.addTestSuite(Rendering.class);
|
||||
suite.addTestSuite(Infos.class);
|
||||
return suite;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user