diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierTypeImpl.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierTypeImpl.java index 4113bec8372..70688b9cc2d 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierTypeImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierTypeImpl.java @@ -71,8 +71,8 @@ public class JavaClassifierTypeImpl extends JavaTypeImpl implement @Override @NotNull - public String getCanonicalText() { - return getPsi().getCanonicalText(); + public String getClassifierQualifiedName() { + return ClassNamesUtilKt.convertCanonicalNameToQName(getPsi().getCanonicalText()); } @Override diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/notFoundClasses.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classNamesUtil.kt similarity index 66% rename from core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/notFoundClasses.kt rename to compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classNamesUtil.kt index df4deca55d0..9a0fc0e29f7 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/notFoundClasses.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classNamesUtil.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2017 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. @@ -14,21 +14,11 @@ * limitations under the License. */ -package org.jetbrains.kotlin.load.java.lazy.types +package org.jetbrains.kotlin.load.java.structure.impl -import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.SpecialNames -/** - * Parse the given FQ name with possible generic arguments to a **top-level** ClassId instance. - * E.g. "test.A.C" is parsed to a ClassId "test/A/C" which represents a class named "C" declared in package "test.A". - */ -internal fun parseCanonicalFqNameIgnoringTypeArguments(fqName: String): ClassId { - val nameParts = fqName.splitCanonicalFqName() - val resultingClassFqName = FqName(nameParts.joinToString(separator = ".") { it.substringBefore('<') }) - return ClassId.topLevel(resultingClassFqName) -} +fun String.convertCanonicalNameToQName() = splitCanonicalFqName().joinToString(separator = ".") { it.substringBefore('<') } // "test.A.D, I.J>" -> ["test", "A", "D, I.J>"] private fun String.splitCanonicalFqName(): List { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt index 0057265769a..df6b533883f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/JavaTypeResolver.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.lazy.TypeParameterResolver import org.jetbrains.kotlin.load.java.lazy.types.JavaTypeFlexibility.* import org.jetbrains.kotlin.load.java.structure.* +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.types.* @@ -138,7 +139,7 @@ class JavaTypeResolver( // and treat the resulting qualified name as if it references a simple top-level class. // Note that this makes MISSING_DEPENDENCY_CLASS diagnostic messages not as precise as they could be in some corner cases. private fun createNotFoundClass(javaType: JavaClassifierType): TypeConstructor { - val classId = parseCanonicalFqNameIgnoringTypeArguments(javaType.canonicalText) + val classId = ClassId.topLevel(FqName(javaType.classifierQualifiedName)) return c.components.deserializedDescriptorResolver.components.notFoundClasses.getClass(classId, listOf(0)).typeConstructor } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/javaTypes.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/javaTypes.kt index c7c2f17962c..f88c324030b 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/javaTypes.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/javaTypes.kt @@ -30,7 +30,7 @@ interface JavaClassifierType : JavaType, JavaAnnotationOwner { val isRaw: Boolean - val canonicalText: String + val classifierQualifiedName: String val presentableText: String } diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClassifierType.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClassifierType.kt index da948d81524..0835455bc16 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClassifierType.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClassifierType.kt @@ -37,7 +37,7 @@ class ReflectJavaClassifierType(public override val reflectType: Type) : Reflect classifier } - override val canonicalText: String + override val classifierQualifiedName: String get() = throw UnsupportedOperationException("Type not found: $reflectType") override val presentableText: String