Split KotlinInfo annotation into two: KotlinClass and KotlinPackage
Two annotations are needed to properly distinguish package classes
This commit is contained in:
committed by
Alexander Udalov
parent
8a508fe938
commit
977cd7608a
+12
-9
@@ -14,14 +14,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.descriptors.serialization;
|
||||
package org.jetbrains.jet.codegen;
|
||||
|
||||
import jet.KotlinInfo;
|
||||
import jet.KotlinClass;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.ConfigurationKind;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.codegen.CodegenTestCase;
|
||||
import org.jetbrains.jet.descriptors.serialization.AbstractDescriptorFinder;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassData;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationDeserializer;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
@@ -32,7 +35,7 @@ import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class KotlinInfoForClassTest extends CodegenTestCase {
|
||||
public class KotlinClassAnnotationTest extends CodegenTestCase {
|
||||
public static final FqName NAMESPACE_NAME = new FqName("test");
|
||||
public static final FqNameUnsafe CLASS_NAME = new FqNameUnsafe("A");
|
||||
|
||||
@@ -51,10 +54,10 @@ public class KotlinInfoForClassTest extends CodegenTestCase {
|
||||
"}\n");
|
||||
Class aClass = generateClass(NAMESPACE_NAME + "." + CLASS_NAME);
|
||||
|
||||
assertTrue(aClass.isAnnotationPresent(KotlinInfo.class));
|
||||
KotlinInfo kotlinInfo = (KotlinInfo) aClass.getAnnotation(KotlinInfo.class);
|
||||
assertTrue(aClass.isAnnotationPresent(KotlinClass.class));
|
||||
KotlinClass kotlinClass = (KotlinClass) aClass.getAnnotation(KotlinClass.class);
|
||||
|
||||
AbstractDescriptorFinder descriptorFinder = new KotlinInfoBasedDescriptorFinder(kotlinInfo);
|
||||
AbstractDescriptorFinder descriptorFinder = new KotlinInfoBasedDescriptorFinder(kotlinClass);
|
||||
|
||||
ClassDescriptor descriptor = descriptorFinder.findClass(new ClassId(NAMESPACE_NAME, CLASS_NAME));
|
||||
assertNotNull(descriptor);
|
||||
@@ -65,10 +68,10 @@ public class KotlinInfoForClassTest extends CodegenTestCase {
|
||||
private final ClassData classData;
|
||||
private final NamespaceDescriptorImpl namespace;
|
||||
|
||||
public KotlinInfoBasedDescriptorFinder(@NotNull KotlinInfo kotlinInfo) throws IOException {
|
||||
public KotlinInfoBasedDescriptorFinder(@NotNull KotlinClass kotlinClass) throws IOException {
|
||||
super(new LockBasedStorageManager(), AnnotationDeserializer.UNSUPPORTED);
|
||||
|
||||
this.classData = JavaProtoBufUtil.readClassDataFrom(kotlinInfo.data());
|
||||
this.classData = JavaProtoBufUtil.readClassDataFrom(kotlinClass.data());
|
||||
this.namespace = JetTestUtils.createTestNamespace(NAMESPACE_NAME.shortName());
|
||||
}
|
||||
|
||||
+5
-5
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.jet.codegen;
|
||||
|
||||
import jet.KotlinInfo;
|
||||
import jet.KotlinPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.ConfigurationKind;
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||
@@ -30,7 +30,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class KotlinInfoForPackageTest extends CodegenTestCase {
|
||||
public class KotlinPackageAnnotationTest extends CodegenTestCase {
|
||||
public static final FqName NAMESPACE_NAME = new FqName("test");
|
||||
|
||||
@Override
|
||||
@@ -50,10 +50,10 @@ public class KotlinInfoForPackageTest extends CodegenTestCase {
|
||||
"object C\n");
|
||||
Class aClass = generateClass(PackageClassUtils.getPackageClassFqName(NAMESPACE_NAME).asString());
|
||||
|
||||
assertTrue(aClass.isAnnotationPresent(KotlinInfo.class));
|
||||
KotlinInfo kotlinInfo = (KotlinInfo) aClass.getAnnotation(KotlinInfo.class);
|
||||
assertTrue(aClass.isAnnotationPresent(KotlinPackage.class));
|
||||
KotlinPackage kotlinPackage = (KotlinPackage) aClass.getAnnotation(KotlinPackage.class);
|
||||
|
||||
PackageData data = JavaProtoBufUtil.readPackageDataFrom(kotlinInfo.data());
|
||||
PackageData data = JavaProtoBufUtil.readPackageDataFrom(kotlinPackage.data());
|
||||
|
||||
Set<String> classNames = collectClassNames(data);
|
||||
assertSameElements(Arrays.asList("A", "B", "C"), classNames);
|
||||
Reference in New Issue
Block a user