[FIR IDE] LC Add anonymous objects support
+minor fixes
This commit is contained in:
@@ -103,6 +103,8 @@ abstract class KtAnalysisSession(override val token: ValidityToken) : ValidityTo
|
||||
|
||||
fun KtProperty.getVariableSymbol(): KtVariableSymbol = symbolProvider.getVariableSymbol(this)
|
||||
|
||||
fun KtObjectLiteralExpression.getAnonymousObjectSymbol(): KtAnonymousObjectSymbol = symbolProvider.getAnonymousObjectSymbol(this)
|
||||
|
||||
fun KtClassOrObject.getClassOrObjectSymbol(): KtClassOrObjectSymbol = symbolProvider.getClassOrObjectSymbol(this)
|
||||
|
||||
fun KtPropertyAccessor.getPropertyAccessorSymbol(): KtPropertyAccessorSymbol = symbolProvider.getPropertyAccessorSymbol(this)
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.frontend.api.symbols
|
||||
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtAnnotatedSymbol
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithDeclarations
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithKind
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
|
||||
|
||||
abstract class KtAnonymousObjectSymbol : KtSymbolWithKind, KtAnnotatedSymbol, KtSymbolWithDeclarations {
|
||||
abstract val superTypes: List<KtType>
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtAnonymousObjectSymbol>
|
||||
}
|
||||
+5
-1
@@ -21,7 +21,10 @@ abstract class KtSymbolProvider : KtAnalysisSessionComponent() {
|
||||
is KtEnumEntry -> getEnumEntrySymbol(psi)
|
||||
is KtLambdaExpression -> getAnonymousFunctionSymbol(psi)
|
||||
is KtProperty -> getVariableSymbol(psi)
|
||||
is KtClassOrObject -> getClassOrObjectSymbol(psi)
|
||||
is KtClassOrObject -> {
|
||||
val literalExpression = (psi as? KtObjectDeclaration)?.parent as? KtObjectLiteralExpression
|
||||
literalExpression?.let(::getAnonymousObjectSymbol) ?: getClassOrObjectSymbol(psi)
|
||||
}
|
||||
is KtPropertyAccessor -> getPropertyAccessorSymbol(psi)
|
||||
else -> error("Cannot build symbol for ${psi::class}")
|
||||
}
|
||||
@@ -35,6 +38,7 @@ abstract class KtSymbolProvider : KtAnalysisSessionComponent() {
|
||||
abstract fun getAnonymousFunctionSymbol(psi: KtNamedFunction): KtAnonymousFunctionSymbol
|
||||
abstract fun getAnonymousFunctionSymbol(psi: KtLambdaExpression): KtAnonymousFunctionSymbol
|
||||
abstract fun getVariableSymbol(psi: KtProperty): KtVariableSymbol
|
||||
abstract fun getAnonymousObjectSymbol(psi: KtObjectLiteralExpression): KtAnonymousObjectSymbol
|
||||
abstract fun getClassOrObjectSymbol(psi: KtClassOrObject): KtClassOrObjectSymbol
|
||||
abstract fun getPropertyAccessorSymbol(psi: KtPropertyAccessor): KtPropertyAccessorSymbol
|
||||
|
||||
|
||||
+2
@@ -59,6 +59,8 @@ abstract class KtPropertySymbol : KtVariableSymbol(),
|
||||
|
||||
abstract val isOverride: Boolean
|
||||
|
||||
abstract val initializer: KtConstantValue?
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtPropertySymbol>
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user