Add test about dependsOn dependency and stdlib-common
This commit is contained in:
committed by
Space Team
parent
6c062b0cea
commit
520ae725d1
+11
@@ -0,0 +1,11 @@
|
|||||||
|
package test.pkg
|
||||||
|
|
||||||
|
actual class PointerEvent {
|
||||||
|
actual val keyboardModifiers = PointerKeyboardModifiers(42)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal actual typealias NativePointerKeyboardModifiers = Int
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
val m = PointerEvent().keyboardModifiers.packedValue
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
package test.pkg
|
||||||
|
|
||||||
|
expect class PointerEvent {
|
||||||
|
val keyboardModifiers: PointerKeyboardModifiers
|
||||||
|
}
|
||||||
|
|
||||||
|
expect class NativePointerKeyboardModifiers
|
||||||
|
|
||||||
|
@kotlin.jvm.JvmInline
|
||||||
|
value class PointerKeyboardModifiers(val packedValue: NativePointerKeyboardModifiers)
|
||||||
+68
-2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.session.buil
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
import org.jetbrains.kotlin.analysis.api.analyze
|
import org.jetbrains.kotlin.analysis.api.analyze
|
||||||
|
import org.jetbrains.kotlin.analysis.api.annotations.annotations
|
||||||
import org.jetbrains.kotlin.analysis.api.calls.KtSuccessCallInfo
|
import org.jetbrains.kotlin.analysis.api.calls.KtSuccessCallInfo
|
||||||
import org.jetbrains.kotlin.analysis.api.calls.successfulFunctionCallOrNull
|
import org.jetbrains.kotlin.analysis.api.calls.successfulFunctionCallOrNull
|
||||||
import org.jetbrains.kotlin.analysis.api.calls.symbol
|
import org.jetbrains.kotlin.analysis.api.calls.symbol
|
||||||
@@ -15,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeTokenProvider
|
|||||||
import org.jetbrains.kotlin.analysis.api.standalone.KtAlwaysAccessibleLifetimeTokenProvider
|
import org.jetbrains.kotlin.analysis.api.standalone.KtAlwaysAccessibleLifetimeTokenProvider
|
||||||
import org.jetbrains.kotlin.analysis.api.standalone.buildStandaloneAnalysisAPISession
|
import org.jetbrains.kotlin.analysis.api.standalone.buildStandaloneAnalysisAPISession
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtLibraryModule
|
import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtLibraryModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtSdkModule
|
import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtSdkModule
|
||||||
@@ -26,8 +28,7 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
@@ -72,6 +73,71 @@ class StandaloneSessionBuilderTest : TestWithDisposable() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testJvmInlineOnCommon() {
|
||||||
|
// Example from https://youtrack.jetbrains.com/issue/KT-55085
|
||||||
|
val root = "jvmInlineOnCommon"
|
||||||
|
lateinit var sourceModule: KtSourceModule
|
||||||
|
val session = buildStandaloneAnalysisAPISession(disposable) {
|
||||||
|
registerProjectService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider())
|
||||||
|
|
||||||
|
buildKtModuleProvider {
|
||||||
|
platform = CommonPlatforms.defaultCommonPlatform
|
||||||
|
val stdlib = addModule(
|
||||||
|
buildKtLibraryModule {
|
||||||
|
addBinaryRoot(Paths.get("dist/common/kotlin-stdlib-common.jar"))
|
||||||
|
platform = CommonPlatforms.defaultCommonPlatform
|
||||||
|
libraryName = "stdlib"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
val commonModule = addModule(
|
||||||
|
buildKtSourceModule {
|
||||||
|
addSourceRoot(testDataPath(root).resolve("commonMain"))
|
||||||
|
addRegularDependency(stdlib)
|
||||||
|
platform = CommonPlatforms.defaultCommonPlatform
|
||||||
|
moduleName = "common"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
sourceModule = addModule(
|
||||||
|
buildKtSourceModule {
|
||||||
|
addSourceRoot(testDataPath(root).resolve("androidMain"))
|
||||||
|
addDependsOnDependency(commonModule)
|
||||||
|
platform = JvmPlatforms.defaultJvmPlatform
|
||||||
|
moduleName = "android"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val ktFile = session.modulesWithFiles.getValue(sourceModule).single() as KtFile
|
||||||
|
|
||||||
|
// Test dependsOn dependency: expect in the common module, actual "typealias" in the platform-specific module
|
||||||
|
val testFunction = ktFile.findDescendantOfType<KtFunction>()!!
|
||||||
|
val localVariable = testFunction.findDescendantOfType<KtProperty>()!!
|
||||||
|
analyze(localVariable) {
|
||||||
|
val localVariableSymbol = localVariable.getVariableSymbol()
|
||||||
|
val type = localVariableSymbol.returnType as KtNonErrorClassType
|
||||||
|
Assertions.assertEquals(
|
||||||
|
ClassId(FqName("test.pkg"), FqName("NativePointerKeyboardModifiers"), isLocal = false),
|
||||||
|
type.classId
|
||||||
|
)
|
||||||
|
// expanded to `actual` `typealias`
|
||||||
|
val expandedType = type.fullyExpandedType
|
||||||
|
Assertions.assertTrue(expandedType.isInt)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test stdlib-common: @JvmInline in the common module
|
||||||
|
val actualClass = ktFile.findDescendantOfType<KtClassOrObject>()!!
|
||||||
|
val actualProperty = actualClass.findDescendantOfType<KtProperty>()!!
|
||||||
|
analyze(actualProperty) {
|
||||||
|
val symbol = actualProperty.getVariableSymbol()
|
||||||
|
val type = symbol.returnType as KtNonErrorClassType
|
||||||
|
Assertions.assertEquals(
|
||||||
|
ClassId.fromString("kotlin/jvm/JvmInline"),
|
||||||
|
type.classSymbol.annotations.single().classId
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testResolveAgainstCommonKlib() {
|
fun testResolveAgainstCommonKlib() {
|
||||||
val root = "resolveAgainstCommonKLib"
|
val root = "resolveAgainstCommonKLib"
|
||||||
|
|||||||
Reference in New Issue
Block a user