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.NoScopeRecordCliBindingTrace
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||||
import org.jetbrains.kotlin.container.get
|
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.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.diagnostics.Severity
|
import org.jetbrains.kotlin.diagnostics.Severity
|
||||||
import org.jetbrains.kotlin.name.FqName
|
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.*
|
||||||
import org.jetbrains.kotlin.resolve.lazy.data.KtClassLikeInfo
|
import org.jetbrains.kotlin.resolve.lazy.data.KtClassLikeInfo
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.*
|
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.ImportingScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.parentsWithSelf
|
import org.jetbrains.kotlin.resolve.scopes.utils.parentsWithSelf
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.replaceImportingScopes
|
import org.jetbrains.kotlin.resolve.scopes.utils.replaceImportingScopes
|
||||||
@@ -80,14 +79,14 @@ class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface ReplLineAnalysisResult {
|
interface ReplLineAnalysisResult {
|
||||||
val scriptDescriptor: ScriptDescriptor?
|
val scriptDescriptor: ClassDescriptorWithResolutionScopes?
|
||||||
val diagnostics: Diagnostics
|
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
|
ReplLineAnalysisResult
|
||||||
|
|
||||||
data class WithErrors(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)
|
val successfulLine = LineInfo.SuccessfulLine(ktFile, successfulLines.lastValue(), scriptDescriptor)
|
||||||
submittedLines[ktFile] = successfulLine
|
submittedLines[ktFile] = successfulLine
|
||||||
successfulLines.add(CompiledReplCodeLine(ktFile.name, codeLine), successfulLine)
|
successfulLines.add(CompiledReplCodeLine(ktFile.name, codeLine), successfulLine)
|
||||||
@@ -213,7 +212,7 @@ class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) {
|
|||||||
class SuccessfulLine(
|
class SuccessfulLine(
|
||||||
override val linePsi: KtFile,
|
override val linePsi: KtFile,
|
||||||
override val parentLine: SuccessfulLine?,
|
override val parentLine: SuccessfulLine?,
|
||||||
val lineDescriptor: LazyScriptDescriptor
|
val lineDescriptor: ClassDescriptorWithResolutionScopes
|
||||||
) : LineInfo()
|
) : LineInfo()
|
||||||
|
|
||||||
class FailedLine(override val linePsi: KtFile, override val parentLine: SuccessfulLine?) : 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.descriptors.*;
|
||||||
import org.jetbrains.kotlin.psi.*;
|
import org.jetbrains.kotlin.psi.*;
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
|
||||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor;
|
|
||||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
|
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -40,7 +39,7 @@ public interface BodiesResolveContext {
|
|||||||
@Mutable
|
@Mutable
|
||||||
Map<KtSecondaryConstructor, ClassConstructorDescriptor> getSecondaryConstructors();
|
Map<KtSecondaryConstructor, ClassConstructorDescriptor> getSecondaryConstructors();
|
||||||
@Mutable
|
@Mutable
|
||||||
Map<KtScript, LazyScriptDescriptor> getScripts();
|
Map<KtScript, ClassDescriptorWithResolutionScopes> getScripts();
|
||||||
|
|
||||||
@Mutable
|
@Mutable
|
||||||
Map<KtProperty, PropertyDescriptor> getProperties();
|
Map<KtProperty, PropertyDescriptor> getProperties();
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.descriptors.*;
|
|||||||
import org.jetbrains.kotlin.psi.*;
|
import org.jetbrains.kotlin.psi.*;
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
|
||||||
import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProvider;
|
import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProvider;
|
||||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor;
|
|
||||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
|
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
|
||||||
|
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
@@ -46,7 +45,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
|||||||
private final Map<KtDestructuringDeclarationEntry, PropertyDescriptor> destructuringDeclarationEntries = Maps.newLinkedHashMap();
|
private final Map<KtDestructuringDeclarationEntry, PropertyDescriptor> destructuringDeclarationEntries = Maps.newLinkedHashMap();
|
||||||
private Map<KtCallableDeclaration, CallableMemberDescriptor> members = null;
|
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 TopDownAnalysisMode topDownAnalysisMode;
|
||||||
private final DeclarationScopeProvider declarationScopeProvider;
|
private final DeclarationScopeProvider declarationScopeProvider;
|
||||||
@@ -114,7 +113,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public Map<KtScript, LazyScriptDescriptor> getScripts() {
|
public Map<KtScript, ClassDescriptorWithResolutionScopes> getScripts() {
|
||||||
return scripts;
|
return scripts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ open class LazyDeclarationResolver @Deprecated("") constructor(
|
|||||||
open fun getClassDescriptor(classOrObject: KtClassOrObject, location: LookupLocation): ClassDescriptor =
|
open fun getClassDescriptor(classOrObject: KtClassOrObject, location: LookupLocation): ClassDescriptor =
|
||||||
findClassDescriptor(classOrObject, location)
|
findClassDescriptor(classOrObject, location)
|
||||||
|
|
||||||
fun getScriptDescriptor(script: KtScript, location: LookupLocation): ScriptDescriptor =
|
fun getScriptDescriptor(script: KtScript, location: LookupLocation): ClassDescriptorWithResolutionScopes =
|
||||||
findClassDescriptor(script, location) as ScriptDescriptor
|
findClassDescriptor(script, location) as ClassDescriptorWithResolutionScopes
|
||||||
|
|
||||||
private fun findClassDescriptorIfAny(
|
private fun findClassDescriptorIfAny(
|
||||||
classObjectOrScript: KtNamedDeclaration,
|
classObjectOrScript: KtNamedDeclaration,
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ public class ResolveSession implements KotlinCodeAnalyzer, LazyClassContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public ScriptDescriptor getScriptDescriptor(@NotNull KtScript script) {
|
public ClassDescriptorWithResolutionScopes getScriptDescriptor(@NotNull KtScript script) {
|
||||||
return lazyDeclarationResolver.getScriptDescriptor(script, NoLookupLocation.FOR_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.StandardFileSystems
|
||||||
import com.intellij.openapi.vfs.VirtualFileManager
|
import com.intellij.openapi.vfs.VirtualFileManager
|
||||||
import com.intellij.openapi.vfs.local.CoreLocalFileSystem
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
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.descriptors.annotations.FilteredAnnotations
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1
|
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
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.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
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
|
// TODO: check if this is the behavior we want to have - see #KT-28916
|
||||||
val ktScript = (psiFile as? KtFile)?.declarations?.firstIsInstanceOrNull<KtScript>()
|
val ktScript = (psiFile as? KtFile)?.declarations?.firstIsInstanceOrNull<KtScript>()
|
||||||
?: return null
|
?: 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 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
|
override fun getOuterDataFlowInfo(): DataFlowInfo = DataFlowInfo.EMPTY
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user