FIR IDE: Add parameter's and type's properties required for completion

This commit is contained in:
Roman Golyshev
2020-08-10 18:19:16 +03:00
parent 67ed33367f
commit b3a674abee
5 changed files with 16 additions and 6 deletions
@@ -13,7 +13,9 @@ abstract class KtEnumEntrySymbol : KtVariableLikeSymbol() {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER
}
abstract class KtParameterSymbol : KtVariableLikeSymbol()
abstract class KtParameterSymbol : KtVariableLikeSymbol() {
abstract val hasDefaultValue: Boolean
}
abstract class KtVariableSymbol : KtVariableLikeSymbol() {
abstract val isVal: Boolean
@@ -16,6 +16,8 @@ interface KtType : ValidityTokenOwner {
fun isEqualTo(other: KtType): Boolean
fun isSubTypeOf(superType: KtType): Boolean
val isBuiltInFunctionalType: Boolean
fun asStringForDebugging(): String
}
@@ -9,12 +9,13 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
import org.jetbrains.kotlin.idea.fir.findPsi
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorParameterSymbolKind
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbolKind
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion
import org.jetbrains.kotlin.name.Name
@@ -43,4 +44,6 @@ internal class KtFirConstructorValueParameterSymbol(
else -> KtConstructorParameterSymbolKind.NON_PROPERTY
}
}
override val hasDefaultValue: Boolean get() = withValidityAssertion { fir.defaultValue != null }
}
@@ -9,13 +9,12 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
import org.jetbrains.kotlin.idea.fir.findPsi
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionParameterSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbolKind
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion
import org.jetbrains.kotlin.name.Name
@@ -31,4 +30,5 @@ internal class KtFirFunctionValueParameterSymbol(
override val isVararg: Boolean get() = withValidityAssertion { fir.isVararg }
override val type: KtType by cached { builder.buildKtType(fir.returnTypeRef) }
override val symbolKind: KtSymbolKind get() = KtSymbolKind.LOCAL
override val hasDefaultValue: Boolean get() = withValidityAssertion { fir.defaultValue != null }
}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.frontend.api.fir.types
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.idea.frontend.api.*
@@ -45,6 +46,8 @@ internal interface KtFirType : KtType, ValidityTokenOwner {
)
}
override val isBuiltInFunctionalType: Boolean
get() = coneType.isBuiltinFunctionalType(typeCheckerContext.session)
}
internal class KtFirClassType(