From fb12c56d1ad697fc4989e3f76ce1020180134ad7 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 20 Feb 2014 02:40:44 +0400 Subject: [PATCH] Add a temporary hack for migration "jet" -> "kotlin" --- .../src/BuiltInsSerializer.kt | 19 ++++++++++++ .../types/lang/BuiltInsPackageMigration.java | 31 +++++++++++++++++++ .../jet/lang/types/lang/KotlinBuiltIns.java | 15 +++++++++ 3 files changed, 65 insertions(+) create mode 100644 core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsPackageMigration.java diff --git a/compiler/builtins-serializer/src/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/BuiltInsSerializer.kt index f4b1aec38b5..8cbe7f1fc64 100644 --- a/compiler/builtins-serializer/src/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/BuiltInsSerializer.kt @@ -44,6 +44,7 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import org.jetbrains.jet.lang.resolve.name.FqName import com.intellij.util.containers.ContainerUtil import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns +import org.jetbrains.jet.lang.types.lang.BuiltInsPackageMigration public class BuiltInsSerializer(val out: PrintStream?) { private var totalSize = 0 @@ -84,6 +85,24 @@ public class BuiltInsSerializer(val out: PrintStream?) { } for (fqName in ContainerUtil.mapNotNull(files) { it?.getPackageName() }.toSet()) { + if (fqName == "kotlin") { + BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage = true + val provider = session.getDeclarationProviderFactory().getPackageMemberDeclarationProvider(FqName(fqName))!! + + fun resolveClass(name: String): ClassDescriptor { + val classes = provider.getClassOrObjectDeclarations(Name.identifier(name)) + assert(classes.size() == 1, "Class $name not found: " + classes) + return session.getClassDescriptor(classes.iterator().next()) + } + BuiltInsPackageMigration.anyType = resolveClass("Any").getDefaultType() + BuiltInsPackageMigration.stringType = resolveClass("String").getDefaultType() + BuiltInsPackageMigration.annotationType = resolveClass("Annotation").getDefaultType() + BuiltInsPackageMigration.arrayClass = resolveClass("Array") + BuiltInsPackageMigration.enumClass = resolveClass("Enum") + } + else { + BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage = false + } serializePackage(module, FqName(fqName), destDir) } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsPackageMigration.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsPackageMigration.java new file mode 100644 index 00000000000..777df42cfc6 --- /dev/null +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsPackageMigration.java @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2014 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.jet.lang.types.lang; + +import org.jetbrains.jet.lang.descriptors.ClassDescriptor; +import org.jetbrains.jet.lang.types.JetType; + +// This is a temporary hack for migration of built-ins from package "jet" to "kotlin" +public class BuiltInsPackageMigration { + public static boolean isSerializingBuiltInsInKotlinPackage = false; + + public static JetType anyType = null; + public static JetType stringType = null; + public static JetType annotationType = null; + public static ClassDescriptor arrayClass = null; + public static ClassDescriptor enumClass = null; +} diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index a72af73e1f5..90e38b69c2e 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -291,6 +291,9 @@ public class KotlinBuiltIns { @NotNull public ClassDescriptor getArray() { + if (BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage) { + return BuiltInsPackageMigration.arrayClass; + } return getBuiltInClassByName("Array"); } @@ -395,6 +398,9 @@ public class KotlinBuiltIns { @NotNull public ClassDescriptor getEnum() { + if (BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage) { + return BuiltInsPackageMigration.enumClass; + } return getBuiltInClassByName("Enum"); } @@ -571,6 +577,9 @@ public class KotlinBuiltIns { @NotNull public JetType getAnyType() { + if (BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage) { + return BuiltInsPackageMigration.anyType; + } return getBuiltInTypeByClassName("Any"); } @@ -642,6 +651,9 @@ public class KotlinBuiltIns { @NotNull public JetType getStringType() { + if (BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage) { + return BuiltInsPackageMigration.stringType; + } return getBuiltInTypeByClassName("String"); } @@ -705,6 +717,9 @@ public class KotlinBuiltIns { @NotNull public JetType getAnnotationType() { + if (BuiltInsPackageMigration.isSerializingBuiltInsInKotlinPackage) { + return BuiltInsPackageMigration.annotationType; + } return getBuiltInTypeByClassName("Annotation"); }