FIR: add getClassifierNames for FirScope

This commit is contained in:
Ilya Kirillov
2020-07-07 14:37:36 +03:00
parent 656086f90a
commit d62500531b
7 changed files with 33 additions and 7 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.
*/
@@ -49,6 +49,10 @@ class JavaClassUseSiteMemberScope(
return declaredMemberScope.getCallableNames() + superTypesScope.getCallableNames()
}
override fun getClassifierNames(): Set<Name> {
return declaredMemberScope.getClassifierNames() + superTypesScope.getClassifierNames()
}
private fun generateAccessorSymbol(
functionSymbol: FirFunctionSymbol<*>,
syntheticPropertyName: Name,
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.
*/
@@ -80,6 +80,10 @@ class FirClassDeclaredMemberScope(
override fun getCallableNames(): Set<Name> {
return callablesIndex.keys
}
override fun getClassifierNames(): Set<Name> {
return nestedClassifierScope?.getClassifierNames().orEmpty()
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.
*/
@@ -32,4 +32,8 @@ class FirLazyNestedClassifierScope(
processor(symbol, ConeSubstitutor.Empty)
}
override fun getClassifierNames(): Set<Name> {
return existingNames.toSet()
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.
*/
@@ -43,6 +43,10 @@ class FirNestedClassifierScope(val klass: FirClass<*>) : FirScope() {
}
fun getClassifierByName(name: Name): FirRegularClassSymbol? = classIndex[name]
override fun getClassifierNames(): Set<Name> {
return classIndex.keys
}
}
fun FirTypeParameterRef.toConeType(): ConeKotlinType = ConeTypeParameterTypeImpl(ConeTypeParameterLookupTag(symbol), isNullable = false)
@@ -1,6 +1,6 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
* 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.fir.scopes.impl
@@ -345,6 +345,10 @@ class FirTypeIntersectionScope private constructor(
return scopes.flatMapTo(mutableSetOf()) { it.getCallableNames() }
}
override fun getClassifierNames(): Set<Name> {
return scopes.flatMapTo(hashSetOf()) { it.getClassifierNames() }
}
companion object {
fun prepareIntersectionScope(
session: FirSession,
@@ -48,4 +48,8 @@ class FirCompositeScope(private val scopes: Iterable<FirScope>) : FirScope() {
override fun getCallableNames(): Set<Name> {
return scopes.flatMapTo(mutableSetOf()) { it.getCallableNames() }
}
override fun getClassifierNames(): Set<Name> {
return scopes.flatMapTo(hashSetOf()) { it.getClassifierNames() }
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.
*/
@@ -35,6 +35,8 @@ abstract class FirScope {
open fun mayContainName(name: Name) = true
open fun getCallableNames(): Set<Name> = emptySet()
open fun getClassifierNames(): Set<Name> = emptySet()
}
fun FirTypeScope.processOverriddenFunctionsAndSelf(