diff --git a/compiler/frontend/src/org/jetbrains/jet/util/QualifiedNamesUtil.java b/compiler/frontend/src/org/jetbrains/jet/util/QualifiedNamesUtil.java index 59e2e7e1133..e18154d744a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/util/QualifiedNamesUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/util/QualifiedNamesUtil.java @@ -1,3 +1,4 @@ +/* /* * Copyright 2010-2012 JetBrains s.r.o. * @@ -18,8 +19,8 @@ package org.jetbrains.jet.util; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.ImportPath; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; /** @@ -33,8 +34,18 @@ public final class QualifiedNamesUtil { } public static boolean isSubpackageOf(@NotNull final FqName subpackageName, @NotNull FqName packageName) { - return subpackageName.equals(packageName) || - (subpackageName.getFqName().startsWith(packageName.getFqName()) && subpackageName.getFqName().charAt(packageName.getFqName().length()) == '.'); + if (subpackageName.equals(packageName)) { + return true; + } + + if (packageName.isRoot()) { + return true; + } + + String subpackageNameStr = subpackageName.getFqName(); + String packageNameStr = packageName.getFqName(); + + return (subpackageNameStr.startsWith(packageNameStr) && subpackageNameStr.charAt(packageNameStr.length()) == '.'); } public static boolean isOneSegmentFQN(@NotNull final String fqn) { @@ -84,7 +95,7 @@ public final class QualifiedNamesUtil { */ @NotNull public static String tail(@NotNull FqName headFQN, @NotNull FqName fullFQN) { - if (!isSubpackageOf(fullFQN, headFQN)) { + if (!isSubpackageOf(fullFQN, headFQN) || headFQN.isRoot()) { return fullFQN.getFqName(); }