FIR: Support import-references to callables

This commit is contained in:
Denis Zharkov
2019-03-25 16:14:13 +03:00
parent ccca813792
commit 7a19e269fd
24 changed files with 211 additions and 99 deletions
@@ -8,14 +8,16 @@ package org.jetbrains.kotlin.fir.declarations
import org.jetbrains.kotlin.fir.visitors.FirVisitor
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
interface FirResolvedImport : FirImport {
val packageFqName: FqName
val relativeClassName: FqName?
val resolvedClassId: ClassId? get() = relativeClassName?.let { ClassId(packageFqName, it, false) }
val resolvedFqName: ClassId?
val importedName: Name? get() = importedFqName?.shortName()
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitResolvedImport(this, data)
}
}
@@ -9,21 +9,15 @@ import org.jetbrains.kotlin.fir.FirAbstractElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirImport
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
class FirResolvedImportImpl(
session: FirSession,
val delegate: FirImport,
override val resolvedFqName: ClassId
override val packageFqName: FqName,
override val relativeClassName: FqName?
) : FirAbstractElement(session, delegate.psi), FirResolvedImport, FirImport {
override val packageFqName: FqName
get() = resolvedFqName.packageFqName
override val relativeClassName: FqName
get() = resolvedFqName.relativeClassName
override val aliasName: Name?
get() = delegate.aliasName
@@ -32,4 +26,4 @@ class FirResolvedImportImpl(
override val isAllUnder: Boolean
get() = delegate.isAllUnder
}
}
@@ -1,35 +0,0 @@
/*
* 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.declarations.impl
import org.jetbrains.kotlin.fir.FirAbstractElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirImport
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
class FirResolvedPackageStarImport(
session: FirSession,
val delegate: FirImport,
override val packageFqName: FqName
) : FirAbstractElement(session, delegate.psi), FirResolvedImport, FirImport {
override val relativeClassName: FqName?
get() = null
override val resolvedFqName: ClassId?
get() = null
override val aliasName: Name?
get() = delegate.aliasName
override val importedFqName: FqName?
get() = delegate.importedFqName
override val isAllUnder: Boolean
get() = delegate.isAllUnder
}