Dropping package facades:

- light classes: do not generate light class for package facade
- drop package facades as multifile classes compilation mode support
- get rid of some additional package facade fqName usages
- update tests for light classes
This commit is contained in:
Dmitry Petrov
2015-10-15 18:13:04 +03:00
parent e7fb7483c5
commit 149e70aa07
42 changed files with 60 additions and 373 deletions
@@ -38,10 +38,6 @@ public class AnnotationGenTest extends CodegenTestCase {
return generateAndCreateClassLoader();
}
private Class<?> getPackageClass(@NotNull ClassLoader loader) throws ClassNotFoundException {
return loader.loadClass(PackageClassUtils.getPackageClassName(myFiles.getPsiFile().getPackageFqName()));
}
private Class<?> getPackageSrcClass(@NotNull ClassLoader loader) throws ClassNotFoundException {
return loader.loadClass(PackagePartClassUtils.getPackagePartInternalName(myFiles.getPsiFile()));
}
@@ -68,7 +68,6 @@ public class CodegenTestUtil {
configuration.get(JVMConfigurationKeys.DISABLE_INLINE, false),
configuration.get(JVMConfigurationKeys.DISABLE_OPTIMIZATION, false),
/* useTypeTableInSerializer = */ false,
configuration.get(JVMConfigurationKeys.PACKAGE_FACADES_AS_MULTIFILE_CLASSES, false),
forExtraDiagnostics
);
KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION);
@@ -50,16 +50,8 @@ public class SyntheticMethodForAnnotatedPropertyGenTest extends CodegenTestCase
public void testTopLevel() {
loadFile();
String packageClassName = PackageClassUtils.getPackageClassName(FqName.ROOT);
for (OutputFile outputFile : generateClassesInFile().asList()) {
String filPath = outputFile.getRelativePath();
if (filPath.startsWith(packageClassName) && !filPath.equals(packageClassName + ".class")) {
// This should be package$src class
Class<?> a = generateClass(filPath.substring(0, filPath.length() - ".class".length()));
assertAnnotatedSyntheticMethodExistence(true, a);
}
}
Class<?> a = generateClass("TopLevelKt");
assertAnnotatedSyntheticMethodExistence(true, a);
}
public void testInTrait() throws ClassNotFoundException {
@@ -1,68 +0,0 @@
/*
* Copyright 2010-2015 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.name;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.Test;
import static org.jetbrains.kotlin.load.kotlin.PackageClassUtils.getPackageClassName;
import static org.junit.Assert.assertEquals;
public class PackageClassNameTest {
@Test
public void testPackageName1() {
doTest("kotlin", "KotlinPackage", "_DefaultPackage");
}
@Test
public void testPackageName2() {
doTest("kotlin.io", "IoPackage", "KotlinPackage");
}
@Test
public void testPackageName3() {
doTest("kotlin.io.foo", "FooPackage", "IoPackage");
}
@Test
public void testPackageName4() {
doTest("kotlinTest.ioTest", "IoTestPackage", "KotlinTestPackage");
}
@Test
public void testPackageName5() {
doTest(FqName.ROOT, "_DefaultPackage", null);
}
@Test
public void testPackageName6() {
doTest(FqName.ROOT.child(Name.identifier("kotlin")), "KotlinPackage", "_DefaultPackage");
}
private static void doTest(@NotNull String name, @NotNull String expectedForChild, @Nullable String expectedForParent) {
doTest(new FqName(name), expectedForChild, expectedForParent);
}
private static void doTest(@NotNull FqName name, @NotNull String expectedForChild, @Nullable String expectedForParent) {
assertEquals("Wrong result for child [" + name + "].", expectedForChild, getPackageClassName(name));
if (expectedForParent != null) {
assertEquals("Wrong result for parent [" + name + "].", expectedForParent, getPackageClassName(name.parent()));
}
}
}