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;
|
JetType receiverType = substitutedDescriptor.getReceiverParameter().exists() ? substitutedDescriptor.getReceiverParameter().getType() : null;
|
||||||
|
|
||||||
final Collection<ConstraintPosition> errorPositions = Sets.newHashSet();
|
final Collection<ConstraintPosition> errorPositions = Sets.newHashSet();
|
||||||
List<JetType> valueArgumentTypes = Lists.newArrayList();
|
List<JetType> parameterTypes = Lists.newArrayList();
|
||||||
for (ValueParameterDescriptor valueParameterDescriptor : substitutedDescriptor.getValueParameters()) {
|
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());
|
JetType actualType = inferenceErrorData.valueArgumentsTypes.get(valueParameterDescriptor.getIndex());
|
||||||
if (!JetTypeChecker.INSTANCE.isSubtypeOf(actualType, valueParameterDescriptor.getType())) {
|
if (!JetTypeChecker.INSTANCE.isSubtypeOf(actualType, valueParameterDescriptor.getType())) {
|
||||||
errorPositions.add(ConstraintPosition.getValueParameterPosition(valueParameterDescriptor.getIndex()));
|
errorPositions.add(ConstraintPosition.getValueParameterPosition(valueParameterDescriptor.getIndex()));
|
||||||
@@ -216,7 +217,7 @@ public class Renderers {
|
|||||||
return errorPositions.contains(constraintPosition);
|
return errorPositions.contains(constraintPosition);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
table.functionArgumentTypeList(receiverType, valueArgumentTypes, isErrorPosition);
|
table.functionArgumentTypeList(receiverType, parameterTypes, isErrorPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.text("can be applied to")
|
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(
|
Arrays.asList(
|
||||||
new SimpleTestClassModel(new File("idea/testData/checker"), false, "jet", "doTest"),
|
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/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")
|
new SimpleTestClassModel(new File("idea/testData/checker/infos"), true, "jet", "doTestWithInfos")
|
||||||
),
|
),
|
||||||
thisClass
|
thisClass
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import org.jetbrains.jet.test.TestMetadata;
|
|||||||
import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest;
|
import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest;
|
||||||
|
|
||||||
/** This class is generated by {@link org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest}. DO NOT MODIFY MANUALLY */
|
/** 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 {
|
public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest {
|
||||||
@TestMetadata("idea/testData/checker")
|
@TestMetadata("idea/testData/checker")
|
||||||
public static class Checker extends AbstractJetPsiCheckerTest {
|
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")
|
@TestMetadata("idea/testData/checker/infos")
|
||||||
public static class Infos extends AbstractJetPsiCheckerTest {
|
public static class Infos extends AbstractJetPsiCheckerTest {
|
||||||
public void testAllFilesPresentInInfos() throws Exception {
|
public void testAllFilesPresentInInfos() throws Exception {
|
||||||
@@ -412,6 +425,7 @@ public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest {
|
|||||||
TestSuite suite = new TestSuite("JetPsiCheckerTestGenerated");
|
TestSuite suite = new TestSuite("JetPsiCheckerTestGenerated");
|
||||||
suite.addTestSuite(Checker.class);
|
suite.addTestSuite(Checker.class);
|
||||||
suite.addTestSuite(Regression.class);
|
suite.addTestSuite(Regression.class);
|
||||||
|
suite.addTestSuite(Rendering.class);
|
||||||
suite.addTestSuite(Infos.class);
|
suite.addTestSuite(Infos.class);
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user