From a1dbf221b3096fe3f8e18241a591c9e46b64b273 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Tue, 18 Mar 2014 19:52:03 +0400 Subject: [PATCH] Use instance methods instead of JetPsiUtil for getting fq names Remove unnecessary usages of JetFile#getPackageDirective where only FqName is needed Make JetFile#getPackageFqName not nullable to avoid confusion on call sites Remove getPackageName usages Move getFqName(JetNamedDeclaration) to a separate util class --- .../jet/codegen/KotlinCodegenFacade.java | 3 +- .../jetbrains/jet/codegen/PackageCodegen.java | 6 +- .../jet/codegen/PackagePartCodegen.java | 2 +- .../jet/codegen/SamWrapperCodegen.java | 3 +- .../binding/CodegenAnnotatingVisitor.java | 2 +- .../jet/codegen/binding/CodegenBinding.java | 2 +- .../codegen/binding/PsiCodegenPredictor.java | 9 +- .../src/BuiltInsSerializer.kt | 5 +- .../compiler/KotlinToJVMBytecodeCompiler.java | 3 +- .../jet/cli/jvm/repl/ReplInterpreter.java | 3 +- .../lang/resolve/java/JetFilesProvider.java | 5 +- .../org/jetbrains/jet/lang/psi/JetClass.java | 2 +- .../org/jetbrains/jet/lang/psi/JetFile.java | 21 +++-- .../jet/lang/psi/JetNamedDeclarationStub.java | 2 +- .../jet/lang/psi/JetNamedDeclarationUtil.java | 87 +++++++++++++++++++ .../jetbrains/jet/lang/psi/JetPsiUtil.java | 82 +---------------- .../jet/lang/psi/stubs/PsiJetFileStub.java | 5 +- .../stubs/elements/JetFileElementType.java | 6 +- .../stubs/elements/JetFileStubBuilder.java | 2 +- .../psi/stubs/impl/PsiJetFileStubImpl.java | 21 ++--- .../jet/lang/resolve/ImportsResolver.java | 2 +- .../lang/resolve/ScriptHeaderResolver.java | 3 +- .../jet/lang/resolve/TopDownAnalyzer.java | 6 +- .../lang/resolve/TypeHierarchyResolver.java | 4 +- .../resolve/lazy/ResolveSessionUtils.java | 4 +- .../jet/lang/resolve/lazy/ScopeProvider.java | 9 +- .../lazy/data/JetClassOrObjectInfo.java | 3 +- .../FileBasedDeclarationProviderFactory.java | 7 +- ...BasedPackageMemberDeclarationProvider.java | 2 +- .../asJava/KotlinJavaFileStubProvider.java | 2 +- ...otlinLightClassForExplicitDeclaration.java | 2 +- .../jetbrains/jet/asJava/LightClassUtil.java | 15 +--- .../jet/asJava/StubClassBuilder.java | 3 +- .../jet/codegen/AnnotationGenTest.java | 3 +- .../jet/codegen/CodegenTestCase.java | 3 +- .../AbstractBlackBoxCodegenTest.java | 3 +- ...ractLazyResolveDescriptorRendererTest.java | 2 +- .../resolve/lazy/LazyResolveTestUtil.java | 13 +-- .../jet/renderer/DescriptorRendererTest.java | 2 +- .../jet/plugin/caches/JetShortNamesCache.java | 5 +- .../IDELightClassGenerationSupport.java | 4 +- .../plugin/debugger/JetPositionManager.java | 4 +- .../plugin/project/ResolveElementCache.java | 6 +- .../quickfix/CreateFunctionFromUsageFix.java | 2 +- .../plugin/quickfix/ImportInsertHelper.java | 2 +- .../MoveKotlinFileHandler.kt | 4 +- ...MoveKotlinTopLevelDeclarationsProcessor.kt | 5 +- .../run/JetRunConfigurationProducer.java | 5 +- .../plugin/stubindex/PackageIndexUtil.java | 5 +- .../stubindex/StubIndexServiceImpl.java | 15 ++-- .../jet/plugin/util/DebuggerUtils.java | 3 +- .../jet/plugin/util/JetPsiHeuristicsUtil.java | 5 +- .../refactoring/rename/AbstractRenameTest.kt | 2 +- 53 files changed, 197 insertions(+), 229 deletions(-) create mode 100644 compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationUtil.java diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/KotlinCodegenFacade.java b/compiler/backend/src/org/jetbrains/jet/codegen/KotlinCodegenFacade.java index 56632c4d3bc..65b3c19ebf0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/KotlinCodegenFacade.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/KotlinCodegenFacade.java @@ -21,7 +21,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.asm4.Type; import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.psi.JetScript; import org.jetbrains.jet.lang.resolve.ScriptNameUtil; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -50,7 +49,7 @@ public class KotlinCodegenFacade { MultiMap packageFqNameToFiles = new MultiMap(); for (JetFile file : state.getFiles()) { if (file == null) throw new IllegalArgumentException("A null file given for compilation"); - packageFqNameToFiles.putValue(JetPsiUtil.getFQName(file), file); + packageFqNameToFiles.putValue(file.getPackageFqName(), file); } for (Map.Entry> entry : packageFqNameToFiles.entrySet()) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java index 33f6a49be89..c790f5dc867 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java @@ -247,14 +247,14 @@ public class PackageCodegen extends GenerationStateAware { private static void checkAllFilesHaveSamePackage(Collection packageFiles) { FqName commonFqName = null; for (JetFile file : packageFiles) { - FqName fqName = JetPsiUtil.getFQName(file); + FqName fqName = file.getPackageFqName(); if (commonFqName != null) { if (!commonFqName.equals(fqName)) { throw new IllegalArgumentException("All files should have same package name"); } } else { - commonFqName = JetPsiUtil.getFQName(file); + commonFqName = file.getPackageFqName(); } } } @@ -283,7 +283,7 @@ public class PackageCodegen extends GenerationStateAware { @NotNull public static String getPackagePartInternalName(@NotNull JetFile file) { - FqName packageFqName = JetPsiUtil.getFQName(file); + FqName packageFqName = file.getPackageFqName(); return getPackagePartType(getPackageClassFqName(packageFqName), file.getVirtualFile()).getInternalName(); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java index 9f0106cd8ef..4f6eddb1bb9 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java @@ -62,7 +62,7 @@ public class PackagePartCodegen extends MemberCodegen { this.packagePartName = packagePartName; this.context = context; descriptor = state.getBindingContext().get(BindingContext.FILE_TO_PACKAGE_FRAGMENT, jetFile); - assert descriptor != null : "No package fragment found for jetFile " + jetFile + " declared package: " + jetFile.getPackageName(); + assert descriptor != null : "No package fragment found for jetFile " + jetFile + " declared package: " + jetFile.getPackageFqName(); } public void generate() { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java index bfea6c041a6..9d43309378a 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java @@ -26,7 +26,6 @@ import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; @@ -136,7 +135,7 @@ public class SamWrapperCodegen extends ParentCodegenAwareImpl { } private String getWrapperName(@NotNull JetFile containingFile) { - FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(containingFile)); + FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(containingFile.getPackageFqName()); String packageInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageClassFqName).getInternalName(); return packageInternalName + "$sam$" + samInterface.getName().asString() + "$" + Integer.toHexString(CodegenUtil.getPathHashCode(containingFile.getVirtualFile()) * 31 + DescriptorUtils.getFqNameSafe( diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java index 165ee2ae2f6..3db9d8707ac 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java @@ -148,7 +148,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { nameStack.push(asmTypeForScriptPsi(bindingContext, file.getScript()).getInternalName()); } else { - nameStack.push(JvmClassName.byFqNameWithoutInnerClasses(JetPsiUtil.getFQName(file)).getInternalName()); + nameStack.push(JvmClassName.byFqNameWithoutInnerClasses(file.getPackageFqName()).getInternalName()); } file.acceptChildren(this); nameStack.pop(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenBinding.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenBinding.java index 917e4db3ef8..5a144bf273f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenBinding.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenBinding.java @@ -237,7 +237,7 @@ public class CodegenBinding { HashSet names = new HashSet(); for (JetFile file : files) { if (!file.isScript()) { - names.add(JetPsiUtil.getFQName(file)); + names.add(file.getPackageFqName()); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java index d0e7610fc43..84d74a153f3 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java @@ -80,18 +80,15 @@ public final class PsiCodegenPredictor { } } else { - String packageName = ((JetFile) declaration.getContainingFile()).getPackageName(); - if (packageName == null) { - return null; - } + FqName packageFqName = ((JetFile) declaration.getContainingFile()).getPackageFqName(); if (declaration instanceof JetNamedFunction) { - JvmClassName packageClass = JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(new FqName(packageName))); + JvmClassName packageClass = JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(packageFqName)); Name name = ((JetNamedFunction) declaration).getNameAsName(); return name == null ? null : packageClass.getInternalName() + "$" + name.asString(); } - parentInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageName).getInternalName(); + parentInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageFqName).getInternalName(); } if (declaration instanceof JetClassObject) { diff --git a/compiler/builtins-serializer/src/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/BuiltInsSerializer.kt index 91d29e470a4..27bd596864c 100644 --- a/compiler/builtins-serializer/src/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/BuiltInsSerializer.kt @@ -82,8 +82,9 @@ public class BuiltInsSerializer(val out: PrintStream?) { System.err.println("Could not make directories: " + destDir) } - for (fqName in ContainerUtil.mapNotNull(files) { it?.getPackageName() }.toSet()) { - serializePackage(module, FqName(fqName), destDir) + files.map { it.getPackageFqName() }.toSet().forEach { + fqName -> + serializePackage(module, fqName, destDir) } out?.println("Total bytes written: $totalSize to $totalFiles files") diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java index 83c775c574b..7daea3afb44 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java @@ -42,7 +42,6 @@ import org.jetbrains.jet.config.CommonConfigurationKeys; import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.ScriptNameUtil; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; @@ -170,7 +169,7 @@ public class KotlinToJVMBytecodeCompiler { // more than one main return null; } - FqName fqName = JetPsiUtil.getFQName(file); + FqName fqName = file.getPackageFqName(); mainClass = PackageClassUtils.getPackageClassFqName(fqName); } } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java index cdad0f6c4ec..306fda6b5f9 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java @@ -48,7 +48,6 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ScriptDescriptor; import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilderDummy; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.psi.JetScript; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; @@ -362,7 +361,7 @@ public class ReplInterpreter { state.beforeCompile(); KotlinCodegenFacade.generatePackage( state, - JetPsiUtil.getFQName((JetFile) script.getContainingFile()), + ((JetFile) script.getContainingFile()).getPackageFqName(), Collections.singleton((JetFile) script.getContainingFile()), errorHandler); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetFilesProvider.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetFilesProvider.java index c3b2ec8a4fa..3df8bda668e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetFilesProvider.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetFilesProvider.java @@ -25,7 +25,6 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Collection; @@ -53,12 +52,12 @@ public abstract class JetFilesProvider { private final FqName name; public SameJetFilePredicate(JetFile file) { - this.name = JetPsiUtil.getFQName(file); + this.name = file.getPackageFqName(); } @Override public boolean apply(PsiFile psiFile) { - return JetPsiUtil.getFQName((JetFile) psiFile).equals(name); + return ((JetFile) psiFile).getPackageFqName().equals(name); } } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java index f8284841202..964c605cd3f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java @@ -198,7 +198,7 @@ public class JetClass extends JetTypeParameterListOwnerStub imp } PsiFile file = getContainingFile(); if (!(file instanceof JetFile)) return null; - String fileQualifiedName = ((JetFile) file).getPackageDirective().getQualifiedName(); + String fileQualifiedName = ((JetFile) file).getPackageFqName().asString(); if (!fileQualifiedName.isEmpty()) { parts.add(fileQualifiedName); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java index 61b076205e9..3f79c56022e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java @@ -25,11 +25,11 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiClassOwner; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.plugin.JetFileType; import org.jetbrains.jet.plugin.JetLanguage; @@ -92,23 +92,32 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer, Jet return null; } - // scripts have no package directive + // scripts have no package directive, all other files must have package directives @Nullable public JetPackageDirective getPackageDirective() { ASTNode ast = getNode().findChildByType(JetNodeTypes.PACKAGE_DIRECTIVE); return ast != null ? (JetPackageDirective) ast.getPsi() : null; } + @Deprecated // getPackageFqName should be used instead @Override - @Nullable + @NotNull public String getPackageName() { + return getPackageFqName().asString(); + } + + @NotNull + public FqName getPackageFqName() { PsiJetFileStub stub = (PsiJetFileStub) getStub(); if (stub != null) { - return stub.getPackageName(); + return stub.getPackageFqName(); } - JetPackageDirective directive = getPackageDirective(); - return directive != null ? directive.getQualifiedName() : null; + JetPackageDirective packageDirective = getPackageDirective(); + if (packageDirective == null) { + return FqName.ROOT; + } + return packageDirective.getFqName(); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java index c0d3c5ecfef..64602cb5a0a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java @@ -102,6 +102,6 @@ abstract class JetNamedDeclarationStub extends J if (stub != null) { return stub.getFqName(); } - return JetPsiUtil.getFQName(this); + return JetNamedDeclarationUtil.getFQName(this); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationUtil.java new file mode 100644 index 00000000000..c98ad0440e6 --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationUtil.java @@ -0,0 +1,87 @@ +/* + * Copyright 2010-2014 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.psi; + +import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiTreeUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; +import org.jetbrains.jet.lang.resolve.name.Name; + +public final class JetNamedDeclarationUtil { + @Nullable + public static FqNameUnsafe getUnsafeFQName(@NotNull JetNamedDeclaration namedDeclaration) { + FqName fqName = namedDeclaration.getFqName(); + return fqName != null ? fqName.toUnsafe() : null; + } + + @Nullable + //NOTE: use JetNamedDeclaration#getFqName instead + /*package private*/ static FqName getFQName(@NotNull JetNamedDeclaration namedDeclaration) { + Name name = namedDeclaration.getNameAsName(); + if (name == null) { + return null; + } + + FqName parentFqName = getParentFqName(namedDeclaration); + + if (parentFqName == null) { + return null; + } + + return parentFqName.child(name); + } + + @Nullable + public static FqName getParentFqName(@NotNull JetNamedDeclaration namedDeclaration) { + PsiElement parent = namedDeclaration.getParent(); + if (parent instanceof JetClassBody) { + // One nesting to JetClassBody doesn't affect to qualified name + parent = parent.getParent(); + } + + if (parent instanceof JetFile) { + return ((JetFile) parent).getPackageFqName(); + } + else if (parent instanceof JetNamedFunction || parent instanceof JetClass) { + return getFQName((JetNamedDeclaration) parent); + } + else if (namedDeclaration instanceof JetParameter) { + JetClass constructorClass = JetPsiUtil.getClassIfParameterIsProperty((JetParameter) namedDeclaration); + if (constructorClass != null) { + return getFQName(constructorClass); + } + } + else if (parent instanceof JetObjectDeclaration) { + if (parent.getParent() instanceof JetClassObject) { + JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(parent, JetClassOrObject.class); + if (classOrObject != null) { + return getFQName(classOrObject); + } + } + else { + return getFQName((JetNamedDeclaration) parent); + } + } + return null; + } + + private JetNamedDeclarationUtil() { + } +} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java index 98870b0fd48..f684693e762 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java @@ -21,7 +21,10 @@ import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.intellij.lang.ASTNode; import com.intellij.openapi.util.Condition; -import com.intellij.psi.*; +import com.intellij.psi.PsiComment; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.impl.source.codeStyle.CodeEditUtil; import com.intellij.psi.tree.IElementType; @@ -189,68 +192,6 @@ public class JetPsiUtil { } } - @NotNull - public static FqName getFQName(@NotNull JetFile file) { - JetPackageDirective directive = file.getPackageDirective(); - return directive != null ? directive.getFqName() : FqName.ROOT; - } - - @Nullable - public static FqNameUnsafe getUnsafeFQName(@NotNull JetNamedDeclaration namedDeclaration) { - FqName fqName = getFQName(namedDeclaration); - return fqName != null ? fqName.toUnsafe() : null; - } - - @Nullable - public static FqName getFQName(@NotNull JetNamedDeclaration namedDeclaration) { - Name name = namedDeclaration.getNameAsName(); - if (name == null) { - return null; - } - - FqName parentFqName = getParentFqName(namedDeclaration); - - if (parentFqName == null) { - return null; - } - - return parentFqName.child(name); - } - - @Nullable - public static FqName getParentFqName(@NotNull JetNamedDeclaration namedDeclaration) { - PsiElement parent = namedDeclaration.getParent(); - if (parent instanceof JetClassBody) { - // One nesting to JetClassBody doesn't affect to qualified name - parent = parent.getParent(); - } - - if (parent instanceof JetFile) { - return getFQName((JetFile) parent); - } - else if (parent instanceof JetNamedFunction || parent instanceof JetClass) { - return getFQName((JetNamedDeclaration) parent); - } - else if (namedDeclaration instanceof JetParameter) { - JetClass constructorClass = getClassIfParameterIsProperty((JetParameter) namedDeclaration); - if (constructorClass != null) { - return getFQName(constructorClass); - } - } - else if (parent instanceof JetObjectDeclaration) { - if (parent.getParent() instanceof JetClassObject) { - JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(parent, JetClassOrObject.class); - if (classOrObject != null) { - return getFQName(classOrObject); - } - } - else { - return getFQName((JetNamedDeclaration) parent); - } - } - return null; - } - /** @return null iff the tye has syntactic errors */ @Nullable public static FqName toQualifiedName(@NotNull JetUserType userType) { @@ -889,21 +830,6 @@ public class JetPsiUtil { return null; } - public static NavigatablePsiElement getPackageReference(@NotNull JetFile file, int partIndex) { - JetPackageDirective directive = file.getPackageDirective(); - if (directive == null) { - throw new IllegalArgumentException("Should be called only for files with package directive: " + file); - } - - List names = directive.getPackageNames(); - if (!(0 <= partIndex && partIndex < names.size())) { - throw new IndexOutOfBoundsException(String.format("%s index for file with directive %s is out of range", partIndex, - directive.getText())); - } - - return names.get(partIndex); - } - // Delete given element and all the elements separating it from the neighboring elements of the same class public static void deleteElementWithDelimiters(@NotNull PsiElement element) { PsiElement paramBefore = PsiTreeUtil.getPrevSiblingOfType(element, element.getClass()); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java index 5a3f1309750..e57b2800997 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java @@ -17,9 +17,12 @@ package org.jetbrains.jet.lang.psi.stubs; import com.intellij.psi.stubs.PsiFileStub; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.resolve.name.FqName; public interface PsiJetFileStub extends PsiFileStub { - String getPackageName(); + @NotNull + FqName getPackageFqName(); boolean isScript(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java index 3b2a80bb2b2..f9bfb0d4595 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java @@ -65,16 +65,16 @@ public class JetFileElementType extends IStubFileElementType { @Override public void serialize(@NotNull PsiJetFileStub stub, @NotNull StubOutputStream dataStream) throws IOException { - dataStream.writeName(stub.getPackageName()); + dataStream.writeName(stub.getPackageFqName().asString()); dataStream.writeBoolean(stub.isScript()); } @NotNull @Override public PsiJetFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException { - StringRef packName = dataStream.readName(); + StringRef packageFqNameAsString = dataStream.readName(); boolean isScript = dataStream.readBoolean(); - return new PsiJetFileStubImpl(null, packName, isScript); + return new PsiJetFileStubImpl(null, packageFqNameAsString, isScript); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java index 4ca8167c0ae..ee1833ea839 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java @@ -31,6 +31,6 @@ public class JetFileStubBuilder extends DefaultStubBuilder { } JetFile jetFile = (JetFile) file; - return new PsiJetFileStubImpl(jetFile, jetFile.getPackageName(), jetFile.isScript()); + return new PsiJetFileStubImpl(jetFile, jetFile.getPackageFqName().asString(), jetFile.isScript()); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java index c46c0e1d84a..753a1f8f729 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java @@ -24,9 +24,11 @@ import com.intellij.psi.stubs.PsiFileStubImpl; import com.intellij.psi.stubs.StubElement; import com.intellij.psi.tree.IStubFileElementType; import com.intellij.util.io.StringRef; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub; import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes; +import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.List; @@ -35,19 +37,20 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl implements PsiJ private final StringRef packageName; private final boolean isScript; - public PsiJetFileStubImpl(JetFile jetFile, StringRef packageName, boolean isScript) { + public PsiJetFileStubImpl(JetFile jetFile, @NotNull StringRef packageName, boolean isScript) { super(jetFile); this.packageName = packageName; this.isScript = isScript; } - public PsiJetFileStubImpl(JetFile jetFile, String packageName, boolean isScript) { + public PsiJetFileStubImpl(JetFile jetFile, @NotNull String packageName, boolean isScript) { this(jetFile, StringRef.fromString(packageName), isScript); } @Override - public String getPackageName() { - return StringRef.toString(packageName); + @NotNull + public FqName getPackageFqName() { + return new FqName(StringRef.toString(packageName)); } @Override @@ -62,15 +65,7 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl implements PsiJ @Override public String toString() { - StringBuilder builder = new StringBuilder(); - - builder.append("PsiJetFileStubImpl["); - - - builder.append("package=").append(getPackageName()); - builder.append("]"); - - return builder.toString(); + return "PsiJetFileStubImpl[" + "package=" + getPackageFqName().asString() + "]"; } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java index a146fa1b2e9..0e93e86ecc6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java @@ -76,7 +76,7 @@ public class ImportsResolver { private void processImports(@NotNull TopDownAnalysisContext c, @NotNull LookupMode lookupMode) { for (JetFile file : c.getFiles()) { WritableScope fileScope = c.getFileScopes().get(file); - processImportsInFile(lookupMode, fileScope, Lists.newArrayList(file.getImportDirectives()), JetPsiUtil.getFQName(file).isRoot()); + processImportsInFile(lookupMode, fileScope, Lists.newArrayList(file.getImportDirectives()), file.getPackageFqName().isRoot()); } for (JetScript script : c.getScripts().keySet()) { WritableScope scriptScope = c.getScriptScopes().get(script); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java index 7b61cabec2e..1ae03bc9515 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java @@ -104,8 +104,7 @@ public class ScriptHeaderResolver { public void processScriptHierarchy(@NotNull TopDownAnalysisContext c, @NotNull JetScript script, @NotNull JetScope outerScope) { JetFile file = (JetFile) script.getContainingFile(); - JetPackageDirective packageDirective = file.getPackageDirective(); - FqName fqName = packageDirective != null ? new FqName(packageDirective.getQualifiedName()) : FqName.ROOT; + FqName fqName = file.getPackageFqName(); PackageFragmentDescriptor ns = packageFragmentProvider.getOrCreateFragment(fqName); Integer priority = script.getUserData(PRIORITY_KEY); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index ede7a3ecc78..16963467be8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -154,7 +154,7 @@ public class TopDownAnalyzer { private void registerTopLevelFqName(@NotNull JetNamedDeclaration declaration, @NotNull DeclarationDescriptor descriptor) { if (DescriptorUtils.isTopLevelDeclaration(descriptor)) { - FqName fqName = JetPsiUtil.getFQName(declaration); + FqName fqName = declaration.getFqName(); if (fqName != null) { topLevelFqNames.put(fqName, declaration); } @@ -190,7 +190,7 @@ public class TopDownAnalyzer { DescriptorResolver.resolvePackageHeader(packageDirective, moduleDescriptor, trace); registerDeclarations(file.getDeclarations()); - topLevelFqNames.put(JetPsiUtil.getFQName(file), packageDirective); + topLevelFqNames.put(file.getPackageFqName(), packageDirective); } resolveAndCheckImports(file, resolveSession); } @@ -330,7 +330,7 @@ public class TopDownAnalyzer { Set scriptFqNames = Sets.newHashSet(); for (JetFile file : c.getFileScopes().keySet()) { if (file.isScript()) { - scriptFqNames.add(JetPsiUtil.getFQName(file)); + scriptFqNames.add(file.getPackageFqName()); } } for (MutablePackageFragmentDescriptor fragment : packageFragmentProvider.getAllFragments()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index 9efd01dbfd7..da49c82fa02 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -371,7 +371,7 @@ public class TypeHierarchyResolver { createClassDescriptorForSingleton(declaration, JetPsiUtil.safeName(declaration.getName()), ClassKind.OBJECT); owner.addClassifierDescriptor(descriptor); - trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getUnsafeFQName(declaration), descriptor); + trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetNamedDeclarationUtil.getUnsafeFQName(declaration), descriptor); descriptor.getBuilder().setClassObjectDescriptor(createSyntheticClassObject(descriptor)); } @@ -476,7 +476,7 @@ public class TypeHierarchyResolver { MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor( containingDeclaration, outerScope, kind, isInner, JetPsiUtil.safeName(klass.getName())); c.getClasses().put(klass, mutableClassDescriptor); - trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getUnsafeFQName(klass), mutableClassDescriptor); + trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetNamedDeclarationUtil.getUnsafeFQName(klass), mutableClassDescriptor); createClassObjectForEnumClass(mutableClassDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSessionUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSessionUtils.java index 078b4bcd7e6..8f4255c1b9d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSessionUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSessionUtils.java @@ -25,7 +25,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor; import org.jetbrains.jet.lang.psi.JetNamedDeclaration; -import org.jetbrains.jet.lang.psi.JetPsiUtil; +import org.jetbrains.jet.lang.psi.JetNamedDeclarationUtil; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.NamePackage; @@ -154,7 +154,7 @@ public class ResolveSessionUtils { @Nullable public static FqName safeFqNameForLazyResolve(@NotNull JetNamedDeclaration declaration) { //NOTE: should only create special names for package level declarations, so we can safely rely on real fq name for parent - FqName parentFqName = JetPsiUtil.getParentFqName(declaration); + FqName parentFqName = JetNamedDeclarationUtil.getParentFqName(declaration); return parentFqName != null ? parentFqName.child(safeNameForLazyResolve(declaration)) : null; } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java index 0969a503d91..83443ca6353 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java @@ -73,7 +73,7 @@ public class ScopeProvider { @NotNull public JetScope getFileScope(@NotNull JetFile file) { - return new ChainedScope(resolveSession.getPackageFragment(JetPsiUtil.getFQName(file)), + return new ChainedScope(resolveSession.getPackageFragment(file.getPackageFqName()), "File scope: " + file.getName(), getFilePackageDescriptor(file).getMemberScope(), JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor()), @@ -108,12 +108,7 @@ public class ScopeProvider { @NotNull private PackageViewDescriptor getFilePackageDescriptor(JetFile file) { - JetPackageDirective directive = file.getPackageDirective(); - if (directive == null) { - throw new IllegalArgumentException("Scripts are not supported: " + file.getName()); - } - - FqName fqName = new FqName(directive.getQualifiedName()); + FqName fqName = file.getPackageFqName(); PackageViewDescriptor packageDescriptor = resolveSession.getModuleDescriptor().getPackage(fqName); if (packageDescriptor == null) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/JetClassOrObjectInfo.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/JetClassOrObjectInfo.java index 039fe1aedb4..414510f54d2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/JetClassOrObjectInfo.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/JetClassOrObjectInfo.java @@ -61,8 +61,7 @@ public abstract class JetClassOrObjectInfo implement PsiFile file = element.getContainingFile(); if (file instanceof JetFile) { JetFile jetFile = (JetFile) file; - JetPackageDirective directive = jetFile.getPackageDirective(); - return directive != null ? directive.getFqName() : FqName.ROOT; + return jetFile.getPackageFqName(); } throw new IllegalArgumentException("Not in a JetFile: " + element); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java index 36365a43846..17f9c8eab1f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java @@ -59,12 +59,7 @@ public class FileBasedDeclarationProviderFactory extends AbstractDeclarationProv private static Index computeFilesByPackage(@NotNull Collection files) { Index index = new Index(); for (JetFile file : files) { - JetPackageDirective directive = file.getPackageDirective(); - if (directive == null) { - throw new IllegalArgumentException("Scripts are not supported"); - } - - FqName packageFqName = new FqName(directive.getQualifiedName()); + FqName packageFqName = file.getPackageFqName(); addMeAndParentPackages(index, packageFqName); index.filesByPackage.put(packageFqName, file); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java index e5281d23bf2..eab54602b9c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java @@ -56,7 +56,7 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD protected void doCreateIndex(@NotNull Index index) { for (JetFile file : packageFiles) { for (JetDeclaration declaration : file.getDeclarations()) { - assert fqName.asString().equals(file.getPackageName()) : "Files declaration utils contains file with invalid package"; + assert fqName.equals(file.getPackageFqName()) : "Files declaration utils contains file with invalid package"; index.putToIndex(declaration); } } diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java index 85b7179d10b..2045a12af71 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java @@ -181,7 +181,7 @@ public class KotlinJavaFileStubProvider implements Cache @NotNull @Override public FqName getPackageFqName() { - return JetPsiUtil.getFQName(getFile()); + return getFile().getPackageFqName(); } @Override diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java index 33d68b13f6c..48d76a0f3d7 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinLightClassForExplicitDeclaration.java @@ -288,7 +288,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC @NotNull @Override public String getPackageName() { - return JetPsiUtil.getFQName((JetFile) classOrObject.getContainingFile()).asString(); + return ((JetFile) classOrObject.getContainingFile()).getPackageFqName().asString(); } @NotNull diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/LightClassUtil.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/LightClassUtil.java index cc6db84fc2d..8331e219edf 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/LightClassUtil.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/LightClassUtil.java @@ -234,12 +234,9 @@ public class LightClassUtil { if (parent instanceof JetFile) { // top-level declaration - FqName fqName = getPackageClassNameForFile((JetFile) parent); - if (fqName != null) { - Project project = declaration.getProject(); - - return JavaElementFinder.getInstance(project).findClass(fqName.asString(), GlobalSearchScope.allScope(project)); - } + FqName fqName = PackageClassUtils.getPackageClassFqName(((JetFile) parent).getPackageFqName()); + Project project = declaration.getProject(); + return JavaElementFinder.getInstance(project).findClass(fqName.asString(), GlobalSearchScope.allScope(project)); } else if (parent instanceof JetClassBody) { assert parent.getParent() instanceof JetClassOrObject; @@ -249,12 +246,6 @@ public class LightClassUtil { return null; } - @Nullable - private static FqName getPackageClassNameForFile(@NotNull JetFile jetFile) { - String packageName = jetFile.getPackageName(); - return packageName == null ? null : PackageClassUtils.getPackageClassFqName(new FqName(packageName)); - } - @NotNull private static PropertyAccessorsPsiMethods extractPropertyAccessors( @NotNull JetDeclaration jetDeclaration, diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java index 740f0187d33..a229e0778fe 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java @@ -30,7 +30,6 @@ import org.jetbrains.asm4.FieldVisitor; import org.jetbrains.asm4.MethodVisitor; import org.jetbrains.jet.codegen.AbstractClassBuilder; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -81,7 +80,7 @@ public class StubClassBuilder extends AbstractClassBuilder { super.defineClass(origin, version, access, name, signature, superName, interfaces); if (origin instanceof JetFile) { - FqName packageName = JetPsiUtil.getFQName((JetFile) origin); + FqName packageName = ((JetFile) origin).getPackageFqName(); String packageClassName = PackageClassUtils.getPackageClassName(packageName); if (name.equals(packageClassName) || name.endsWith("/" + packageClassName)) { diff --git a/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java index 2bc226d079f..c051b873ffe 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/AnnotationGenTest.java @@ -20,7 +20,6 @@ import com.google.common.collect.Sets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.ConfigurationKind; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import java.lang.annotation.*; @@ -40,7 +39,7 @@ public class AnnotationGenTest extends CodegenTestCase { } private Class getPackageClass(@NotNull ClassLoader loader) throws ClassNotFoundException { - return loader.loadClass(PackageClassUtils.getPackageClassName(JetPsiUtil.getFQName(myFiles.getPsiFile()))); + return loader.loadClass(PackageClassUtils.getPackageClassName(myFiles.getPsiFile().getPackageFqName())); } private Class getPackageSrcClass(@NotNull ClassLoader loader) throws ClassNotFoundException { diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 71c1f851f63..e95e388234b 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -36,7 +36,6 @@ import org.jetbrains.jet.OutputFile; import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.utils.UtilsPackage; @@ -169,7 +168,7 @@ public abstract class CodegenTestCase extends UsefulTestCase { @NotNull protected Class generatePackageClass() { - FqName packageFqName = JetPsiUtil.getFQName(myFiles.getPsiFile()); + FqName packageFqName = myFiles.getPsiFile().getPackageFqName(); return generateClass(getPackageClassFqName(packageFqName).asString()); } diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java index 8dd73ecff85..bf399cd1e43 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -25,7 +25,6 @@ import org.jetbrains.jet.TestJdkKind; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.codegen.CodegenTestCase; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.utils.UtilsPackage; import java.io.File; @@ -92,7 +91,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { private void blackBox() { // If there are many files, the first of them should contain the 'box(): String' function JetFile firstFile = myFiles.getPsiFiles().get(0); - String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString(); + String fqName = getPackageClassFqName(firstFile.getPackageFqName()).asString(); Class aClass = generateClass(fqName); try { diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java index 3a5b6274c95..fdeb7644ff1 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java @@ -71,7 +71,7 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe psiFile.accept(new JetVisitorVoid() { @Override public void visitJetFile(@NotNull JetFile file) { - FqName fqName = file.getPackageDirective().getFqName(); + FqName fqName = file.getPackageFqName(); if (!fqName.isRoot()) { PackageViewDescriptor packageDescriptor = lazyModule.getPackage(fqName); descriptors.add(packageDescriptor); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java index 2451cd9e629..1cf0f53096d 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java @@ -37,6 +37,7 @@ import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.SpecialNames; @@ -90,15 +91,9 @@ public class LazyResolveTestUtil { public static Set getTopLevelPackagesFromFileList(@NotNull List files) { Set shortNames = Sets.newLinkedHashSet(); for (JetFile file : files) { - JetPackageDirective directive = file.getPackageDirective(); - if (directive != null) { - List names = directive.getPackageNames(); - Name name = names.isEmpty() ? SpecialNames.ROOT_PACKAGE : names.get(0).getReferencedNameAsName(); - shortNames.add(name); - } - else { - throw new IllegalStateException("Scripts are not supported: " + file.getName()); - } + List packageFqNameSegments = file.getPackageFqName().pathSegments(); + Name name = packageFqNameSegments.isEmpty() ? SpecialNames.ROOT_PACKAGE : packageFqNameSegments.get(0); + shortNames.add(name); } return shortNames; } diff --git a/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java b/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java index d8d0f4adfac..df7676d0763 100644 --- a/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java +++ b/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java @@ -97,7 +97,7 @@ public class DescriptorRendererTest extends JetLiteFixture { final BindingContext bindingContext = analyzeExhaust.getBindingContext(); final List descriptors = new ArrayList(); - FqName fqName = psiFile.getPackageDirective().getFqName(); + FqName fqName = psiFile.getPackageFqName(); if (!fqName.isRoot()) { PackageViewDescriptor packageDescriptor = analyzeExhaust.getModuleDescriptor().getPackage(fqName); descriptors.add(packageDescriptor); diff --git a/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java b/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java index 9396ec21f1d..a3581114b44 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java +++ b/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java @@ -259,10 +259,7 @@ public class JetShortNamesCache extends PsiShortNamesCache { PsiFile containingFile = jetNamedFunction.getContainingFile(); if (containingFile instanceof JetFile) { JetFile jetFile = (JetFile) containingFile; - String packageName = jetFile.getPackageName(); - if (packageName != null) { - affectedPackages.add(new FqName(packageName)); - } + affectedPackages.add(jetFile.getPackageFqName()); } } diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java b/idea/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java index eeac825a65d..c22ceee744b 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java +++ b/idea/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java @@ -20,11 +20,9 @@ import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.libraries.LibraryUtil; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -122,7 +120,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport // Scripts are not supported if (file.isScript()) continue; - FqName packageFqName = JetPsiUtil.getFQName(file); + FqName packageFqName = file.getPackageFqName(); // make sure we create a package descriptor PackageViewDescriptor packageDescriptor = session.getModuleDescriptor().getPackage(packageFqName); diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java index 9171a9ac16b..ee4fc442177 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java +++ b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java @@ -190,7 +190,7 @@ public class JetPositionManager implements PositionManager { } private JetTypeMapper prepareTypeMapper(final JetFile file) { - FqName fqName = JetPsiUtil.getFQName(file); + FqName fqName = file.getPackageFqName(); CachedValue value = myTypeMappers.get(fqName); if(value == null) { value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider() { @@ -248,7 +248,7 @@ public class JetPositionManager implements PositionManager { @TestOnly public void addTypeMapper(JetFile file, final JetTypeMapper typeMapper) { - FqName fqName = JetPsiUtil.getFQName(file); + FqName fqName = file.getPackageFqName(); CachedValue value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider() { @Override public Result compute() { diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java index 617f0cc2f48..8d7e055f0ec 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java @@ -376,11 +376,9 @@ public class ResolveElementCache { if (expression.getParent() instanceof JetDotQualifiedExpression) { JetExpression element = ((JetDotQualifiedExpression) expression.getParent()).getReceiverExpression(); - String name = ((JetFile) expression.getContainingFile()).getPackageName(); + FqName fqName = ((JetFile) expression.getContainingFile()).getPackageFqName(); - PackageViewDescriptor filePackage = name != null - ? resolveSession.getModuleDescriptor().getPackage(new FqName(name)) - : rootPackage; + PackageViewDescriptor filePackage = resolveSession.getModuleDescriptor().getPackage(fqName); assert filePackage != null : "File package should be already resolved and be found"; JetScope scope = filePackage.getMemberScope(); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java index 72b915b7cf0..714017e7593 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java @@ -674,7 +674,7 @@ public class CreateFunctionFromUsageFix extends CreateFromUsageFixBase { JetScope scope; if (isExtension) { - scope = currentFileModule.getPackage(JetPsiUtil.getFQName(currentFile)).getMemberScope(); + scope = currentFileModule.getPackage(currentFile.getPackageFqName()).getMemberScope(); } else { scope = ((ClassDescriptorWithResolutionScopes) ownerClassDescriptor).getScopeForMemberDeclarationResolution(); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java index 9878dd5a008..a05165158f1 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java @@ -127,7 +127,7 @@ public class ImportInsertHelper { } // There's no need to import a declaration from the package of current file - if (JetPsiUtil.getFQName(jetFile).equals(importPath.fqnPart().parent())) { + if (jetFile.getPackageFqName().equals(importPath.fqnPart().parent())) { return true; } } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt index 063f3f5bf0c..60356147c57 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt @@ -77,7 +77,7 @@ public class MoveKotlinFileHandler : MoveFileHandler() { } private fun JetFile.packageMatchesDirectory(): Boolean { - return getPackageName() == getParent()?.getPackage()?.getQualifiedName() + return getPackageFqName().asString() == getParent()?.getPackage()?.getQualifiedName() } override fun canProcessElement(element: PsiFile?): Boolean { @@ -91,7 +91,7 @@ public class MoveKotlinFileHandler : MoveFileHandler() { if (newPackage != null) { file.putCopyableUserData( PACKAGE_NAME_INFO_KEY, - PackageNameInfo(JetPsiUtil.getFQName(file), FqName(newPackage.getQualifiedName())) + PackageNameInfo(file.getPackageFqName(), FqName(newPackage.getQualifiedName())) ) } } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt index 4478e27acb8..fdc4aa22818 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt @@ -239,10 +239,9 @@ public class MoveKotlinTopLevelDeclarationsProcessor(project: Project, val optio assert(targetFile is JetFile, "Couldn't create Koltin file for: ${declaration.getClass()}: ${declaration.getText()}") - val newPackage = (targetFile as JetFile).getPackageName() - assert (newPackage != null, "${targetFile.getClass()}: ${targetFile.getText()}") + val newPackageFqName = (targetFile as JetFile).getPackageFqName() - val packageNameInfo = PackageNameInfo(JetPsiUtil.getFQName(file!!), FqName(newPackage!!)) + val packageNameInfo = PackageNameInfo(file!!.getPackageFqName(), newPackageFqName) declaration.updateInternalReferencesOnPackageNameChange(packageNameInfo, ShorteningMode.NO_SHORTENING) val newElement = targetFile.add(declaration) as JetNamedDeclaration diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java index e25871e75e0..698cb3c467d 100644 --- a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java +++ b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java @@ -29,7 +29,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.analyzer.AnalyzerFacade; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -73,7 +72,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im mySourceElement = file; - FqName startClassFQName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(file)); + FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName()); return createConfigurationByQName(module, configurationContext, startClassFQName); } @@ -119,7 +118,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im return null; } - FqName startClassFQName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(file)); + FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName()); for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) { if (existingConfiguration.getType() instanceof JetRunConfigurationType) { diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java b/idea/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java index 52c9a961426..1f1a9d51579 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java @@ -23,7 +23,6 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.NamePackage; @@ -41,7 +40,7 @@ public final class PackageIndexUtil { Set result = Sets.newHashSet(); for (JetFile file : files) { - FqName fqName = JetPsiUtil.getFQName(file); + FqName fqName = file.getPackageFqName(); assert NamePackage.isSubpackageOf(fqName, packageFqName) : "Registered package is not a subpackage of actually declared package:\n" + @@ -66,7 +65,7 @@ public final class PackageIndexUtil { return ContainerUtil.filter(files, new Condition() { @Override public boolean value(JetFile file) { - return packageFqName.equals(JetPsiUtil.getFQName(file)); + return packageFqName.equals(file.getPackageFqName()); } }); } diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java index 00e26f02b3e..d9676f2f133 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java @@ -29,15 +29,14 @@ public class StubIndexServiceImpl implements StubIndexService { @Override public void indexFile(PsiJetFileStub stub, IndexSink sink) { - String packageName = stub.getPackageName(); - FqName fqName = new FqName(packageName == null ? "" : packageName); + FqName packageFqName = stub.getPackageFqName(); while (true) { - sink.occurrence(JetAllPackagesIndex.getInstance().getKey(), fqName.asString()); - if (fqName.isRoot()) { + sink.occurrence(JetAllPackagesIndex.getInstance().getKey(), packageFqName.asString()); + if (packageFqName.isRoot()) { return; } - fqName = fqName.parent(); + packageFqName = packageFqName.parent(); } } @@ -101,10 +100,8 @@ public class StubIndexServiceImpl implements StubIndexService { StubElement parentStub = stub.getParentStub(); if (parentStub instanceof PsiJetFileStub) { PsiJetFileStub jetFileStub = (PsiJetFileStub) parentStub; - String packageName = jetFileStub.getPackageName(); - if (packageName != null) { - sink.occurrence(JetClassByPackageIndex.getInstance().getKey(), packageName); - } + FqName packageFqName = jetFileStub.getPackageFqName(); + sink.occurrence(JetClassByPackageIndex.getInstance().getKey(), packageFqName.asString()); } } diff --git a/idea/src/org/jetbrains/jet/plugin/util/DebuggerUtils.java b/idea/src/org/jetbrains/jet/plugin/util/DebuggerUtils.java index 6af0207d270..aa1a783e7ea 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/DebuggerUtils.java +++ b/idea/src/org/jetbrains/jet/plugin/util/DebuggerUtils.java @@ -24,7 +24,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.codegen.binding.PsiCodegenPredictor; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.java.JetFilesProvider; import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -53,7 +52,7 @@ public class DebuggerUtils { public boolean apply(@Nullable JetFile file) { return file != null && file.getName().equals(fileName) - && JetPsiUtil.getFQName(file).equals(packageFqName); + && file.getPackageFqName().equals(packageFqName); } }); diff --git a/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java b/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java index 6884af5af87..527af75b93a 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java @@ -23,7 +23,6 @@ import org.jetbrains.jet.asJava.KotlinLightClassForExplicitDeclaration; import org.jetbrains.jet.asJava.KotlinLightClassForPackage; import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.NamePackage; import org.jetbrains.jet.lexer.JetTokens; @@ -46,8 +45,8 @@ public class JetPsiHeuristicsUtil { // The class is declared private in the targetPackage // It is visible in this package and all of its subpackages JetFile targetFile = (JetFile) classOrObject.getContainingFile(); - FqName targetPackage = JetPsiUtil.getFQName(targetFile); - FqName fromPackage = JetPsiUtil.getFQName(fromFile); + FqName targetPackage = targetFile.getPackageFqName(); + FqName fromPackage = fromFile.getPackageFqName(); return NamePackage.isSubpackageOf(fromPackage, targetPackage); } diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.kt b/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.kt index de49a392ed7..1b7df5f6d97 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.kt +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.kt @@ -161,7 +161,7 @@ public abstract class AbstractRenameTest : MultiFileTestCase() { val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!! val jetFile = PsiDocumentManager.getInstance(context.project).getPsiFile(document) as JetFile - val fileFqn = jetFile.getPackageDirective()!!.getFqName() + val fileFqn = jetFile.getPackageFqName() Assert.assertTrue("File '${mainFilePath}' should have package containing ${fqn}", fileFqn.isSubpackageOf(fqn)) val packageSegment = jetFile.getPackageDirective()!!.getPackageNames()[fqn.pathSegments().size - 1]