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
@@ -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<FqName, JetFile> packageFqNameToFiles = new MultiMap<FqName, JetFile>();
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<FqName, Collection<JetFile>> entry : packageFqNameToFiles.entrySet()) {
@@ -247,14 +247,14 @@ public class PackageCodegen extends GenerationStateAware {
private static void checkAllFilesHaveSamePackage(Collection<JetFile> 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();
}
}
@@ -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() {
@@ -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(
@@ -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();
@@ -237,7 +237,7 @@ public class CodegenBinding {
HashSet<FqName> names = new HashSet<FqName>();
for (JetFile file : files) {
if (!file.isScript()) {
names.add(JetPsiUtil.getFQName(file));
names.add(file.getPackageFqName());
}
}
@@ -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) {
@@ -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")
@@ -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);
}
}
@@ -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);
}
@@ -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);
}
}
}
@@ -198,7 +198,7 @@ public class JetClass extends JetTypeParameterListOwnerStub<PsiJetClassStub> 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);
}
@@ -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
@@ -102,6 +102,6 @@ abstract class JetNamedDeclarationStub<T extends PsiJetStubWithFqName> extends J
if (stub != null) {
return stub.getFqName();
}
return JetPsiUtil.getFQName(this);
return JetNamedDeclarationUtil.getFQName(this);
}
}
@@ -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() {
}
}
@@ -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 <code>null</code> 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<JetSimpleNameExpression> 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());
@@ -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<JetFile> {
String getPackageName();
@NotNull
FqName getPackageFqName();
boolean isScript();
}
@@ -65,16 +65,16 @@ public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
@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
@@ -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());
}
}
@@ -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<JetFile> 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<JetFile> 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
@@ -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);
@@ -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);
@@ -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<FqName> 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()) {
@@ -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);
@@ -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;
}
}
@@ -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) {
@@ -61,8 +61,7 @@ public abstract class JetClassOrObjectInfo<E extends JetClassOrObject> 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);
}
@@ -59,12 +59,7 @@ public class FileBasedDeclarationProviderFactory extends AbstractDeclarationProv
private static Index computeFilesByPackage(@NotNull Collection<JetFile> 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);
}
@@ -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);
}
}
@@ -181,7 +181,7 @@ public class KotlinJavaFileStubProvider<T extends WithFileStub> implements Cache
@NotNull
@Override
public FqName getPackageFqName() {
return JetPsiUtil.getFQName(getFile());
return getFile().getPackageFqName();
}
@Override
@@ -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
@@ -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,
@@ -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)) {
@@ -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 {
@@ -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());
}
@@ -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 {
@@ -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);
@@ -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<Name> getTopLevelPackagesFromFileList(@NotNull List<JetFile> files) {
Set<Name> shortNames = Sets.newLinkedHashSet();
for (JetFile file : files) {
JetPackageDirective directive = file.getPackageDirective();
if (directive != null) {
List<JetSimpleNameExpression> 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<Name> packageFqNameSegments = file.getPackageFqName().pathSegments();
Name name = packageFqNameSegments.isEmpty() ? SpecialNames.ROOT_PACKAGE : packageFqNameSegments.get(0);
shortNames.add(name);
}
return shortNames;
}
@@ -97,7 +97,7 @@ public class DescriptorRendererTest extends JetLiteFixture {
final BindingContext bindingContext = analyzeExhaust.getBindingContext();
final List<DeclarationDescriptor> descriptors = new ArrayList<DeclarationDescriptor>();
FqName fqName = psiFile.getPackageDirective().getFqName();
FqName fqName = psiFile.getPackageFqName();
if (!fqName.isRoot()) {
PackageViewDescriptor packageDescriptor = analyzeExhaust.getModuleDescriptor().getPackage(fqName);
descriptors.add(packageDescriptor);