Files
kotlin-fork/native/native.tests
Sergej Jaskiewicz eda30ff704 [klib] Implement diagnostics for clashing KLIB signatures
Now, we detect clashing signatures during serialization to KLIB and
report a compiler error if two or more declarations have the same
`IdSignature`

For example, for the following code:
```kotlin
@Deprecated("", level = DeprecationLevel.HIDDEN)
fun foo(): String = ""

fun foo(): Int = 0
```

the compiler will produce this diagnostic:
```
e: main.kt:1:1 Platform declaration clash: The following declarations
       have the same KLIB signature (/foo|foo(){}[0]):
    fun foo(): String defined in root package
    fun foo(): Int defined in root package
e: main.kt:4:1 Platform declaration clash: The following declarations
       have the same KLIB signature (/foo|foo(){}[0]):
    fun foo(): String defined in root package
    fun foo(): Int defined in root package
```

Note that we report this diagnostic during serialization and not earlier
(e.g., in fir2ir) for more robustness, so ensure that we check
exactly the signatures that will be written to a KLIB.
If we later introduce some annotation for customizing a declaration's
signature (e.g., for preserving binary compatibility), this
diagnostic will continue to work as expected.

^KT-63670 Fixed
2024-01-12 15:59:28 +00:00
..

Running tests

  • To run all tests, use ./gradlew :native:native.tests:test. Please note, this Gradle task is available only in development environment and it not available at CI server.
  • To execute certain tests only, use the appropriate Gradle tasks. Example: ./gradlew :native:native.tests:codegenBoxTest
  • To execute InteropIndexer tests for all targets, use:
for TARGET in android_x64 android_x86 android_arm32 android_arm64 \
              ios_arm32 ios_arm64 ios_x64 ios_simulator_arm64 \
              linux_x64 linux_arm64 linux_arm32_hfp linux_mips32 linux_mipsel32 \
              macos_x64 macos_arm64 \
              mingw_x86 mingw_x64 \
              tvos_arm64 tvos_x64 tvos_simulator_arm64 \
              wasm32 \
              watchos_arm32 watchos_arm64 watchos_x86 watchos_x64 watchos_simulator_arm64 watchos_device_arm64
do
  echo $TARGET             
  ./gradlew :native:native.tests:interopIndexerTest -Pkotlin.internal.native.test.target=$TARGET
done
  • To re-generate tests, use ./gradlew :native:native.tests:generateTests

For more details see Testing.