Replace explicit ScriptDescriptor in resolver with appropriate superclass
This commit is contained in:
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.diagnostics.Severity
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -40,7 +40,6 @@ import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||
import org.jetbrains.kotlin.resolve.lazy.*
|
||||
import org.jetbrains.kotlin.resolve.lazy.data.KtClassLikeInfo
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.*
|
||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor
|
||||
import org.jetbrains.kotlin.resolve.scopes.ImportingScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.utils.parentsWithSelf
|
||||
import org.jetbrains.kotlin.resolve.scopes.utils.replaceImportingScopes
|
||||
@@ -80,14 +79,14 @@ class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) {
|
||||
}
|
||||
|
||||
interface ReplLineAnalysisResult {
|
||||
val scriptDescriptor: ScriptDescriptor?
|
||||
val scriptDescriptor: ClassDescriptorWithResolutionScopes?
|
||||
val diagnostics: Diagnostics
|
||||
|
||||
data class Successful(override val scriptDescriptor: ScriptDescriptor, override val diagnostics: Diagnostics) :
|
||||
data class Successful(override val scriptDescriptor: ClassDescriptorWithResolutionScopes, override val diagnostics: Diagnostics) :
|
||||
ReplLineAnalysisResult
|
||||
|
||||
data class WithErrors(override val diagnostics: Diagnostics) : ReplLineAnalysisResult {
|
||||
override val scriptDescriptor: ScriptDescriptor? get() = null
|
||||
override val scriptDescriptor: ClassDescriptorWithResolutionScopes? get() = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,7 +191,7 @@ class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) {
|
||||
}
|
||||
}
|
||||
|
||||
fun lineSuccess(ktFile: KtFile, codeLine: ReplCodeLine, scriptDescriptor: LazyScriptDescriptor) {
|
||||
fun lineSuccess(ktFile: KtFile, codeLine: ReplCodeLine, scriptDescriptor: ClassDescriptorWithResolutionScopes) {
|
||||
val successfulLine = LineInfo.SuccessfulLine(ktFile, successfulLines.lastValue(), scriptDescriptor)
|
||||
submittedLines[ktFile] = successfulLine
|
||||
successfulLines.add(CompiledReplCodeLine(ktFile.name, codeLine), successfulLine)
|
||||
@@ -213,7 +212,7 @@ class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) {
|
||||
class SuccessfulLine(
|
||||
override val linePsi: KtFile,
|
||||
override val parentLine: SuccessfulLine?,
|
||||
val lineDescriptor: LazyScriptDescriptor
|
||||
val lineDescriptor: ClassDescriptorWithResolutionScopes
|
||||
) : LineInfo()
|
||||
|
||||
class FailedLine(override val linePsi: KtFile, override val parentLine: SuccessfulLine?) : LineInfo()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -758,7 +758,7 @@ class ResolveElementCache(
|
||||
|
||||
override fun getDeclaringScope(declaration: KtDeclaration): LexicalScope? = declaringScopes(declaration)
|
||||
|
||||
override fun getScripts(): MutableMap<KtScript, LazyScriptDescriptor> = hashMapOf()
|
||||
override fun getScripts(): MutableMap<KtScript, ClassDescriptorWithResolutionScopes> = hashMapOf()
|
||||
|
||||
override fun getOuterDataFlowInfo(): DataFlowInfo = DataFlowInfo.EMPTY
|
||||
|
||||
|
||||
Reference in New Issue
Block a user