Fix annoying parameter name override warning

Some corner cases still remain: KotlinSignature, propagation, deserialized
delegates to Java interfaces

 #KT-1239 Obsolete
 #KT-1924 In Progress
 #KT-2081 Fixed
This commit is contained in:
Alexander Udalov
2014-03-12 01:30:42 +04:00
parent 80a374a6e4
commit 7fcd42f40c
16 changed files with 198 additions and 15 deletions
@@ -5149,6 +5149,7 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
}
@TestMetadata("compiler/testData/diagnostics/tests/override")
@InnerTestClasses({Override.ParameterNames.class})
public static class Override extends AbstractJetDiagnosticsTest {
@TestMetadata("AbstractFunImplemented.kt")
public void testAbstractFunImplemented() throws Exception {
@@ -5204,16 +5205,6 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest("compiler/testData/diagnostics/tests/override/ConflictingFunctionSignatureFromSuperclass.kt");
}
@TestMetadata("ConflictingParameterNames.kt")
public void testConflictingParameterNames() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/ConflictingParameterNames.kt");
}
@TestMetadata("ConflictingParameterNames-MultipleSupertypes.kt")
public void testConflictingParameterNames_MultipleSupertypes() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/ConflictingParameterNames-MultipleSupertypes.kt");
}
@TestMetadata("ConflictingPropertySignatureFromSuperclass.kt")
public void testConflictingPropertySignatureFromSuperclass() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/ConflictingPropertySignatureFromSuperclass.kt");
@@ -5344,6 +5335,45 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest("compiler/testData/diagnostics/tests/override/ToAbstractMembersFromSuper-kt1996.kt");
}
@TestMetadata("compiler/testData/diagnostics/tests/override/parameterNames")
public static class ParameterNames extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInParameterNames() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/diagnostics/tests/override/parameterNames"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("changeOnOverrideDiagnostic.kt")
public void testChangeOnOverrideDiagnostic() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/parameterNames/changeOnOverrideDiagnostic.kt");
}
@TestMetadata("differentNamesInSupertypesDiagnostic.kt")
public void testDifferentNamesInSupertypesDiagnostic() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/parameterNames/differentNamesInSupertypesDiagnostic.kt");
}
@TestMetadata("jjkHierarchy.kt")
public void testJjkHierarchy() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/parameterNames/jjkHierarchy.kt");
}
@TestMetadata("kotlinInheritsBothJavaAndKotlin.kt")
public void testKotlinInheritsBothJavaAndKotlin() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/parameterNames/kotlinInheritsBothJavaAndKotlin.kt");
}
@TestMetadata("kotlinInheritsJava.kt")
public void testKotlinInheritsJava() throws Exception {
doTest("compiler/testData/diagnostics/tests/override/parameterNames/kotlinInheritsJava.kt");
}
}
public static Test innerSuite() {
TestSuite suite = new TestSuite("Override");
suite.addTestSuite(Override.class);
suite.addTestSuite(ParameterNames.class);
return suite;
}
}
@TestMetadata("compiler/testData/diagnostics/tests/recovery")
@@ -6978,7 +7008,7 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
suite.addTestSuite(Objects.class);
suite.addTestSuite(OperatorsOverloading.class);
suite.addTestSuite(Overload.class);
suite.addTestSuite(Override.class);
suite.addTest(Override.innerSuite());
suite.addTestSuite(Recovery.class);
suite.addTestSuite(Redeclarations.class);
suite.addTestSuite(Regressions.class);
@@ -16,6 +16,7 @@
package org.jetbrains.jet.jvm.compiler;
import com.google.common.collect.Iterables;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
@@ -24,12 +25,15 @@ import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.MockLibraryUtil;
import org.jetbrains.jet.TestJdkKind;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.cli.common.messages.AnalyzerWithCompilerReport;
import org.jetbrains.jet.cli.common.messages.MessageCollectorPlainTextToStream;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.test.TestCaseWithTmpdir;
import org.jetbrains.jet.test.util.DescriptorValidator;
@@ -160,4 +164,27 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir {
public void testMissingEnumReferencedInAnnotationArgument() throws Exception {
doTestWithTxt(copyJarFileWithoutEntry(compileLibrary("library"), "test/E.class"));
}
public void testNoWarningsOnJavaKotlinInheritance() throws Exception {
// This test checks that there are no PARAMETER_NAME_CHANGED_ON_OVERRIDE or DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES
// warnings when subclassing in Kotlin from Java binaries (in case when no parameter names are available for Java classes)
JetTestUtils.compileJavaFiles(
Collections.singletonList(getTestDataFileWithExtension("java")),
Arrays.asList("-d", tmpdir.getPath())
);
Project project = createEnvironment(Collections.singletonList(tmpdir)).getProject();
AnalyzeExhaust exhaust = AnalyzerFacadeForJVM.analyzeOneFileWithJavaIntegration(
JetTestUtils.loadJetFile(project, getTestDataFileWithExtension("kt")),
Collections.<AnalyzerScriptParameter>emptyList()
);
exhaust.throwIfError();
BindingContext bindingContext = exhaust.getBindingContext();
AnalyzerWithCompilerReport.reportDiagnostics(bindingContext, MessageCollectorPlainTextToStream.PLAIN_TEXT_TO_SYSTEM_ERR);
assertEquals("There should be no diagnostics", 0, Iterables.size(bindingContext.getDiagnostics()));
}
}