Replace explicit ScriptDescriptor in resolver with appropriate superclass

This commit is contained in:
Ilya Chernikov
2019-02-11 16:18:13 +01:00
parent 6e120b2173
commit 0839b44ebb
7 changed files with 16 additions and 19 deletions
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import java.util.Collection;
@@ -40,7 +39,7 @@ public interface BodiesResolveContext {
@Mutable
Map<KtSecondaryConstructor, ClassConstructorDescriptor> getSecondaryConstructors();
@Mutable
Map<KtScript, LazyScriptDescriptor> getScripts();
Map<KtScript, ClassDescriptorWithResolutionScopes> getScripts();
@Mutable
Map<KtProperty, PropertyDescriptor> getProperties();
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProvider;
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import java.io.PrintStream;
@@ -46,7 +45,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
private final Map<KtDestructuringDeclarationEntry, PropertyDescriptor> destructuringDeclarationEntries = Maps.newLinkedHashMap();
private Map<KtCallableDeclaration, CallableMemberDescriptor> members = null;
private final Map<KtScript, LazyScriptDescriptor> scripts = Maps.newLinkedHashMap();
private final Map<KtScript, ClassDescriptorWithResolutionScopes> scripts = Maps.newLinkedHashMap();
private final TopDownAnalysisMode topDownAnalysisMode;
private final DeclarationScopeProvider declarationScopeProvider;
@@ -114,7 +113,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
@Override
@NotNull
public Map<KtScript, LazyScriptDescriptor> getScripts() {
public Map<KtScript, ClassDescriptorWithResolutionScopes> getScripts() {
return scripts;
}
@@ -61,8 +61,8 @@ open class LazyDeclarationResolver @Deprecated("") constructor(
open fun getClassDescriptor(classOrObject: KtClassOrObject, location: LookupLocation): ClassDescriptor =
findClassDescriptor(classOrObject, location)
fun getScriptDescriptor(script: KtScript, location: LookupLocation): ScriptDescriptor =
findClassDescriptor(script, location) as ScriptDescriptor
fun getScriptDescriptor(script: KtScript, location: LookupLocation): ClassDescriptorWithResolutionScopes =
findClassDescriptor(script, location) as ClassDescriptorWithResolutionScopes
private fun findClassDescriptorIfAny(
classObjectOrScript: KtNamedDeclaration,
@@ -294,7 +294,7 @@ public class ResolveSession implements KotlinCodeAnalyzer, LazyClassContext {
}
@NotNull
public ScriptDescriptor getScriptDescriptor(@NotNull KtScript script) {
public ClassDescriptorWithResolutionScopes getScriptDescriptor(@NotNull KtScript script) {
return lazyDeclarationResolver.getScriptDescriptor(script, NoLookupLocation.FOR_SCRIPT);
}
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.resolve.lazy.descriptors
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.openapi.vfs.local.CoreLocalFileSystem
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiManager
import org.jetbrains.kotlin.descriptors.*
@@ -26,7 +25,8 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.diagnostics.Errors.*
import org.jetbrains.kotlin.diagnostics.Errors.MISSING_IMPORTED_SCRIPT_FILE
import org.jetbrains.kotlin.diagnostics.Errors.MISSING_IMPORTED_SCRIPT_PSI
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
@@ -170,7 +170,7 @@ class LazyScriptDescriptor(
// TODO: check if this is the behavior we want to have - see #KT-28916
val ktScript = (psiFile as? KtFile)?.declarations?.firstIsInstanceOrNull<KtScript>()
?: return null
return resolveSession.getScriptDescriptor(ktScript)
return resolveSession.getScriptDescriptor(ktScript) as ScriptDescriptor
}
}