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
This commit is contained in:
Pavel V. Talanov
2014-03-18 19:52:03 +04:00
parent 37538f9524
commit a1dbf221b3
53 changed files with 197 additions and 229 deletions
@@ -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());
}
}
@@ -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);
@@ -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<JetTypeMapper> value = myTypeMappers.get(fqName);
if(value == null) {
value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<JetTypeMapper>() {
@@ -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<JetTypeMapper> value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<JetTypeMapper>() {
@Override
public Result<JetTypeMapper> compute() {
@@ -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();
@@ -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();
@@ -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;
}
}
@@ -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()))
)
}
}
@@ -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
@@ -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) {
@@ -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<FqName> 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<JetFile>() {
@Override
public boolean value(JetFile file) {
return packageFqName.equals(JetPsiUtil.getFQName(file));
return packageFqName.equals(file.getPackageFqName());
}
});
}
@@ -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());
}
}
@@ -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);
}
});
@@ -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);
}
@@ -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]