PY-78304 Use SoftReference to store types in TypeEvalContext

Make PyNullType class private

GitOrigin-RevId: 39c4e6f581c48419c82404944a67de154abd3bf3
This commit is contained in:
Andrey Vokin
2025-03-25 13:20:17 +01:00
committed by intellij-monorepo-bot
parent 6a5d65a5de
commit d55cd9563c
2 changed files with 37 additions and 23 deletions

View File

@@ -1,21 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.jetbrains.python.psi.types
import com.intellij.psi.PsiElement
import com.intellij.util.ProcessingContext
import com.jetbrains.python.psi.AccessDirection
import com.jetbrains.python.psi.PyExpression
import com.jetbrains.python.psi.resolve.PyResolveContext
import com.jetbrains.python.psi.resolve.RatedResolveResult
object PyNullType : PyType {
override fun resolveMember(name: String, location: PyExpression?, direction: AccessDirection, resolveContext: PyResolveContext): List<RatedResolveResult?>? = null
override fun getCompletionVariants(completionPrefix: String?, location: PsiElement?, context: ProcessingContext?): Array<out Any?>? = null
override fun getName(): String = "Null"
override fun isBuiltin(): Boolean = false
override fun assertValid(message: String?) {}
}

View File

@@ -7,11 +7,13 @@ import com.intellij.openapi.util.RecursionManager;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ProcessingContext;
import com.intellij.util.containers.CollectionFactory;
import com.jetbrains.python.psi.PyCallable;
import com.jetbrains.python.psi.PyTypedElement;
import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.impl.PyTypeProvider;
import com.jetbrains.python.psi.resolve.PyResolveContext;
import com.jetbrains.python.psi.resolve.RatedResolveResult;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -283,4 +285,37 @@ public final class TypeEvalContext {
return getContextFile(context);
}
}
private static class PyNullType implements PyType {
private PyNullType() {}
@Override
public @Nullable List<? extends RatedResolveResult> resolveMember(@NotNull String name,
@Nullable PyExpression location,
@NotNull AccessDirection direction,
@NotNull PyResolveContext resolveContext) {
return List.of();
}
@Override
public Object[] getCompletionVariants(String completionPrefix, PsiElement location, ProcessingContext context) {
return ArrayUtil.EMPTY_OBJECT_ARRAY;
}
@Override
public @Nullable String getName() {
return "null";
}
@Override
public boolean isBuiltin() {
return false;
}
@Override
public void assertValid(String message) {
}
private static final PyNullType INSTANCE = new PyNullType();
}
}