From a49551dd352df7a6c5eeb21fcdebb42df98e0477 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 4 Dec 2013 18:51:06 +0400 Subject: [PATCH] Introduced getFqNameSafe method. --- .../jet/codegen/RangeCodegenUtil.java | 2 +- .../jet/codegen/SamWrapperCodegen.java | 2 +- .../codegen/intrinsics/IntrinsicMethods.java | 2 +- .../SignaturesPropagationData.java | 2 +- .../TypeTransformingVisitor.java | 4 +-- .../java/mapping/KotlinToJavaTypesMap.java | 4 +-- .../resolve/QualifiedExpressionResolver.java | 2 +- .../descriptors/LazyPackageMemberScope.java | 2 +- .../compiler/JdkAnnotationsValidityTest.java | 2 +- .../resolver/DescriptorResolverUtils.java | 4 +-- .../jet/lang/resolve/DescriptorUtils.java | 26 ++++++++++++++++--- .../jet/renderer/DescriptorRendererImpl.java | 2 +- .../jvm/GenerateJavaToKotlinMethodMap.java | 2 +- .../ReferenceToClassesShortening.java | 2 +- .../handlers/JetClassInsertHandler.java | 2 +- .../handlers/JetFunctionInsertHandler.kt | 2 +- .../importOptimizer/JetImportOptimizer.java | 4 +-- .../jet/plugin/highlighter/IdeRenderers.java | 6 ++--- .../libraries/DecompiledNavigationUtils.java | 3 ++- .../jet/plugin/quickfix/AutoImportFix.java | 6 ++--- .../references/BuiltInsReferenceResolver.java | 2 +- .../translate/utils/JsDescriptorUtils.java | 4 +-- 22 files changed, 50 insertions(+), 37 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/RangeCodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/RangeCodegenUtil.java index d17cc7b2f7c..36347ff8a28 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/RangeCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/RangeCodegenUtil.java @@ -109,7 +109,7 @@ public class RangeCodegenUtil { // Must be a standard library class return null; } - return map.get(DescriptorUtils.getFqName(declarationDescriptor).toSafe()); + return map.get(DescriptorUtils.getFqNameSafe(declarationDescriptor)); } public static boolean isOptimizableRangeTo(CallableDescriptor rangeTo) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java index 4ac13d93f09..cbb55a72b3a 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java @@ -135,7 +135,7 @@ public class SamWrapperCodegen extends ParentCodegenAwareImpl { FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(containingFile)); String packageInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageClassFqName).getInternalName(); return packageInternalName + "$sam$" + samInterface.getName().asString() + "$" + - Integer.toHexString(CodegenUtil.getPathHashCode(containingFile.getVirtualFile()) * 31 + DescriptorUtils.getFqName( + Integer.toHexString(CodegenUtil.getPathHashCode(containingFile.getVirtualFile()) * 31 + DescriptorUtils.getFqNameSafe( samInterface).hashCode()); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java index a6a62595553..0aa9e85cf68 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java @@ -138,7 +138,7 @@ public class IntrinsicMethods { declareIntrinsicProperty(Name.identifier("CharSequence"), Name.identifier("length"), new StringLength()); declareIntrinsicProperty(Name.identifier("String"), Name.identifier("length"), new StringLength()); - registerStaticField(getFqName(KotlinBuiltIns.getInstance().getUnit()).toSafe(), Name.identifier("VALUE")); + registerStaticField(getFqNameSafe(KotlinBuiltIns.getInstance().getUnit()), Name.identifier("VALUE")); for (PrimitiveType type : PrimitiveType.NUMBER_TYPES) { FqName rangeClassFqName = RangeCodegenUtil.getRangeClassFqName(type); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java index 8077575565d..78321b6cd54 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java @@ -282,7 +282,7 @@ public class SignaturesPropagationData { for (JetType supertype : TypeUtils.getAllSupertypes(containingClass.getDefaultType())) { ClassifierDescriptor klass = supertype.getConstructor().getDeclarationDescriptor(); assert klass != null; - FqName fqName = DescriptorUtils.getFqName(klass).toSafe(); + FqName fqName = DescriptorUtils.getFqNameSafe(klass); for (FunctionDescriptor fun : klass.getDefaultType().getMemberScope().getFunctions(functionName)) { CallableMemberDescriptor.Kind kind = fun.getKind(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/TypeTransformingVisitor.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/TypeTransformingVisitor.java index 9d46a4bed91..3af05a7294f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/TypeTransformingVisitor.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/TypeTransformingVisitor.java @@ -98,7 +98,7 @@ public class TypeTransformingVisitor extends JetVisitor { } private JetType visitCommonType(@NotNull ClassDescriptor classDescriptor, @NotNull JetTypeElement type) { - return visitCommonType(DescriptorUtils.getFqName(classDescriptor).toSafe().asString(), type); + return visitCommonType(DescriptorUtils.getFqNameSafe(classDescriptor).asString(), type); } @NotNull @@ -109,7 +109,7 @@ public class TypeTransformingVisitor extends JetVisitor { TypeConstructor originalTypeConstructor = originalType.getConstructor(); ClassifierDescriptor declarationDescriptor = originalTypeConstructor.getDeclarationDescriptor(); assert declarationDescriptor != null; - FqName originalClassFqName = DescriptorUtils.getFqName(declarationDescriptor).toSafe(); + FqName originalClassFqName = DescriptorUtils.getFqNameSafe(declarationDescriptor); ClassDescriptor classFromLibrary = getAutoTypeAnalogWithinBuiltins(originalClassFqName, qualifiedName); if (!isSameName(qualifiedName, originalClassFqName.asString()) && classFromLibrary == null) { throw new AlternativeSignatureMismatchException("Alternative signature type mismatch, expected: %s, actual: %s", diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java index 1ae07c127b2..06985c24696 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/mapping/KotlinToJavaTypesMap.java @@ -97,9 +97,7 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder { @Override protected void register(@NotNull Class javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) { if (direction == Direction.BOTH || direction == Direction.KOTLIN_TO_JAVA) { - FqNameUnsafe fqNameUnsafe = DescriptorUtils.getFqName(kotlinDescriptor); - assert fqNameUnsafe.isSafe() : "FQ name of a mapped class should be safe: " + fqNameUnsafe; - FqName fqName = fqNameUnsafe.toSafe(); + FqName fqName = DescriptorUtils.getFqNameSafe(kotlinDescriptor); register(fqName, AsmTypeConstants.getType(javaClass)); registerFqName(fqName, new FqName(javaClass.getCanonicalName())); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java index 988fb37ea5d..71755838ab5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java @@ -402,7 +402,7 @@ public class QualifiedExpressionResolver { } if (packageView != null && classDescriptor != null) { - if (DescriptorUtils.getFqName(packageView).equalsTo(DescriptorUtils.getFqName(classDescriptor))) { + if (packageView.getFqName().equalsTo(DescriptorUtils.getFqName(classDescriptor))) { trace.record(BindingContext.REFERENCE_TARGET, referenceExpression, classDescriptor); trace.record(BindingContext.RESOLUTION_SCOPE, referenceExpression, resolutionScope); checkVisibility(classDescriptor, trace, referenceExpression, scopeToCheckVisibility); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java index 4e5b3fd14ab..f0d8ed5fb6f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java @@ -47,7 +47,7 @@ public class LazyPackageMemberScope extends AbstractLazyMemberScope { DeclarationDescriptor descriptor = lookupObject.getDescriptor(); PsiElement targetElement = lookupObject.getPsiElement(); if (descriptor != null) { - FqName fqn = DescriptorUtils.getFqName(descriptor).toSafe(); + FqName fqn = DescriptorUtils.getFqNameSafe(descriptor); // TODO: Find out the way for getting psi element for JS libs if (targetElement != null) { diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.kt b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.kt index 2f4cec59e55..e8eeb3bb56f 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.kt @@ -177,7 +177,7 @@ public class JetFunctionInsertHandler(val caretPosition : CaretPosition, val bra if (DescriptorUtils.isTopLevelDeclaration(functionDescriptor)) { ApplicationManager.getApplication()?.runWriteAction { - val fqn = DescriptorUtils.getFqName(functionDescriptor).toSafe() + val fqn = DescriptorUtils.getFqNameSafe(functionDescriptor) ImportInsertHelper.addImportDirectiveIfNeeded(fqn, file) } } diff --git a/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java b/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java index 15ba72d9981..1424c926b6c 100644 --- a/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java +++ b/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java @@ -183,9 +183,7 @@ public class JetImportOptimizer implements ImportOptimizer { private void addResolvedCallFqName(@Nullable ResolvedCall resolvedCall) { if (resolvedCall != null) { CallableDescriptor resultingDescriptor = resolvedCall.getResultingDescriptor(); - FqNameUnsafe name = DescriptorUtils.getFqName(resultingDescriptor); - assert name.isSafe(): "FqName for resulting descriptor should be safe " + resultingDescriptor.getName(); - usedQualifiedNames.add(name.toSafe()); + usedQualifiedNames.add(DescriptorUtils.getFqNameSafe(resultingDescriptor)); } } }); diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java index d0dafece135..5280204b6ae 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java @@ -163,10 +163,8 @@ public class IdeRenderers { stringBuilder.append(parametersToHighlight.contains(null) ? String.format(RED_TEMPLATE, ")") : ")"); stringBuilder.append(" defined in "); DeclarationDescriptor containingDeclaration = funDescriptor.getContainingDeclaration(); - if (containingDeclaration != null) { - FqNameUnsafe fqName = DescriptorUtils.getFqName(containingDeclaration); - stringBuilder.append(FqName.ROOT.equalsTo(fqName) ? "root package" : fqName.asString()); - } + FqNameUnsafe fqName = DescriptorUtils.getFqName(containingDeclaration); + stringBuilder.append(FqName.ROOT.equalsTo(fqName) ? "root package" : fqName.asString()); stringBuilder.append(""); } return stringBuilder.toString(); diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java b/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java index 477a8a1e75b..03c7e6539ce 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java @@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Set; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName; +import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqNameSafe; public final class DecompiledNavigationUtils { @@ -120,7 +121,7 @@ public final class DecompiledNavigationUtils { if (classKind == ClassKind.CLASS_OBJECT || classKind == ClassKind.ENUM_ENTRY) { return getContainerFqName(containerDescriptor.getContainingDeclaration()); } - return getFqName(containerDescriptor).toSafe(); + return getFqNameSafe(containerDescriptor); } return null; } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java index 227df201251..a44fee4f8a7 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java @@ -125,7 +125,7 @@ public class AutoImportFix extends JetHintAction implem @Override public FqName apply(@Nullable DeclarationDescriptor declarationDescriptor) { assert declarationDescriptor != null; - return DescriptorUtils.getFqName(declarationDescriptor).toSafe(); + return DescriptorUtils.getFqNameSafe(declarationDescriptor); } })); } @@ -152,7 +152,7 @@ public class AutoImportFix extends JetHintAction implem @Override public FqName apply(@Nullable DeclarationDescriptor declarationDescriptor) { assert declarationDescriptor != null; - return DescriptorUtils.getFqName(declarationDescriptor).toSafe(); + return DescriptorUtils.getFqNameSafe(declarationDescriptor); } })); } @@ -219,7 +219,7 @@ public class AutoImportFix extends JetHintAction implem return Collections2.transform(descriptors, new Function() { @Override public FqName apply(ClassDescriptor descriptor) { - return DescriptorUtils.getFqName(descriptor).toSafe(); + return DescriptorUtils.getFqNameSafe(descriptor); } }); } diff --git a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java b/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java index 02176cf651e..6fc75497552 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java +++ b/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java @@ -138,7 +138,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { return ((ClassDescriptor) currentParent).getClassObjectDescriptor(); } else { - return bindingContext.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, DescriptorUtils.getFqName(originalDescriptor).toSafe()); + return bindingContext.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, DescriptorUtils.getFqNameSafe(originalDescriptor)); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java index 881b0f1dc94..8d89fc5ea27 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/JsDescriptorUtils.java @@ -41,7 +41,7 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName; public final class JsDescriptorUtils { // TODO: maybe we should use external annotations or something else. private static final Set FAKE_CLASSES = ContainerUtil.immutableSet( - getFqName(KotlinBuiltIns.getInstance().getAny()).toSafe().asString(), + getFqNameSafe(KotlinBuiltIns.getInstance().getAny()).asString(), "jet.Iterable" ); @@ -82,7 +82,7 @@ public final class JsDescriptorUtils { @Override public boolean value(JetType type) { ClassDescriptor classDescriptor = getClassDescriptorForType(type); - return !FAKE_CLASSES.contains(getFqName(classDescriptor).toSafe().asString()); + return !FAKE_CLASSES.contains(getFqNameSafe(classDescriptor).asString()); } }); }