FIR: do not allow to resolve to type parameters in supertype position
This commit is contained in:
+3
-4
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
@@ -33,7 +34,6 @@ class FirTypeResolveTransformer(val superTypesOnly: Boolean = false) : FirTransf
|
|||||||
|
|
||||||
lateinit var scope: FirCompositeScope
|
lateinit var scope: FirCompositeScope
|
||||||
lateinit var packageFqName: FqName
|
lateinit var packageFqName: FqName
|
||||||
lateinit var file: FirFile
|
|
||||||
private var classLikeName: FqName = FqName.ROOT
|
private var classLikeName: FqName = FqName.ROOT
|
||||||
|
|
||||||
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
|
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
|
||||||
@@ -44,7 +44,6 @@ class FirTypeResolveTransformer(val superTypesOnly: Boolean = false) : FirTransf
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
packageFqName = file.packageFqName
|
packageFqName = file.packageFqName
|
||||||
this.file = file
|
|
||||||
return super.transformFile(file, data)
|
return super.transformFile(file, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +104,7 @@ class FirTypeResolveTransformer(val superTypesOnly: Boolean = false) : FirTransf
|
|||||||
override fun transformType(type: FirType, data: Nothing?): CompositeTransformResult<FirType> {
|
override fun transformType(type: FirType, data: Nothing?): CompositeTransformResult<FirType> {
|
||||||
val typeResolver = FirTypeResolver.getInstance(type.session)
|
val typeResolver = FirTypeResolver.getInstance(type.session)
|
||||||
type.transformChildren(this, null)
|
type.transformChildren(this, null)
|
||||||
return transformType(type, typeResolver.resolveType(type, scope))
|
return transformType(type, typeResolver.resolveType(type, scope, position = FirPosition.OTHER))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun transformType(type: FirType, resolvedType: ConeKotlinType): CompositeTransformResult<FirType> {
|
private fun transformType(type: FirType, resolvedType: ConeKotlinType): CompositeTransformResult<FirType> {
|
||||||
@@ -138,7 +137,7 @@ class FirTypeResolveTransformer(val superTypesOnly: Boolean = false) : FirTransf
|
|||||||
|
|
||||||
override fun transformType(type: FirType, data: Nothing?): CompositeTransformResult<FirType> {
|
override fun transformType(type: FirType, data: Nothing?): CompositeTransformResult<FirType> {
|
||||||
val typeResolver = FirTypeResolver.getInstance(type.session)
|
val typeResolver = FirTypeResolver.getInstance(type.session)
|
||||||
val symbol = typeResolver.resolveToSymbol(type, scope)
|
val symbol = typeResolver.resolveToSymbol(type, scope, position = FirPosition.SUPER_TYPE_OR_EXPANSION)
|
||||||
val myTransformer = this@FirTypeResolveTransformer
|
val myTransformer = this@FirTypeResolveTransformer
|
||||||
|
|
||||||
if (type !is FirUserType) return myTransformer.transformType(type, data)
|
if (type !is FirUserType) return myTransformer.transformType(type, data)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.resolve
|
package org.jetbrains.kotlin.fir.resolve
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.service
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
@@ -15,8 +16,8 @@ import org.jetbrains.kotlin.fir.types.FirUserType
|
|||||||
|
|
||||||
interface FirTypeResolver {
|
interface FirTypeResolver {
|
||||||
|
|
||||||
fun resolveType(type: FirType, scope: FirScope): ConeKotlinType
|
fun resolveType(type: FirType, scope: FirScope, position: FirPosition): ConeKotlinType
|
||||||
fun resolveToSymbol(type: FirType, scope: FirScope): ConeSymbol?
|
fun resolveToSymbol(type: FirType, scope: FirScope, position: FirPosition): ConeSymbol?
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getInstance(session: FirSession): FirTypeResolver = session.service()
|
fun getInstance(session: FirSession): FirTypeResolver = session.service()
|
||||||
|
|||||||
+14
-8
@@ -9,10 +9,10 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||||
import org.jetbrains.kotlin.fir.render
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
@@ -53,9 +53,7 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
}
|
}
|
||||||
is FirTypeAlias -> {
|
is FirTypeAlias -> {
|
||||||
val coneTypeSafe = fir.expandedType.coneTypeSafe<ConeClassLikeType>()
|
val coneTypeSafe = fir.expandedType.coneTypeSafe<ConeClassLikeType>()
|
||||||
val expansion = if (coneTypeSafe != null) coneTypeSafe else {
|
val expansion = coneTypeSafe ?: return ConeKotlinErrorType("Couldn't resolve expansion")
|
||||||
return ConeKotlinErrorType("Couldn't resolve expansion")
|
|
||||||
}
|
|
||||||
|
|
||||||
ConeAbbreviatedTypeImpl(
|
ConeAbbreviatedTypeImpl(
|
||||||
abbreviationSymbol = this as ConeClassLikeSymbol,
|
abbreviationSymbol = this as ConeClassLikeSymbol,
|
||||||
@@ -67,7 +65,11 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveToSymbol(type: FirType, scope: FirScope): ConeSymbol? {
|
override fun resolveToSymbol(
|
||||||
|
type: FirType,
|
||||||
|
scope: FirScope,
|
||||||
|
position: FirPosition
|
||||||
|
): ConeSymbol? {
|
||||||
return when (type) {
|
return when (type) {
|
||||||
is FirResolvedType -> type.coneTypeSafe<ConeSymbolBasedType>()?.symbol
|
is FirResolvedType -> type.coneTypeSafe<ConeSymbolBasedType>()?.symbol
|
||||||
is FirUserType -> {
|
is FirUserType -> {
|
||||||
@@ -75,7 +77,7 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
val qualifierResolver = FirQualifierResolver.getInstance(type.session)
|
val qualifierResolver = FirQualifierResolver.getInstance(type.session)
|
||||||
|
|
||||||
var resolvedSymbol: ConeSymbol? = null
|
var resolvedSymbol: ConeSymbol? = null
|
||||||
scope.processClassifiersByName(type.qualifier.first().name) { symbol ->
|
scope.processClassifiersByName(type.qualifier.first().name, position) { symbol ->
|
||||||
resolvedSymbol = when (symbol) {
|
resolvedSymbol = when (symbol) {
|
||||||
is ConeClassLikeSymbol -> {
|
is ConeClassLikeSymbol -> {
|
||||||
qualifierResolver.resolveSymbolWithPrefix(type.qualifier, symbol.classId)
|
qualifierResolver.resolveSymbolWithPrefix(type.qualifier, symbol.classId)
|
||||||
@@ -101,11 +103,15 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
return symbol.toConeKotlinType(type.qualifier, type.session) ?: ConeKotlinErrorType("Failed to resolve qualified type")
|
return symbol.toConeKotlinType(type.qualifier, type.session) ?: ConeKotlinErrorType("Failed to resolve qualified type")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveType(type: FirType, scope: FirScope): ConeKotlinType {
|
override fun resolveType(
|
||||||
|
type: FirType,
|
||||||
|
scope: FirScope,
|
||||||
|
position: FirPosition
|
||||||
|
): ConeKotlinType {
|
||||||
return when (type) {
|
return when (type) {
|
||||||
is FirResolvedType -> type.type
|
is FirResolvedType -> type.type
|
||||||
is FirUserType -> {
|
is FirUserType -> {
|
||||||
resolveUserType(type, resolveToSymbol(type, scope), scope)
|
resolveUserType(type, resolveToSymbol(type, scope, position), scope)
|
||||||
}
|
}
|
||||||
is FirErrorType -> {
|
is FirErrorType -> {
|
||||||
ConeKotlinErrorType(type.reason)
|
ConeKotlinErrorType(type.reason)
|
||||||
|
|||||||
@@ -9,5 +9,14 @@ import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface FirScope {
|
interface FirScope {
|
||||||
fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean
|
fun processClassifiersByName(
|
||||||
|
name: Name,
|
||||||
|
position: FirPosition,
|
||||||
|
processor: (ConeSymbol) -> Boolean
|
||||||
|
): Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class FirPosition(val allowTypeParameters: Boolean = true) {
|
||||||
|
SUPER_TYPE_OR_EXPANSION(allowTypeParameters = false),
|
||||||
|
OTHER
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2018 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.scopes
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
|
interface FirTypeParameterScope : FirScope {
|
||||||
|
val typeParameters: Map<Name, List<FirTypeParameter>>
|
||||||
|
|
||||||
|
override fun processClassifiersByName(
|
||||||
|
name: Name,
|
||||||
|
position: FirPosition,
|
||||||
|
processor: (ConeSymbol) -> Boolean
|
||||||
|
): Boolean {
|
||||||
|
val matchedTypeParameters = typeParameters[name] ?: return true
|
||||||
|
|
||||||
|
return matchedTypeParameters.all { processor(it.symbol) }
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-12
@@ -6,17 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.fir.scopes.impl
|
package org.jetbrains.kotlin.fir.scopes.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeParameterScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
class FirClassLikeTypeParameterScope(classLike: FirMemberDeclaration) : FirScope {
|
class FirClassLikeTypeParameterScope(classLike: FirMemberDeclaration) : FirTypeParameterScope {
|
||||||
|
override val typeParameters = classLike.typeParameters.groupBy { it.name }
|
||||||
val typeParameters = classLike.typeParameters.groupBy { it.name }
|
|
||||||
|
|
||||||
override fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean {
|
|
||||||
val matchedTypeParameters = typeParameters[name] ?: return true
|
|
||||||
|
|
||||||
return matchedTypeParameters.all { processor(it.symbol) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -5,14 +5,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.scopes.impl
|
package org.jetbrains.kotlin.fir.scopes.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirTypeParameterScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class FirCompositeScope(val scopes: MutableList<FirScope>) : FirScope {
|
class FirCompositeScope(val scopes: MutableList<FirScope>) : FirScope {
|
||||||
override fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean {
|
override fun processClassifiersByName(
|
||||||
|
name: Name,
|
||||||
|
position: FirPosition,
|
||||||
|
processor: (ConeSymbol) -> Boolean
|
||||||
|
): Boolean {
|
||||||
for (scope in scopes) {
|
for (scope in scopes) {
|
||||||
if (!scope.processClassifiersByName(name, processor)) {
|
if (!position.allowTypeParameters && scope is FirTypeParameterScope) continue
|
||||||
|
if (!scope.processClassifiersByName(name, position, processor)) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirImport
|
import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.toSymbol
|
import org.jetbrains.kotlin.fir.symbols.toSymbol
|
||||||
@@ -20,7 +21,11 @@ class FirExplicitImportingScope(imports: List<FirImport>) : FirScope {
|
|||||||
.filter { !it.isAllUnder }
|
.filter { !it.isAllUnder }
|
||||||
.groupBy { it.aliasName ?: it.resolvedFqName.shortClassName }
|
.groupBy { it.aliasName ?: it.resolvedFqName.shortClassName }
|
||||||
|
|
||||||
override fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean {
|
override fun processClassifiersByName(
|
||||||
|
name: Name,
|
||||||
|
position: FirPosition,
|
||||||
|
processor: (ConeSymbol) -> Boolean
|
||||||
|
): Boolean {
|
||||||
val imports = simpleImports[name] ?: return true
|
val imports = simpleImports[name] ?: return true
|
||||||
for (import in imports) {
|
for (import in imports) {
|
||||||
if (!processor(import.resolvedFqName.toSymbol())) {
|
if (!processor(import.resolvedFqName.toSymbol())) {
|
||||||
|
|||||||
+3
-12
@@ -6,17 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.fir.scopes.impl
|
package org.jetbrains.kotlin.fir.scopes.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
|
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeParameterScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
class FirFunctionTypeParameterScope(function: FirNamedFunction) : FirScope {
|
class FirFunctionTypeParameterScope(function: FirNamedFunction) : FirTypeParameterScope {
|
||||||
|
override val typeParameters = function.typeParameters.groupBy { it.name }
|
||||||
val typeParameters = function.typeParameters.groupBy { it.name }
|
|
||||||
|
|
||||||
override fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean {
|
|
||||||
val matchedTypeParameters = typeParameters[name] ?: return true
|
|
||||||
|
|
||||||
return matchedTypeParameters.all { processor(it.symbol) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+6
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.toSymbol
|
import org.jetbrains.kotlin.fir.symbols.toSymbol
|
||||||
@@ -22,7 +23,11 @@ class FirNestedClassifierScope(val classId: ClassId, val session: FirSession) :
|
|||||||
return firProvider.getFirClassifierByFqName(this)
|
return firProvider.getFirClassifierByFqName(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean {
|
override fun processClassifiersByName(
|
||||||
|
name: Name,
|
||||||
|
position: FirPosition,
|
||||||
|
processor: (ConeSymbol) -> Boolean
|
||||||
|
): Boolean {
|
||||||
val child = ClassId(classId.packageFqName, classId.relativeClassName.child(name), false)
|
val child = ClassId(classId.packageFqName, classId.relativeClassName.child(name), false)
|
||||||
return child.getFir() == null || processor(child.toSymbol())
|
return child.getFir() == null || processor(child.toSymbol())
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.service
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
@@ -16,7 +17,11 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class FirSelfImportingScope(val fqName: FqName, val session: FirSession) : FirScope {
|
class FirSelfImportingScope(val fqName: FqName, val session: FirSession) : FirScope {
|
||||||
override fun processClassifiersByName(name: Name, processor: (ConeSymbol) -> Boolean): Boolean {
|
override fun processClassifiersByName(
|
||||||
|
name: Name,
|
||||||
|
position: FirPosition,
|
||||||
|
processor: (ConeSymbol) -> Boolean
|
||||||
|
): Boolean {
|
||||||
val unambiguousFqName = ClassId(fqName, name)
|
val unambiguousFqName = ClassId(fqName, name)
|
||||||
|
|
||||||
val firProvider = session.service<FirProvider>()
|
val firProvider = session.service<FirProvider>()
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ FILE: typeParameterVsNested.kt
|
|||||||
public? abstract property z(val): R/test/My.T/
|
public? abstract property z(val): R/test/My.T/
|
||||||
public? get(): R/test/My.T/
|
public? get(): R/test/My.T/
|
||||||
|
|
||||||
(resolved) public? final class Some() : R/T/ {
|
(resolved) public? final class Some() : R/test/My.T/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user