fixed bug

NULL_FOR_NONNULL_TYPE can represent type mismatch error as well
(later the whole method 'makeTraceInterceptingTypeMismatch' should be removed)
This commit is contained in:
Svetlana Isakova
2013-09-16 16:47:37 +04:00
parent dd847030fa
commit 845b6f7d7e
3 changed files with 16 additions and 1 deletions
@@ -462,7 +462,7 @@ public class ExpressionTypingUtils {
@Override
public void report(@NotNull Diagnostic diagnostic) {
AbstractDiagnosticFactory factory = diagnostic.getFactory();
if ((factory == TYPE_MISMATCH || factory == CONSTANT_EXPECTED_TYPE_MISMATCH)
if ((factory == TYPE_MISMATCH || factory == CONSTANT_EXPECTED_TYPE_MISMATCH || factory == NULL_FOR_NONNULL_TYPE)
&& diagnostic.getPsiElement() == expressionToWatch) {
mismatchFound[0] = true;
}
@@ -0,0 +1,10 @@
package m
trait Element
fun test(handlers: Map<String, Element.()->Unit>) {
handlers.getOrElse("name", { null })
}
fun <K,V> Map<K,V>.getOrElse(key: K, defaultValue: ()-> V) : V = throw Exception("$key $defaultValue")
@@ -2685,6 +2685,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
doTest("compiler/testData/diagnostics/tests/functionLiterals/NoDanglingFunctionLiteralForNestedCalls.kt");
}
@TestMetadata("returnNull.kt")
public void testReturnNull() throws Exception {
doTest("compiler/testData/diagnostics/tests/functionLiterals/returnNull.kt");
}
@TestMetadata("unusedLiteral.kt")
public void testUnusedLiteral() throws Exception {
doTest("compiler/testData/diagnostics/tests/functionLiterals/unusedLiteral.kt");