Prohibit instance access before super call

- Before this change members just left unresolved as they were absent in the
  specific scope named scopeForSecondaryConstructorHeaderResolution that
  created just to prohibit such accesses.
- Now they are resolved the same way as other members, but diagnostic is
  repored by in-place injected CallChecker
- Drop obsolete type of class scope

 #KT-6995 Fixed
This commit is contained in:
Denis Zharkov
2015-03-26 18:02:30 +03:00
parent b939530a5c
commit 418034add3
50 changed files with 690 additions and 162 deletions
@@ -10569,6 +10569,9 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
@TestMetadata("compiler/testData/diagnostics/tests/secondaryConstructors")
@TestDataPath("$PROJECT_ROOT")
@InnerTestClasses({
SecondaryConstructors.HeaderCallChecker.class,
})
@RunWith(JUnit3RunnerWithInners.class)
public static class SecondaryConstructors extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInSecondaryConstructors() throws Exception {
@@ -10719,12 +10722,6 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("memberAccessBeforeSuperCall.kt")
public void testMemberAccessBeforeSuperCall() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/memberAccessBeforeSuperCall.kt");
doTest(fileName);
}
@TestMetadata("nestedExtendsInner.kt")
public void testNestedExtendsInner() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/nestedExtendsInner.kt");
@@ -10838,6 +10835,99 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/varargsInDelegationCallToSecondary.kt");
doTest(fileName);
}
@TestMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class HeaderCallChecker extends AbstractJetDiagnosticsTest {
@TestMetadata("accessBaseGenericFromInnerExtendingSameBase.kt")
public void testAccessBaseGenericFromInnerExtendingSameBase() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/accessBaseGenericFromInnerExtendingSameBase.kt");
doTest(fileName);
}
@TestMetadata("accessBaseGenericFromInnerExtendingSameBase2.kt")
public void testAccessBaseGenericFromInnerExtendingSameBase2() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/accessBaseGenericFromInnerExtendingSameBase2.kt");
doTest(fileName);
}
@TestMetadata("accessBaseWithSameExtension.kt")
public void testAccessBaseWithSameExtension() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/accessBaseWithSameExtension.kt");
doTest(fileName);
}
@TestMetadata("accessGenericBaseWithSameExtension.kt")
public void testAccessGenericBaseWithSameExtension() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/accessGenericBaseWithSameExtension.kt");
doTest(fileName);
}
public void testAllFilesPresentInHeaderCallChecker() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("innerInstanceCreation.kt")
public void testInnerInstanceCreation() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/innerInstanceCreation.kt");
doTest(fileName);
}
@TestMetadata("memberFunAccess.kt")
public void testMemberFunAccess() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/memberFunAccess.kt");
doTest(fileName);
}
@TestMetadata("passingInstance.kt")
public void testPassingInstance() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/passingInstance.kt");
doTest(fileName);
}
@TestMetadata("propertyAccess.kt")
public void testPropertyAccess() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/propertyAccess.kt");
doTest(fileName);
}
@TestMetadata("propertyAccessUnitialized.kt")
public void testPropertyAccessUnitialized() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/propertyAccessUnitialized.kt");
doTest(fileName);
}
@TestMetadata("superFunAccess.kt")
public void testSuperFunAccess() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/superFunAccess.kt");
doTest(fileName);
}
@TestMetadata("superFunAccessOverriden.kt")
public void testSuperFunAccessOverriden() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/superFunAccessOverriden.kt");
doTest(fileName);
}
@TestMetadata("superPropertyAccess.kt")
public void testSuperPropertyAccess() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/superPropertyAccess.kt");
doTest(fileName);
}
@TestMetadata("usingOuterInstance.kt")
public void testUsingOuterInstance() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/usingOuterInstance.kt");
doTest(fileName);
}
@TestMetadata("usingOuterProperty.kt")
public void testUsingOuterProperty() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/secondaryConstructors/headerCallChecker/usingOuterProperty.kt");
doTest(fileName);
}
}
}
@TestMetadata("compiler/testData/diagnostics/tests/senselessComparison")