Expose local scopes to use in completion

This commit is contained in:
Denis Zharkov
2020-06-19 15:16:16 +03:00
committed by Ilya Kirillov
parent 6129f4bcef
commit 97d4918ed3
7 changed files with 79 additions and 17 deletions
@@ -34,6 +34,8 @@ class PersistentMultimap<K, V> private constructor(private val map: PersistentMa
operator fun get(key: K): List<V> {
return map[key] ?: emptyList()
}
val keys: ImmutableSet<K> get() = map.keys
}
class PersistentSetMultimap<K, V> private constructor(private val map: PersistentMap<K, PersistentSet<V>>) {
@@ -63,4 +65,4 @@ class PersistentSetMultimap<K, V> private constructor(private val map: Persisten
operator fun get(key: K): Set<V> {
return map[key] ?: emptySet()
}
}
}
@@ -83,6 +83,8 @@ open class FirBodyResolveTransformer(
return data.expectedTypeRef.compose()
}
open fun onBeforeStatementResolution(statement: FirStatement) {}
// ------------------------------------- Expressions -------------------------------------
override fun transformExpression(expression: FirExpression, data: ResolutionMode): CompositeTransformResult<FirStatement> {
@@ -291,6 +291,9 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
block.transformStatementsIndexed(transformer) { index ->
val value = if (index == numberOfStatements - 1) data else ResolutionMode.ContextIndependent
transformer.onBeforeStatementResolution(block.statements[index])
TransformData.Data(value)
}
if (data == ResolutionMode.ContextIndependent) {
@@ -70,4 +70,6 @@ class FirLocalScope private constructor(
}
override fun mayContainName(name: Name) = properties.containsKey(name) || functions[name].isNotEmpty() || classes.containsKey(name)
override fun getCallableNames(): Set<Name> = properties.keys + functions.keys + classes.keys
}