Use unsafe qualified names instead of safe ones in FQNAME_TO_CLASS_DESCRIPTOR slice
This commit is contained in:
+1
-1
@@ -122,7 +122,7 @@ public class CliLightClassGenerationSupport extends LightClassGenerationSupport
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<JetClassOrObject> findClassOrObjectDeclarations(@NotNull FqName fqName, @NotNull GlobalSearchScope searchScope) {
|
public Collection<JetClassOrObject> findClassOrObjectDeclarations(@NotNull FqName fqName, @NotNull GlobalSearchScope searchScope) {
|
||||||
ClassDescriptor classDescriptor = getTrace().get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, fqName);
|
ClassDescriptor classDescriptor = getTrace().get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, fqName.toUnsafe());
|
||||||
if (classDescriptor != null) {
|
if (classDescriptor != null) {
|
||||||
PsiElement element = BindingContextUtils.classDescriptorToDeclaration(trace.getBindingContext(), classDescriptor);
|
PsiElement element = BindingContextUtils.classDescriptorToDeclaration(trace.getBindingContext(), classDescriptor);
|
||||||
if (element != null && PsiSearchScopeUtil.isInScope(searchScope, element)) {
|
if (element != null && PsiSearchScopeUtil.isInScope(searchScope, element)) {
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ public class TraceBasedJavaResolverCache implements JavaResolverCache {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public ClassDescriptor getClassResolvedFromSource(@NotNull FqName fqName) {
|
public ClassDescriptor getClassResolvedFromSource(@NotNull FqName fqName) {
|
||||||
return trace.get(FQNAME_TO_CLASS_DESCRIPTOR, fqName);
|
return trace.get(FQNAME_TO_CLASS_DESCRIPTOR, fqName.toUnsafe());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import org.jetbrains.jet.kdoc.psi.api.KDocElement;
|
|||||||
import org.jetbrains.jet.lang.parsing.JetExpressionParsing;
|
import org.jetbrains.jet.lang.parsing.JetExpressionParsing;
|
||||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||||
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;
|
||||||
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
||||||
@@ -190,6 +191,12 @@ public class JetPsiUtil {
|
|||||||
return header != null ? header.getFqName() : FqName.ROOT;
|
return header != null ? header.getFqName() : FqName.ROOT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static FqNameUnsafe getUnsafeFQName(@NotNull JetNamedDeclaration namedDeclaration) {
|
||||||
|
FqName fqName = getFQName(namedDeclaration);
|
||||||
|
return fqName != null ? fqName.toUnsafe() : null;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static FqName getFQName(@NotNull JetNamedDeclaration namedDeclaration) {
|
public static FqName getFQName(@NotNull JetNamedDeclaration namedDeclaration) {
|
||||||
Name name = namedDeclaration.getNameAsName();
|
Name name = namedDeclaration.getNameAsName();
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystemCompleter;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
||||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.DeferredType;
|
import org.jetbrains.jet.lang.types.DeferredType;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
@@ -245,7 +246,7 @@ public interface BindingContext {
|
|||||||
WritableSlice<ClassDescriptor, FunctionDescriptor> DATA_CLASS_COPY_FUNCTION =
|
WritableSlice<ClassDescriptor, FunctionDescriptor> DATA_CLASS_COPY_FUNCTION =
|
||||||
Slices.<ClassDescriptor, FunctionDescriptor>sliceBuilder().build();
|
Slices.<ClassDescriptor, FunctionDescriptor>sliceBuilder().build();
|
||||||
|
|
||||||
WritableSlice<FqName, ClassDescriptor> FQNAME_TO_CLASS_DESCRIPTOR = new BasicWritableSlice<FqName, ClassDescriptor>(DO_NOTHING, true);
|
WritableSlice<FqNameUnsafe, ClassDescriptor> FQNAME_TO_CLASS_DESCRIPTOR = new BasicWritableSlice<FqNameUnsafe, ClassDescriptor>(DO_NOTHING, true);
|
||||||
WritableSlice<JetFile, PackageFragmentDescriptor> FILE_TO_PACKAGE_FRAGMENT = Slices.createSimpleSlice();
|
WritableSlice<JetFile, PackageFragmentDescriptor> FILE_TO_PACKAGE_FRAGMENT = Slices.createSimpleSlice();
|
||||||
WritableSlice<FqName, Collection<JetFile>> PACKAGE_TO_FILES = Slices.createSimpleSlice();
|
WritableSlice<FqName, Collection<JetFile>> PACKAGE_TO_FILES = Slices.createSimpleSlice();
|
||||||
|
|
||||||
|
|||||||
@@ -491,7 +491,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.getFQName(declaration), descriptor);
|
trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getUnsafeFQName(declaration), descriptor);
|
||||||
|
|
||||||
descriptor.getBuilder().setClassObjectDescriptor(createSyntheticClassObject(descriptor));
|
descriptor.getBuilder().setClassObjectDescriptor(createSyntheticClassObject(descriptor));
|
||||||
}
|
}
|
||||||
@@ -572,7 +572,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()));
|
||||||
context.getClasses().put(klass, mutableClassDescriptor);
|
context.getClasses().put(klass, mutableClassDescriptor);
|
||||||
trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getFQName(klass), mutableClassDescriptor);
|
trace.record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getUnsafeFQName(klass), mutableClassDescriptor);
|
||||||
|
|
||||||
createClassObjectForEnumClass(mutableClassDescriptor);
|
createClassObjectForEnumClass(mutableClassDescriptor);
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
|||||||
return ((ClassDescriptor) currentParent).getClassObjectDescriptor();
|
return ((ClassDescriptor) currentParent).getClassObjectDescriptor();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return bindingContext.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, DescriptorUtils.getFqNameSafe(originalDescriptor));
|
return bindingContext.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, DescriptorUtils.getFqName(originalDescriptor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import org.jetbrains.jet.lang.resolve.name.Name
|
|||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
|
||||||
|
|
||||||
private enum class RenameType {
|
private enum class RenameType {
|
||||||
JAVA_CLASS
|
JAVA_CLASS
|
||||||
@@ -167,7 +168,7 @@ public abstract class AbstractRenameTest : MultiFileTestCase() {
|
|||||||
private fun doRenameInKotlinClass(renameParamsObject: JsonObject, context: TestContext,
|
private fun doRenameInKotlinClass(renameParamsObject: JsonObject, context: TestContext,
|
||||||
findDescriptorToRename: (ClassDescriptor) -> DeclarationDescriptor
|
findDescriptorToRename: (ClassDescriptor) -> DeclarationDescriptor
|
||||||
) {
|
) {
|
||||||
val classFqName = FqName(renameParamsObject.getString("classFQN"))
|
val classFqName = FqNameUnsafe(renameParamsObject.getString("classFQN"))
|
||||||
val newName = renameParamsObject.getString("newName")
|
val newName = renameParamsObject.getString("newName")
|
||||||
val mainFilePath = renameParamsObject.getNullableString("mainFile") ?: "${getTestDirName(false)}.kt"
|
val mainFilePath = renameParamsObject.getNullableString("mainFile") ?: "${getTestDirName(false)}.kt"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user