Add checks for const modifier applicability

1. Must be initialized in-place
2. Can not be open/abstract
3. Can not be an override
4. Can not be delegated
5. Initializer must be a compile-time constant
6. No getters
7. `const` is not applicable to vars or locals
8. `const val` should be whether top-level property or object member
This commit is contained in:
Denis Zharkov
2015-09-21 16:17:42 +03:00
parent bde58d6eb8
commit b2b76d16d0
15 changed files with 432 additions and 9 deletions
@@ -9107,6 +9107,33 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/repeatedModifiers.kt");
doTest(fileName);
}
@TestMetadata("compiler/testData/diagnostics/tests/modifiers/const")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Const extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInConst() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/modifiers/const"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("applicability.kt")
public void testApplicability() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/const/applicability.kt");
doTest(fileName);
}
@TestMetadata("constInteraction.kt")
public void testConstInteraction() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/const/constInteraction.kt");
doTest(fileName);
}
@TestMetadata("types.kt")
public void testTypes() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
doTest(fileName);
}
}
}
@TestMetadata("compiler/testData/diagnostics/tests/multimodule")