From 3ffa7cdcf89a0377b6ac924260e894b190822c45 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 14 May 2014 22:28:52 +0400 Subject: [PATCH] Minor optimization in KotlinBuiltIns.isSpecialClassWithNoSupertypes --- compiler/builtins-serializer/src/BuiltInsSerializer.kt | 2 +- .../lang/resolve/lazy/descriptors/LazyClassDescriptor.java | 2 +- .../org/jetbrains/jet/test/util/DescriptorValidator.java | 2 +- .../org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java | 7 ++++--- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/compiler/builtins-serializer/src/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/BuiltInsSerializer.kt index b99da1a9a73..83995818e02 100644 --- a/compiler/builtins-serializer/src/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/BuiltInsSerializer.kt @@ -95,7 +95,7 @@ public class BuiltInsSerializer(val out: PrintStream?) { val serializer = DescriptorSerializer(object : SerializerExtension() { override fun hasSupertypes(descriptor: ClassDescriptor): Boolean = - !KotlinBuiltIns.isSpecialClassWithNoSupertypes(descriptor) + !KotlinBuiltIns.getInstance().isSpecialClassWithNoSupertypes(descriptor) }) val classNames = ArrayList() diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index bdadb5e95d2..dfe0272f668 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -473,7 +473,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes new Function0() { @Override public Supertypes invoke() { - if (KotlinBuiltIns.isSpecialClassWithNoSupertypes(LazyClassDescriptor.this)) { + if (KotlinBuiltIns.getInstance().isSpecialClassWithNoSupertypes(LazyClassDescriptor.this)) { return new Supertypes(Collections.emptyList()); } diff --git a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java index 0af2eeccb25..8bef945fc32 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java @@ -235,7 +235,7 @@ public class DescriptorValidator { Collection supertypes = descriptor.getTypeConstructor().getSupertypes(); if (supertypes.isEmpty() && descriptor.getKind() != ClassKind.TRAIT - && !KotlinBuiltIns.isSpecialClassWithNoSupertypes(descriptor)) { + && !KotlinBuiltIns.getInstance().isSpecialClassWithNoSupertypes(descriptor)) { report(collector, descriptor, "No supertypes for non-trait"); } validateTypes(descriptor, collector, supertypes); 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 844ce2f394a..2d39eb7a3d6 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 @@ -143,6 +143,8 @@ public class KotlinBuiltIns { } private static class FqNames { + public final FqNameUnsafe any = fqName("Any"); + public final FqNameUnsafe nothing = fqName("Nothing"); public final FqNameUnsafe suppress = fqName("suppress"); @NotNull @@ -792,10 +794,9 @@ public class KotlinBuiltIns { // Recognized & special - public static boolean isSpecialClassWithNoSupertypes(@NotNull ClassDescriptor descriptor) { + public boolean isSpecialClassWithNoSupertypes(@NotNull ClassDescriptor descriptor) { FqNameUnsafe fqName = DescriptorUtils.getFqName(descriptor); - return BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("Any")).toUnsafe().equals(fqName) || - BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("Nothing")).toUnsafe().equals(fqName); + return fqNames.any.equals(fqName) || fqNames.nothing.equals(fqName); } public boolean isNothing(@NotNull JetType type) {