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:
@@ -21,7 +21,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.asm4.Type;
|
import org.jetbrains.asm4.Type;
|
||||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.psi.JetScript;
|
||||||
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -50,7 +49,7 @@ public class KotlinCodegenFacade {
|
|||||||
MultiMap<FqName, JetFile> packageFqNameToFiles = new MultiMap<FqName, JetFile>();
|
MultiMap<FqName, JetFile> packageFqNameToFiles = new MultiMap<FqName, JetFile>();
|
||||||
for (JetFile file : state.getFiles()) {
|
for (JetFile file : state.getFiles()) {
|
||||||
if (file == null) throw new IllegalArgumentException("A null file given for compilation");
|
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()) {
|
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) {
|
private static void checkAllFilesHaveSamePackage(Collection<JetFile> packageFiles) {
|
||||||
FqName commonFqName = null;
|
FqName commonFqName = null;
|
||||||
for (JetFile file : packageFiles) {
|
for (JetFile file : packageFiles) {
|
||||||
FqName fqName = JetPsiUtil.getFQName(file);
|
FqName fqName = file.getPackageFqName();
|
||||||
if (commonFqName != null) {
|
if (commonFqName != null) {
|
||||||
if (!commonFqName.equals(fqName)) {
|
if (!commonFqName.equals(fqName)) {
|
||||||
throw new IllegalArgumentException("All files should have same package name");
|
throw new IllegalArgumentException("All files should have same package name");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
commonFqName = JetPsiUtil.getFQName(file);
|
commonFqName = file.getPackageFqName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -283,7 +283,7 @@ public class PackageCodegen extends GenerationStateAware {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static String getPackagePartInternalName(@NotNull JetFile file) {
|
public static String getPackagePartInternalName(@NotNull JetFile file) {
|
||||||
FqName packageFqName = JetPsiUtil.getFQName(file);
|
FqName packageFqName = file.getPackageFqName();
|
||||||
return getPackagePartType(getPackageClassFqName(packageFqName), file.getVirtualFile()).getInternalName();
|
return getPackagePartType(getPackageClassFqName(packageFqName), file.getVirtualFile()).getInternalName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public class PackagePartCodegen extends MemberCodegen {
|
|||||||
this.packagePartName = packagePartName;
|
this.packagePartName = packagePartName;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
descriptor = state.getBindingContext().get(BindingContext.FILE_TO_PACKAGE_FRAGMENT, jetFile);
|
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() {
|
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.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
|
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
@@ -136,7 +135,7 @@ public class SamWrapperCodegen extends ParentCodegenAwareImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getWrapperName(@NotNull JetFile containingFile) {
|
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();
|
String packageInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageClassFqName).getInternalName();
|
||||||
return packageInternalName + "$sam$" + samInterface.getName().asString() + "$" +
|
return packageInternalName + "$sam$" + samInterface.getName().asString() + "$" +
|
||||||
Integer.toHexString(CodegenUtil.getPathHashCode(containingFile.getVirtualFile()) * 31 + DescriptorUtils.getFqNameSafe(
|
Integer.toHexString(CodegenUtil.getPathHashCode(containingFile.getVirtualFile()) * 31 + DescriptorUtils.getFqNameSafe(
|
||||||
|
|||||||
+1
-1
@@ -148,7 +148,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
|
|||||||
nameStack.push(asmTypeForScriptPsi(bindingContext, file.getScript()).getInternalName());
|
nameStack.push(asmTypeForScriptPsi(bindingContext, file.getScript()).getInternalName());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nameStack.push(JvmClassName.byFqNameWithoutInnerClasses(JetPsiUtil.getFQName(file)).getInternalName());
|
nameStack.push(JvmClassName.byFqNameWithoutInnerClasses(file.getPackageFqName()).getInternalName());
|
||||||
}
|
}
|
||||||
file.acceptChildren(this);
|
file.acceptChildren(this);
|
||||||
nameStack.pop();
|
nameStack.pop();
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ public class CodegenBinding {
|
|||||||
HashSet<FqName> names = new HashSet<FqName>();
|
HashSet<FqName> names = new HashSet<FqName>();
|
||||||
for (JetFile file : files) {
|
for (JetFile file : files) {
|
||||||
if (!file.isScript()) {
|
if (!file.isScript()) {
|
||||||
names.add(JetPsiUtil.getFQName(file));
|
names.add(file.getPackageFqName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,18 +80,15 @@ public final class PsiCodegenPredictor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String packageName = ((JetFile) declaration.getContainingFile()).getPackageName();
|
FqName packageFqName = ((JetFile) declaration.getContainingFile()).getPackageFqName();
|
||||||
if (packageName == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (declaration instanceof JetNamedFunction) {
|
if (declaration instanceof JetNamedFunction) {
|
||||||
JvmClassName packageClass = JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(new FqName(packageName)));
|
JvmClassName packageClass = JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(packageFqName));
|
||||||
Name name = ((JetNamedFunction) declaration).getNameAsName();
|
Name name = ((JetNamedFunction) declaration).getNameAsName();
|
||||||
return name == null ? null : packageClass.getInternalName() + "$" + name.asString();
|
return name == null ? null : packageClass.getInternalName() + "$" + name.asString();
|
||||||
}
|
}
|
||||||
|
|
||||||
parentInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageName).getInternalName();
|
parentInternalName = JvmClassName.byFqNameWithoutInnerClasses(packageFqName).getInternalName();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (declaration instanceof JetClassObject) {
|
if (declaration instanceof JetClassObject) {
|
||||||
|
|||||||
@@ -82,8 +82,9 @@ public class BuiltInsSerializer(val out: PrintStream?) {
|
|||||||
System.err.println("Could not make directories: " + destDir)
|
System.err.println("Could not make directories: " + destDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (fqName in ContainerUtil.mapNotNull(files) { it?.getPackageName() }.toSet()) {
|
files.map { it.getPackageFqName() }.toSet().forEach {
|
||||||
serializePackage(module, FqName(fqName), destDir)
|
fqName ->
|
||||||
|
serializePackage(module, fqName, destDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
out?.println("Total bytes written: $totalSize to $totalFiles files")
|
out?.println("Total bytes written: $totalSize to $totalFiles files")
|
||||||
|
|||||||
+1
-2
@@ -42,7 +42,6 @@ import org.jetbrains.jet.config.CommonConfigurationKeys;
|
|||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||||
@@ -170,7 +169,7 @@ public class KotlinToJVMBytecodeCompiler {
|
|||||||
// more than one main
|
// more than one main
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
FqName fqName = JetPsiUtil.getFQName(file);
|
FqName fqName = file.getPackageFqName();
|
||||||
mainClass = PackageClassUtils.getPackageClassFqName(fqName);
|
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.ScriptDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilderDummy;
|
import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilderDummy;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.psi.JetScript;
|
||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||||
@@ -362,7 +361,7 @@ public class ReplInterpreter {
|
|||||||
state.beforeCompile();
|
state.beforeCompile();
|
||||||
KotlinCodegenFacade.generatePackage(
|
KotlinCodegenFacade.generatePackage(
|
||||||
state,
|
state,
|
||||||
JetPsiUtil.getFQName((JetFile) script.getContainingFile()),
|
((JetFile) script.getContainingFile()).getPackageFqName(),
|
||||||
Collections.singleton((JetFile) script.getContainingFile()),
|
Collections.singleton((JetFile) script.getContainingFile()),
|
||||||
errorHandler);
|
errorHandler);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -25,7 +25,6 @@ import com.intellij.psi.search.GlobalSearchScope;
|
|||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.FqName;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -53,12 +52,12 @@ public abstract class JetFilesProvider {
|
|||||||
private final FqName name;
|
private final FqName name;
|
||||||
|
|
||||||
public SameJetFilePredicate(JetFile file) {
|
public SameJetFilePredicate(JetFile file) {
|
||||||
this.name = JetPsiUtil.getFQName(file);
|
this.name = file.getPackageFqName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(PsiFile psiFile) {
|
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();
|
PsiFile file = getContainingFile();
|
||||||
if (!(file instanceof JetFile)) return null;
|
if (!(file instanceof JetFile)) return null;
|
||||||
String fileQualifiedName = ((JetFile) file).getPackageDirective().getQualifiedName();
|
String fileQualifiedName = ((JetFile) file).getPackageFqName().asString();
|
||||||
if (!fileQualifiedName.isEmpty()) {
|
if (!fileQualifiedName.isEmpty()) {
|
||||||
parts.add(fileQualifiedName);
|
parts.add(fileQualifiedName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ import com.intellij.psi.PsiClass;
|
|||||||
import com.intellij.psi.PsiClassOwner;
|
import com.intellij.psi.PsiClassOwner;
|
||||||
import com.intellij.psi.PsiElementVisitor;
|
import com.intellij.psi.PsiElementVisitor;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import com.intellij.util.IncorrectOperationException;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.JetNodeTypes;
|
import org.jetbrains.jet.JetNodeTypes;
|
||||||
import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub;
|
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.JetFileType;
|
||||||
import org.jetbrains.jet.plugin.JetLanguage;
|
import org.jetbrains.jet.plugin.JetLanguage;
|
||||||
|
|
||||||
@@ -92,23 +92,32 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer, Jet
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// scripts have no package directive
|
// scripts have no package directive, all other files must have package directives
|
||||||
@Nullable
|
@Nullable
|
||||||
public JetPackageDirective getPackageDirective() {
|
public JetPackageDirective getPackageDirective() {
|
||||||
ASTNode ast = getNode().findChildByType(JetNodeTypes.PACKAGE_DIRECTIVE);
|
ASTNode ast = getNode().findChildByType(JetNodeTypes.PACKAGE_DIRECTIVE);
|
||||||
return ast != null ? (JetPackageDirective) ast.getPsi() : null;
|
return ast != null ? (JetPackageDirective) ast.getPsi() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated // getPackageFqName should be used instead
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@NotNull
|
||||||
public String getPackageName() {
|
public String getPackageName() {
|
||||||
|
return getPackageFqName().asString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public FqName getPackageFqName() {
|
||||||
PsiJetFileStub stub = (PsiJetFileStub) getStub();
|
PsiJetFileStub stub = (PsiJetFileStub) getStub();
|
||||||
if (stub != null) {
|
if (stub != null) {
|
||||||
return stub.getPackageName();
|
return stub.getPackageFqName();
|
||||||
}
|
}
|
||||||
|
|
||||||
JetPackageDirective directive = getPackageDirective();
|
JetPackageDirective packageDirective = getPackageDirective();
|
||||||
return directive != null ? directive.getQualifiedName() : null;
|
if (packageDirective == null) {
|
||||||
|
return FqName.ROOT;
|
||||||
|
}
|
||||||
|
return packageDirective.getFqName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -102,6 +102,6 @@ abstract class JetNamedDeclarationStub<T extends PsiJetStubWithFqName> extends J
|
|||||||
if (stub != null) {
|
if (stub != null) {
|
||||||
return stub.getFqName();
|
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.google.common.collect.Lists;
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
import com.intellij.openapi.util.Condition;
|
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.CheckUtil;
|
||||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
||||||
import com.intellij.psi.tree.IElementType;
|
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 */
|
/** @return <code>null</code> iff the tye has syntactic errors */
|
||||||
@Nullable
|
@Nullable
|
||||||
public static FqName toQualifiedName(@NotNull JetUserType userType) {
|
public static FqName toQualifiedName(@NotNull JetUserType userType) {
|
||||||
@@ -889,21 +830,6 @@ public class JetPsiUtil {
|
|||||||
return null;
|
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
|
// Delete given element and all the elements separating it from the neighboring elements of the same class
|
||||||
public static void deleteElementWithDelimiters(@NotNull PsiElement element) {
|
public static void deleteElementWithDelimiters(@NotNull PsiElement element) {
|
||||||
PsiElement paramBefore = PsiTreeUtil.getPrevSiblingOfType(element, element.getClass());
|
PsiElement paramBefore = PsiTreeUtil.getPrevSiblingOfType(element, element.getClass());
|
||||||
|
|||||||
@@ -17,9 +17,12 @@
|
|||||||
package org.jetbrains.jet.lang.psi.stubs;
|
package org.jetbrains.jet.lang.psi.stubs;
|
||||||
|
|
||||||
import com.intellij.psi.stubs.PsiFileStub;
|
import com.intellij.psi.stubs.PsiFileStub;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
public interface PsiJetFileStub extends PsiFileStub<JetFile> {
|
public interface PsiJetFileStub extends PsiFileStub<JetFile> {
|
||||||
String getPackageName();
|
@NotNull
|
||||||
|
FqName getPackageFqName();
|
||||||
boolean isScript();
|
boolean isScript();
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -65,16 +65,16 @@ public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
|
|||||||
@Override
|
@Override
|
||||||
public void serialize(@NotNull PsiJetFileStub stub, @NotNull StubOutputStream dataStream)
|
public void serialize(@NotNull PsiJetFileStub stub, @NotNull StubOutputStream dataStream)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
dataStream.writeName(stub.getPackageName());
|
dataStream.writeName(stub.getPackageFqName().asString());
|
||||||
dataStream.writeBoolean(stub.isScript());
|
dataStream.writeBoolean(stub.isScript());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public PsiJetFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException {
|
public PsiJetFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException {
|
||||||
StringRef packName = dataStream.readName();
|
StringRef packageFqNameAsString = dataStream.readName();
|
||||||
boolean isScript = dataStream.readBoolean();
|
boolean isScript = dataStream.readBoolean();
|
||||||
return new PsiJetFileStubImpl(null, packName, isScript);
|
return new PsiJetFileStubImpl(null, packageFqNameAsString, isScript);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -31,6 +31,6 @@ public class JetFileStubBuilder extends DefaultStubBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JetFile jetFile = (JetFile) file;
|
JetFile jetFile = (JetFile) file;
|
||||||
return new PsiJetFileStubImpl(jetFile, jetFile.getPackageName(), jetFile.isScript());
|
return new PsiJetFileStubImpl(jetFile, jetFile.getPackageFqName().asString(), jetFile.isScript());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-13
@@ -24,9 +24,11 @@ import com.intellij.psi.stubs.PsiFileStubImpl;
|
|||||||
import com.intellij.psi.stubs.StubElement;
|
import com.intellij.psi.stubs.StubElement;
|
||||||
import com.intellij.psi.tree.IStubFileElementType;
|
import com.intellij.psi.tree.IStubFileElementType;
|
||||||
import com.intellij.util.io.StringRef;
|
import com.intellij.util.io.StringRef;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub;
|
import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub;
|
||||||
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
|
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -35,19 +37,20 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl<JetFile> implements PsiJ
|
|||||||
private final StringRef packageName;
|
private final StringRef packageName;
|
||||||
private final boolean isScript;
|
private final boolean isScript;
|
||||||
|
|
||||||
public PsiJetFileStubImpl(JetFile jetFile, StringRef packageName, boolean isScript) {
|
public PsiJetFileStubImpl(JetFile jetFile, @NotNull StringRef packageName, boolean isScript) {
|
||||||
super(jetFile);
|
super(jetFile);
|
||||||
this.packageName = packageName;
|
this.packageName = packageName;
|
||||||
this.isScript = isScript;
|
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);
|
this(jetFile, StringRef.fromString(packageName), isScript);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPackageName() {
|
@NotNull
|
||||||
return StringRef.toString(packageName);
|
public FqName getPackageFqName() {
|
||||||
|
return new FqName(StringRef.toString(packageName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,15 +65,7 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl<JetFile> implements PsiJ
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
return "PsiJetFileStubImpl[" + "package=" + getPackageFqName().asString() + "]";
|
||||||
|
|
||||||
builder.append("PsiJetFileStubImpl[");
|
|
||||||
|
|
||||||
|
|
||||||
builder.append("package=").append(getPackageName());
|
|
||||||
builder.append("]");
|
|
||||||
|
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public class ImportsResolver {
|
|||||||
private void processImports(@NotNull TopDownAnalysisContext c, @NotNull LookupMode lookupMode) {
|
private void processImports(@NotNull TopDownAnalysisContext c, @NotNull LookupMode lookupMode) {
|
||||||
for (JetFile file : c.getFiles()) {
|
for (JetFile file : c.getFiles()) {
|
||||||
WritableScope fileScope = c.getFileScopes().get(file);
|
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()) {
|
for (JetScript script : c.getScripts().keySet()) {
|
||||||
WritableScope scriptScope = c.getScriptScopes().get(script);
|
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) {
|
public void processScriptHierarchy(@NotNull TopDownAnalysisContext c, @NotNull JetScript script, @NotNull JetScope outerScope) {
|
||||||
JetFile file = (JetFile) script.getContainingFile();
|
JetFile file = (JetFile) script.getContainingFile();
|
||||||
JetPackageDirective packageDirective = file.getPackageDirective();
|
FqName fqName = file.getPackageFqName();
|
||||||
FqName fqName = packageDirective != null ? new FqName(packageDirective.getQualifiedName()) : FqName.ROOT;
|
|
||||||
PackageFragmentDescriptor ns = packageFragmentProvider.getOrCreateFragment(fqName);
|
PackageFragmentDescriptor ns = packageFragmentProvider.getOrCreateFragment(fqName);
|
||||||
|
|
||||||
Integer priority = script.getUserData(PRIORITY_KEY);
|
Integer priority = script.getUserData(PRIORITY_KEY);
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ public class TopDownAnalyzer {
|
|||||||
|
|
||||||
private void registerTopLevelFqName(@NotNull JetNamedDeclaration declaration, @NotNull DeclarationDescriptor descriptor) {
|
private void registerTopLevelFqName(@NotNull JetNamedDeclaration declaration, @NotNull DeclarationDescriptor descriptor) {
|
||||||
if (DescriptorUtils.isTopLevelDeclaration(descriptor)) {
|
if (DescriptorUtils.isTopLevelDeclaration(descriptor)) {
|
||||||
FqName fqName = JetPsiUtil.getFQName(declaration);
|
FqName fqName = declaration.getFqName();
|
||||||
if (fqName != null) {
|
if (fqName != null) {
|
||||||
topLevelFqNames.put(fqName, declaration);
|
topLevelFqNames.put(fqName, declaration);
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ public class TopDownAnalyzer {
|
|||||||
DescriptorResolver.resolvePackageHeader(packageDirective, moduleDescriptor, trace);
|
DescriptorResolver.resolvePackageHeader(packageDirective, moduleDescriptor, trace);
|
||||||
registerDeclarations(file.getDeclarations());
|
registerDeclarations(file.getDeclarations());
|
||||||
|
|
||||||
topLevelFqNames.put(JetPsiUtil.getFQName(file), packageDirective);
|
topLevelFqNames.put(file.getPackageFqName(), packageDirective);
|
||||||
}
|
}
|
||||||
resolveAndCheckImports(file, resolveSession);
|
resolveAndCheckImports(file, resolveSession);
|
||||||
}
|
}
|
||||||
@@ -330,7 +330,7 @@ public class TopDownAnalyzer {
|
|||||||
Set<FqName> scriptFqNames = Sets.newHashSet();
|
Set<FqName> scriptFqNames = Sets.newHashSet();
|
||||||
for (JetFile file : c.getFileScopes().keySet()) {
|
for (JetFile file : c.getFileScopes().keySet()) {
|
||||||
if (file.isScript()) {
|
if (file.isScript()) {
|
||||||
scriptFqNames.add(JetPsiUtil.getFQName(file));
|
scriptFqNames.add(file.getPackageFqName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (MutablePackageFragmentDescriptor fragment : packageFragmentProvider.getAllFragments()) {
|
for (MutablePackageFragmentDescriptor fragment : packageFragmentProvider.getAllFragments()) {
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ public class TypeHierarchyResolver {
|
|||||||
createClassDescriptorForSingleton(declaration, JetPsiUtil.safeName(declaration.getName()), ClassKind.OBJECT);
|
createClassDescriptorForSingleton(declaration, JetPsiUtil.safeName(declaration.getName()), ClassKind.OBJECT);
|
||||||
|
|
||||||
owner.addClassifierDescriptor(descriptor);
|
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));
|
descriptor.getBuilder().setClassObjectDescriptor(createSyntheticClassObject(descriptor));
|
||||||
}
|
}
|
||||||
@@ -476,7 +476,7 @@ public class TypeHierarchyResolver {
|
|||||||
MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(
|
MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(
|
||||||
containingDeclaration, outerScope, kind, isInner, JetPsiUtil.safeName(klass.getName()));
|
containingDeclaration, outerScope, kind, isInner, JetPsiUtil.safeName(klass.getName()));
|
||||||
c.getClasses().put(klass, mutableClassDescriptor);
|
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);
|
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.ClassifierDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
|
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.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.name.NamePackage;
|
import org.jetbrains.jet.lang.resolve.name.NamePackage;
|
||||||
@@ -154,7 +154,7 @@ public class ResolveSessionUtils {
|
|||||||
@Nullable
|
@Nullable
|
||||||
public static FqName safeFqNameForLazyResolve(@NotNull JetNamedDeclaration declaration) {
|
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
|
//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;
|
return parentFqName != null ? parentFqName.child(safeNameForLazyResolve(declaration)) : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class ScopeProvider {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getFileScope(@NotNull JetFile file) {
|
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(),
|
"File scope: " + file.getName(),
|
||||||
getFilePackageDescriptor(file).getMemberScope(),
|
getFilePackageDescriptor(file).getMemberScope(),
|
||||||
JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor()),
|
JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor()),
|
||||||
@@ -108,12 +108,7 @@ public class ScopeProvider {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private PackageViewDescriptor getFilePackageDescriptor(JetFile file) {
|
private PackageViewDescriptor getFilePackageDescriptor(JetFile file) {
|
||||||
JetPackageDirective directive = file.getPackageDirective();
|
FqName fqName = file.getPackageFqName();
|
||||||
if (directive == null) {
|
|
||||||
throw new IllegalArgumentException("Scripts are not supported: " + file.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
FqName fqName = new FqName(directive.getQualifiedName());
|
|
||||||
PackageViewDescriptor packageDescriptor = resolveSession.getModuleDescriptor().getPackage(fqName);
|
PackageViewDescriptor packageDescriptor = resolveSession.getModuleDescriptor().getPackage(fqName);
|
||||||
|
|
||||||
if (packageDescriptor == null) {
|
if (packageDescriptor == null) {
|
||||||
|
|||||||
+1
-2
@@ -61,8 +61,7 @@ public abstract class JetClassOrObjectInfo<E extends JetClassOrObject> implement
|
|||||||
PsiFile file = element.getContainingFile();
|
PsiFile file = element.getContainingFile();
|
||||||
if (file instanceof JetFile) {
|
if (file instanceof JetFile) {
|
||||||
JetFile jetFile = (JetFile) file;
|
JetFile jetFile = (JetFile) file;
|
||||||
JetPackageDirective directive = jetFile.getPackageDirective();
|
return jetFile.getPackageFqName();
|
||||||
return directive != null ? directive.getFqName() : FqName.ROOT;
|
|
||||||
}
|
}
|
||||||
throw new IllegalArgumentException("Not in a JetFile: " + element);
|
throw new IllegalArgumentException("Not in a JetFile: " + element);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-6
@@ -59,12 +59,7 @@ public class FileBasedDeclarationProviderFactory extends AbstractDeclarationProv
|
|||||||
private static Index computeFilesByPackage(@NotNull Collection<JetFile> files) {
|
private static Index computeFilesByPackage(@NotNull Collection<JetFile> files) {
|
||||||
Index index = new Index();
|
Index index = new Index();
|
||||||
for (JetFile file : files) {
|
for (JetFile file : files) {
|
||||||
JetPackageDirective directive = file.getPackageDirective();
|
FqName packageFqName = file.getPackageFqName();
|
||||||
if (directive == null) {
|
|
||||||
throw new IllegalArgumentException("Scripts are not supported");
|
|
||||||
}
|
|
||||||
|
|
||||||
FqName packageFqName = new FqName(directive.getQualifiedName());
|
|
||||||
addMeAndParentPackages(index, packageFqName);
|
addMeAndParentPackages(index, packageFqName);
|
||||||
index.filesByPackage.put(packageFqName, file);
|
index.filesByPackage.put(packageFqName, file);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD
|
|||||||
protected void doCreateIndex(@NotNull Index index) {
|
protected void doCreateIndex(@NotNull Index index) {
|
||||||
for (JetFile file : packageFiles) {
|
for (JetFile file : packageFiles) {
|
||||||
for (JetDeclaration declaration : file.getDeclarations()) {
|
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);
|
index.putToIndex(declaration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -181,7 +181,7 @@ public class KotlinJavaFileStubProvider<T extends WithFileStub> implements Cache
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public FqName getPackageFqName() {
|
public FqName getPackageFqName() {
|
||||||
return JetPsiUtil.getFQName(getFile());
|
return getFile().getPackageFqName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -288,7 +288,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String getPackageName() {
|
public String getPackageName() {
|
||||||
return JetPsiUtil.getFQName((JetFile) classOrObject.getContainingFile()).asString();
|
return ((JetFile) classOrObject.getContainingFile()).getPackageFqName().asString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -234,12 +234,9 @@ public class LightClassUtil {
|
|||||||
|
|
||||||
if (parent instanceof JetFile) {
|
if (parent instanceof JetFile) {
|
||||||
// top-level declaration
|
// top-level declaration
|
||||||
FqName fqName = getPackageClassNameForFile((JetFile) parent);
|
FqName fqName = PackageClassUtils.getPackageClassFqName(((JetFile) parent).getPackageFqName());
|
||||||
if (fqName != null) {
|
Project project = declaration.getProject();
|
||||||
Project project = declaration.getProject();
|
return JavaElementFinder.getInstance(project).findClass(fqName.asString(), GlobalSearchScope.allScope(project));
|
||||||
|
|
||||||
return JavaElementFinder.getInstance(project).findClass(fqName.asString(), GlobalSearchScope.allScope(project));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (parent instanceof JetClassBody) {
|
else if (parent instanceof JetClassBody) {
|
||||||
assert parent.getParent() instanceof JetClassOrObject;
|
assert parent.getParent() instanceof JetClassOrObject;
|
||||||
@@ -249,12 +246,6 @@ public class LightClassUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static FqName getPackageClassNameForFile(@NotNull JetFile jetFile) {
|
|
||||||
String packageName = jetFile.getPackageName();
|
|
||||||
return packageName == null ? null : PackageClassUtils.getPackageClassFqName(new FqName(packageName));
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static PropertyAccessorsPsiMethods extractPropertyAccessors(
|
private static PropertyAccessorsPsiMethods extractPropertyAccessors(
|
||||||
@NotNull JetDeclaration jetDeclaration,
|
@NotNull JetDeclaration jetDeclaration,
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import org.jetbrains.asm4.FieldVisitor;
|
|||||||
import org.jetbrains.asm4.MethodVisitor;
|
import org.jetbrains.asm4.MethodVisitor;
|
||||||
import org.jetbrains.jet.codegen.AbstractClassBuilder;
|
import org.jetbrains.jet.codegen.AbstractClassBuilder;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
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);
|
super.defineClass(origin, version, access, name, signature, superName, interfaces);
|
||||||
|
|
||||||
if (origin instanceof JetFile) {
|
if (origin instanceof JetFile) {
|
||||||
FqName packageName = JetPsiUtil.getFQName((JetFile) origin);
|
FqName packageName = ((JetFile) origin).getPackageFqName();
|
||||||
String packageClassName = PackageClassUtils.getPackageClassName(packageName);
|
String packageClassName = PackageClassUtils.getPackageClassName(packageName);
|
||||||
|
|
||||||
if (name.equals(packageClassName) || name.endsWith("/" + packageClassName)) {
|
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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
import org.jetbrains.jet.ConfigurationKind;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
@@ -40,7 +39,7 @@ public class AnnotationGenTest extends CodegenTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Class<?> getPackageClass(@NotNull ClassLoader loader) throws ClassNotFoundException {
|
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 {
|
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.JVMConfigurationKeys;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
|
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.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.utils.UtilsPackage;
|
import org.jetbrains.jet.utils.UtilsPackage;
|
||||||
|
|
||||||
@@ -169,7 +168,7 @@ public abstract class CodegenTestCase extends UsefulTestCase {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
protected Class<?> generatePackageClass() {
|
protected Class<?> generatePackageClass() {
|
||||||
FqName packageFqName = JetPsiUtil.getFQName(myFiles.getPsiFile());
|
FqName packageFqName = myFiles.getPsiFile().getPackageFqName();
|
||||||
return generateClass(getPackageClassFqName(packageFqName).asString());
|
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.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.codegen.CodegenTestCase;
|
import org.jetbrains.jet.codegen.CodegenTestCase;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
|
||||||
import org.jetbrains.jet.utils.UtilsPackage;
|
import org.jetbrains.jet.utils.UtilsPackage;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -92,7 +91,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase {
|
|||||||
private void blackBox() {
|
private void blackBox() {
|
||||||
// If there are many files, the first of them should contain the 'box(): String' function
|
// If there are many files, the first of them should contain the 'box(): String' function
|
||||||
JetFile firstFile = myFiles.getPsiFiles().get(0);
|
JetFile firstFile = myFiles.getPsiFiles().get(0);
|
||||||
String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString();
|
String fqName = getPackageClassFqName(firstFile.getPackageFqName()).asString();
|
||||||
|
|
||||||
Class<?> aClass = generateClass(fqName);
|
Class<?> aClass = generateClass(fqName);
|
||||||
try {
|
try {
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe
|
|||||||
psiFile.accept(new JetVisitorVoid() {
|
psiFile.accept(new JetVisitorVoid() {
|
||||||
@Override
|
@Override
|
||||||
public void visitJetFile(@NotNull JetFile file) {
|
public void visitJetFile(@NotNull JetFile file) {
|
||||||
FqName fqName = file.getPackageDirective().getFqName();
|
FqName fqName = file.getPackageFqName();
|
||||||
if (!fqName.isRoot()) {
|
if (!fqName.isRoot()) {
|
||||||
PackageViewDescriptor packageDescriptor = lazyModule.getPackage(fqName);
|
PackageViewDescriptor packageDescriptor = lazyModule.getPackage(fqName);
|
||||||
descriptors.add(packageDescriptor);
|
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.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
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.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.name.SpecialNames;
|
import org.jetbrains.jet.lang.resolve.name.SpecialNames;
|
||||||
|
|
||||||
@@ -90,15 +91,9 @@ public class LazyResolveTestUtil {
|
|||||||
public static Set<Name> getTopLevelPackagesFromFileList(@NotNull List<JetFile> files) {
|
public static Set<Name> getTopLevelPackagesFromFileList(@NotNull List<JetFile> files) {
|
||||||
Set<Name> shortNames = Sets.newLinkedHashSet();
|
Set<Name> shortNames = Sets.newLinkedHashSet();
|
||||||
for (JetFile file : files) {
|
for (JetFile file : files) {
|
||||||
JetPackageDirective directive = file.getPackageDirective();
|
List<Name> packageFqNameSegments = file.getPackageFqName().pathSegments();
|
||||||
if (directive != null) {
|
Name name = packageFqNameSegments.isEmpty() ? SpecialNames.ROOT_PACKAGE : packageFqNameSegments.get(0);
|
||||||
List<JetSimpleNameExpression> names = directive.getPackageNames();
|
shortNames.add(name);
|
||||||
Name name = names.isEmpty() ? SpecialNames.ROOT_PACKAGE : names.get(0).getReferencedNameAsName();
|
|
||||||
shortNames.add(name);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new IllegalStateException("Scripts are not supported: " + file.getName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return shortNames;
|
return shortNames;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class DescriptorRendererTest extends JetLiteFixture {
|
|||||||
final BindingContext bindingContext = analyzeExhaust.getBindingContext();
|
final BindingContext bindingContext = analyzeExhaust.getBindingContext();
|
||||||
final List<DeclarationDescriptor> descriptors = new ArrayList<DeclarationDescriptor>();
|
final List<DeclarationDescriptor> descriptors = new ArrayList<DeclarationDescriptor>();
|
||||||
|
|
||||||
FqName fqName = psiFile.getPackageDirective().getFqName();
|
FqName fqName = psiFile.getPackageFqName();
|
||||||
if (!fqName.isRoot()) {
|
if (!fqName.isRoot()) {
|
||||||
PackageViewDescriptor packageDescriptor = analyzeExhaust.getModuleDescriptor().getPackage(fqName);
|
PackageViewDescriptor packageDescriptor = analyzeExhaust.getModuleDescriptor().getPackage(fqName);
|
||||||
descriptors.add(packageDescriptor);
|
descriptors.add(packageDescriptor);
|
||||||
|
|||||||
@@ -259,10 +259,7 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
|||||||
PsiFile containingFile = jetNamedFunction.getContainingFile();
|
PsiFile containingFile = jetNamedFunction.getContainingFile();
|
||||||
if (containingFile instanceof JetFile) {
|
if (containingFile instanceof JetFile) {
|
||||||
JetFile jetFile = (JetFile) containingFile;
|
JetFile jetFile = (JetFile) containingFile;
|
||||||
String packageName = jetFile.getPackageName();
|
affectedPackages.add(jetFile.getPackageFqName());
|
||||||
if (packageName != null) {
|
|
||||||
affectedPackages.add(new FqName(packageName));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -20,11 +20,9 @@ import com.intellij.openapi.components.ServiceManager;
|
|||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.roots.libraries.LibraryUtil;
|
import com.intellij.openapi.roots.libraries.LibraryUtil;
|
||||||
import com.intellij.openapi.util.Condition;
|
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import com.intellij.util.containers.ContainerUtil;
|
|
||||||
import com.intellij.util.containers.MultiMap;
|
import com.intellij.util.containers.MultiMap;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -122,7 +120,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
|
|||||||
// Scripts are not supported
|
// Scripts are not supported
|
||||||
if (file.isScript()) continue;
|
if (file.isScript()) continue;
|
||||||
|
|
||||||
FqName packageFqName = JetPsiUtil.getFQName(file);
|
FqName packageFqName = file.getPackageFqName();
|
||||||
|
|
||||||
// make sure we create a package descriptor
|
// make sure we create a package descriptor
|
||||||
PackageViewDescriptor packageDescriptor = session.getModuleDescriptor().getPackage(packageFqName);
|
PackageViewDescriptor packageDescriptor = session.getModuleDescriptor().getPackage(packageFqName);
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ public class JetPositionManager implements PositionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private JetTypeMapper prepareTypeMapper(final JetFile file) {
|
private JetTypeMapper prepareTypeMapper(final JetFile file) {
|
||||||
FqName fqName = JetPsiUtil.getFQName(file);
|
FqName fqName = file.getPackageFqName();
|
||||||
CachedValue<JetTypeMapper> value = myTypeMappers.get(fqName);
|
CachedValue<JetTypeMapper> value = myTypeMappers.get(fqName);
|
||||||
if(value == null) {
|
if(value == null) {
|
||||||
value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<JetTypeMapper>() {
|
value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<JetTypeMapper>() {
|
||||||
@@ -248,7 +248,7 @@ public class JetPositionManager implements PositionManager {
|
|||||||
|
|
||||||
@TestOnly
|
@TestOnly
|
||||||
public void addTypeMapper(JetFile file, final JetTypeMapper typeMapper) {
|
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>() {
|
CachedValue<JetTypeMapper> value = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<JetTypeMapper>() {
|
||||||
@Override
|
@Override
|
||||||
public Result<JetTypeMapper> compute() {
|
public Result<JetTypeMapper> compute() {
|
||||||
|
|||||||
@@ -376,11 +376,9 @@ public class ResolveElementCache {
|
|||||||
|
|
||||||
if (expression.getParent() instanceof JetDotQualifiedExpression) {
|
if (expression.getParent() instanceof JetDotQualifiedExpression) {
|
||||||
JetExpression element = ((JetDotQualifiedExpression) expression.getParent()).getReceiverExpression();
|
JetExpression element = ((JetDotQualifiedExpression) expression.getParent()).getReceiverExpression();
|
||||||
String name = ((JetFile) expression.getContainingFile()).getPackageName();
|
FqName fqName = ((JetFile) expression.getContainingFile()).getPackageFqName();
|
||||||
|
|
||||||
PackageViewDescriptor filePackage = name != null
|
PackageViewDescriptor filePackage = resolveSession.getModuleDescriptor().getPackage(fqName);
|
||||||
? resolveSession.getModuleDescriptor().getPackage(new FqName(name))
|
|
||||||
: rootPackage;
|
|
||||||
assert filePackage != null : "File package should be already resolved and be found";
|
assert filePackage != null : "File package should be already resolved and be found";
|
||||||
|
|
||||||
JetScope scope = filePackage.getMemberScope();
|
JetScope scope = filePackage.getMemberScope();
|
||||||
|
|||||||
@@ -674,7 +674,7 @@ public class CreateFunctionFromUsageFix extends CreateFromUsageFixBase {
|
|||||||
|
|
||||||
JetScope scope;
|
JetScope scope;
|
||||||
if (isExtension) {
|
if (isExtension) {
|
||||||
scope = currentFileModule.getPackage(JetPsiUtil.getFQName(currentFile)).getMemberScope();
|
scope = currentFileModule.getPackage(currentFile.getPackageFqName()).getMemberScope();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
scope = ((ClassDescriptorWithResolutionScopes) ownerClassDescriptor).getScopeForMemberDeclarationResolution();
|
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
|
// 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;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -77,7 +77,7 @@ public class MoveKotlinFileHandler : MoveFileHandler() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun JetFile.packageMatchesDirectory(): Boolean {
|
private fun JetFile.packageMatchesDirectory(): Boolean {
|
||||||
return getPackageName() == getParent()?.getPackage()?.getQualifiedName()
|
return getPackageFqName().asString() == getParent()?.getPackage()?.getQualifiedName()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun canProcessElement(element: PsiFile?): Boolean {
|
override fun canProcessElement(element: PsiFile?): Boolean {
|
||||||
@@ -91,7 +91,7 @@ public class MoveKotlinFileHandler : MoveFileHandler() {
|
|||||||
if (newPackage != null) {
|
if (newPackage != null) {
|
||||||
file.putCopyableUserData(
|
file.putCopyableUserData(
|
||||||
PACKAGE_NAME_INFO_KEY,
|
PACKAGE_NAME_INFO_KEY,
|
||||||
PackageNameInfo(JetPsiUtil.getFQName(file), FqName(newPackage.getQualifiedName()))
|
PackageNameInfo(file.getPackageFqName(), FqName(newPackage.getQualifiedName()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -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()}")
|
assert(targetFile is JetFile, "Couldn't create Koltin file for: ${declaration.getClass()}: ${declaration.getText()}")
|
||||||
|
|
||||||
val newPackage = (targetFile as JetFile).getPackageName()
|
val newPackageFqName = (targetFile as JetFile).getPackageFqName()
|
||||||
assert (newPackage != null, "${targetFile.getClass()}: ${targetFile.getText()}")
|
|
||||||
|
|
||||||
val packageNameInfo = PackageNameInfo(JetPsiUtil.getFQName(file!!), FqName(newPackage!!))
|
val packageNameInfo = PackageNameInfo(file!!.getPackageFqName(), newPackageFqName)
|
||||||
declaration.updateInternalReferencesOnPackageNameChange(packageNameInfo, ShorteningMode.NO_SHORTENING)
|
declaration.updateInternalReferencesOnPackageNameChange(packageNameInfo, ShorteningMode.NO_SHORTENING)
|
||||||
|
|
||||||
val newElement = targetFile.add(declaration) as JetNamedDeclaration
|
val newElement = targetFile.add(declaration) as JetNamedDeclaration
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -73,7 +72,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
|
|||||||
|
|
||||||
mySourceElement = file;
|
mySourceElement = file;
|
||||||
|
|
||||||
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(file));
|
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName());
|
||||||
|
|
||||||
return createConfigurationByQName(module, configurationContext, startClassFQName);
|
return createConfigurationByQName(module, configurationContext, startClassFQName);
|
||||||
}
|
}
|
||||||
@@ -119,7 +118,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(file));
|
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName());
|
||||||
|
|
||||||
for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) {
|
for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) {
|
||||||
if (existingConfiguration.getType() instanceof JetRunConfigurationType) {
|
if (existingConfiguration.getType() instanceof JetRunConfigurationType) {
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import com.intellij.psi.search.GlobalSearchScope;
|
|||||||
import com.intellij.util.containers.ContainerUtil;
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.NamePackage;
|
import org.jetbrains.jet.lang.resolve.name.NamePackage;
|
||||||
|
|
||||||
@@ -41,7 +40,7 @@ public final class PackageIndexUtil {
|
|||||||
|
|
||||||
Set<FqName> result = Sets.newHashSet();
|
Set<FqName> result = Sets.newHashSet();
|
||||||
for (JetFile file : files) {
|
for (JetFile file : files) {
|
||||||
FqName fqName = JetPsiUtil.getFQName(file);
|
FqName fqName = file.getPackageFqName();
|
||||||
|
|
||||||
assert NamePackage.isSubpackageOf(fqName, packageFqName) :
|
assert NamePackage.isSubpackageOf(fqName, packageFqName) :
|
||||||
"Registered package is not a subpackage of actually declared package:\n" +
|
"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>() {
|
return ContainerUtil.filter(files, new Condition<JetFile>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean value(JetFile file) {
|
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
|
@Override
|
||||||
public void indexFile(PsiJetFileStub stub, IndexSink sink) {
|
public void indexFile(PsiJetFileStub stub, IndexSink sink) {
|
||||||
String packageName = stub.getPackageName();
|
FqName packageFqName = stub.getPackageFqName();
|
||||||
FqName fqName = new FqName(packageName == null ? "" : packageName);
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
sink.occurrence(JetAllPackagesIndex.getInstance().getKey(), fqName.asString());
|
sink.occurrence(JetAllPackagesIndex.getInstance().getKey(), packageFqName.asString());
|
||||||
if (fqName.isRoot()) {
|
if (packageFqName.isRoot()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fqName = fqName.parent();
|
packageFqName = packageFqName.parent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,10 +100,8 @@ public class StubIndexServiceImpl implements StubIndexService {
|
|||||||
StubElement parentStub = stub.getParentStub();
|
StubElement parentStub = stub.getParentStub();
|
||||||
if (parentStub instanceof PsiJetFileStub) {
|
if (parentStub instanceof PsiJetFileStub) {
|
||||||
PsiJetFileStub jetFileStub = (PsiJetFileStub) parentStub;
|
PsiJetFileStub jetFileStub = (PsiJetFileStub) parentStub;
|
||||||
String packageName = jetFileStub.getPackageName();
|
FqName packageFqName = jetFileStub.getPackageFqName();
|
||||||
if (packageName != null) {
|
sink.occurrence(JetClassByPackageIndex.getInstance().getKey(), packageFqName.asString());
|
||||||
sink.occurrence(JetClassByPackageIndex.getInstance().getKey(), packageName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
import org.jetbrains.jet.codegen.binding.PsiCodegenPredictor;
|
import org.jetbrains.jet.codegen.binding.PsiCodegenPredictor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.JetFilesProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -53,7 +52,7 @@ public class DebuggerUtils {
|
|||||||
public boolean apply(@Nullable JetFile file) {
|
public boolean apply(@Nullable JetFile file) {
|
||||||
return file != null
|
return file != null
|
||||||
&& file.getName().equals(fileName)
|
&& 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.asJava.KotlinLightClassForPackage;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.NamePackage;
|
import org.jetbrains.jet.lang.resolve.name.NamePackage;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
@@ -46,8 +45,8 @@ public class JetPsiHeuristicsUtil {
|
|||||||
// The class is declared private in the targetPackage
|
// The class is declared private in the targetPackage
|
||||||
// It is visible in this package and all of its subpackages
|
// It is visible in this package and all of its subpackages
|
||||||
JetFile targetFile = (JetFile) classOrObject.getContainingFile();
|
JetFile targetFile = (JetFile) classOrObject.getContainingFile();
|
||||||
FqName targetPackage = JetPsiUtil.getFQName(targetFile);
|
FqName targetPackage = targetFile.getPackageFqName();
|
||||||
FqName fromPackage = JetPsiUtil.getFQName(fromFile);
|
FqName fromPackage = fromFile.getPackageFqName();
|
||||||
|
|
||||||
return NamePackage.isSubpackageOf(fromPackage, targetPackage);
|
return NamePackage.isSubpackageOf(fromPackage, targetPackage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ public abstract class AbstractRenameTest : MultiFileTestCase() {
|
|||||||
val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!!
|
val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!!
|
||||||
val jetFile = PsiDocumentManager.getInstance(context.project).getPsiFile(document) as JetFile
|
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))
|
Assert.assertTrue("File '${mainFilePath}' should have package containing ${fqn}", fileFqn.isSubpackageOf(fqn))
|
||||||
|
|
||||||
val packageSegment = jetFile.getPackageDirective()!!.getPackageNames()[fqn.pathSegments().size - 1]
|
val packageSegment = jetFile.getPackageDirective()!!.getPackageNames()[fqn.pathSegments().size - 1]
|
||||||
|
|||||||
Reference in New Issue
Block a user