From 8b5aa94484378b60129156b151b5b5563f711430 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 29 Oct 2013 22:03:04 +0400 Subject: [PATCH] Extract SpecialNames.isClassObjectName --- .../kotlin/DeserializedResolverUtils.java | 15 ++++----- .../jet/lang/resolve/name/SpecialNames.java | 8 ++++- .../types/lang/BuiltInsSerializationUtil.java | 31 +++++++++++++------ 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedResolverUtils.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedResolverUtils.java index baa47cd1e8f..aa1120105ea 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedResolverUtils.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedResolverUtils.java @@ -29,21 +29,18 @@ import org.jetbrains.jet.lang.resolve.name.Name; import java.util.ArrayList; import java.util.List; +import static org.jetbrains.jet.lang.resolve.name.SpecialNames.isClassObjectName; + public class DeserializedResolverUtils { private DeserializedResolverUtils() { } @NotNull public static FqName kotlinFqNameToJavaFqName(@NotNull FqNameUnsafe kotlinFqName) { - List correctedSegments = new ArrayList(); - for (Name segment : kotlinFqName.pathSegments()) { - if (segment.asString().startsWith(" segments = kotlinFqName.pathSegments(); + List correctedSegments = new ArrayList(segments.size()); + for (Name segment : segments) { + correctedSegments.add(isClassObjectName(segment) ? JvmAbi.CLASS_OBJECT_CLASS_NAME : segment.getIdentifier()); } return FqName.fromSegments(correctedSegments); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/SpecialNames.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/SpecialNames.java index 964e378faf6..ffb7c287e31 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/SpecialNames.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/name/SpecialNames.java @@ -22,10 +22,16 @@ public class SpecialNames { public static final Name NO_NAME_PROVIDED = Name.special(""); public static final Name ROOT_NAMESPACE = Name.special(""); + private static final String CLASS_OBJECT_FOR = ""); + return Name.special(CLASS_OBJECT_FOR + className.asString() + ">"); + } + + public static boolean isClassObjectName(@NotNull Name name) { + return name.isSpecial() && name.asString().startsWith(CLASS_OBJECT_FOR); } } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java index 11614ce2628..fac047cbf4c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltInsSerializationUtil.java @@ -1,3 +1,19 @@ +/* + * Copyright 2010-2013 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.annotations.NotNull; @@ -11,6 +27,8 @@ import org.jetbrains.jet.lang.resolve.name.Name; import java.util.ArrayList; import java.util.List; +import static org.jetbrains.jet.lang.resolve.name.SpecialNames.isClassObjectName; + public class BuiltInsSerializationUtil { private static final String CLASS_METADATA_FILE_EXTENSION = "kotlin_class"; private static final String PACKAGE_FILE_NAME = ".kotlin_package"; @@ -23,15 +41,10 @@ public class BuiltInsSerializationUtil { @NotNull public static String relativeClassNameToFilePath(@NotNull FqNameUnsafe className) { - List correctedSegments = new ArrayList(); - for (Name segment : className.pathSegments()) { - if (segment.asString().startsWith(" segments = className.pathSegments(); + List correctedSegments = new ArrayList(segments.size()); + for (Name segment : segments) { + correctedSegments.add(isClassObjectName(segment) ? CLASS_OBJECT_NAME : segment.getIdentifier()); } return FqName.fromSegments(correctedSegments).asString(); }