diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.kt index dac5cbc3b05..01d95e057e6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CandidateResolver.kt @@ -136,7 +136,7 @@ class CandidateResolver( val substitutor = TypeSubstitutor.create(SubstitutionFilteringInternalResolveAnnotations(substitution)) if (expectedTypeArgumentCount != ktTypeArguments.size) { - candidateCall.addStatus(OTHER_ERROR) + candidateCall.addStatus(WRONG_NUMBER_OF_TYPE_ARGUMENTS_ERROR) tracing.wrongNumberOfTypeArguments(trace, expectedTypeArgumentCount, candidateDescriptor) } else { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/results/ResolutionStatus.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/results/ResolutionStatus.java index ad0568fb3b4..20cd7394495 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/results/ResolutionStatus.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/results/ResolutionStatus.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import java.util.EnumSet; public enum ResolutionStatus { UNKNOWN_STATUS, UNSAFE_CALL_ERROR, + WRONG_NUMBER_OF_TYPE_ARGUMENTS_ERROR, OTHER_ERROR, ARGUMENTS_MAPPING_ERROR, // '1.foo()' shouldn't be resolved to 'fun String.foo()' @@ -38,6 +39,7 @@ public enum ResolutionStatus { @SuppressWarnings("unchecked") public static final EnumSet[] SEVERITY_LEVELS = new EnumSet[] { EnumSet.of(UNSAFE_CALL_ERROR), // weakest + EnumSet.of(WRONG_NUMBER_OF_TYPE_ARGUMENTS_ERROR), EnumSet.of(OTHER_ERROR), EnumSet.of(ARGUMENTS_MAPPING_ERROR), EnumSet.of(RECEIVER_TYPE_ERROR), diff --git a/compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.kt b/compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.kt new file mode 100644 index 00000000000..a8e5ad6ef17 --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.kt @@ -0,0 +1,15 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE + +fun myFun(i : String) {} +fun myFun(i : Int) {} + +fun test1() { + myFun(3) + myFun('a') +} + +fun test2() { + val m0 = java.util.HashMap() + val m1 = java.util.HashMap() + val m2 = java.util.HashMap() +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.txt b/compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.txt new file mode 100644 index 00000000000..97435ad0478 --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.txt @@ -0,0 +1,6 @@ +package + +public fun myFun(/*0*/ i: kotlin.Int): kotlin.Unit +public fun myFun(/*0*/ i: kotlin.String): kotlin.Unit +public fun test1(): kotlin.Unit +public fun test2(): kotlin.Unit diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 2ca0d86fd67..d5440afa82e 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -8692,6 +8692,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("wrongNumberOfTypeArgumentsDiagnostic.kt") + public void testWrongNumberOfTypeArgumentsDiagnostic() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/generics/wrongNumberOfTypeArgumentsDiagnostic.kt"); + doTest(fileName); + } + @TestMetadata("compiler/testData/diagnostics/tests/generics/capturedParameters") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)