06684f207a
We only want to report signature clashes for declarations that come from the module currently being serialized. In GlobalDeclarationTable, declarations from other modules could also be stored. Checking whether a declaration is a Lazy IR declaration to determine if it comes from an external module works okay, but it is a hack which relies on an implementation detail of IR, which may or may not work in the future. Use a more robust logic here, since IrFileSerializer is always aware which declarations are declared in the current module and which are just referenced from it.
39 lines
1.0 KiB
Kotlin
Vendored
39 lines
1.0 KiB
Kotlin
Vendored
// FIR_IDENTICAL
|
|
// RENDER_ALL_DIAGNOSTICS_FULL_TEXT
|
|
|
|
// MODULE: lib
|
|
package com.example.klib.serialization.diagnostics
|
|
|
|
fun movedToLib() {}
|
|
|
|
// MODULE: main(lib)
|
|
// FILE: foo.kt
|
|
package com.example.klib.serialization.diagnostics
|
|
|
|
<!CONFLICTING_KLIB_SIGNATURES_ERROR!>@Deprecated("", level = DeprecationLevel.HIDDEN)
|
|
fun foo(): Long = 0L<!>
|
|
|
|
// FILE: main.kt
|
|
package com.example.klib.serialization.diagnostics
|
|
|
|
<!CONFLICTING_KLIB_SIGNATURES_ERROR!>@Deprecated("", level = DeprecationLevel.HIDDEN)
|
|
fun foo(): String = ""<!>
|
|
|
|
<!CONFLICTING_KLIB_SIGNATURES_ERROR!>fun foo(): Int = 0<!>
|
|
|
|
@Deprecated("This function moved to the 'lib' module", level = DeprecationLevel.HIDDEN)
|
|
fun movedToLib() {}
|
|
|
|
fun main() {
|
|
foo()
|
|
movedToLib()
|
|
|
|
// Test that the diagnostic is reported for declarations that are referenced before they are declared
|
|
bar()
|
|
}
|
|
|
|
<!CONFLICTING_KLIB_SIGNATURES_ERROR!>@Deprecated("", level = DeprecationLevel.HIDDEN)
|
|
fun bar(): Long = 0L<!>
|
|
|
|
<!CONFLICTING_KLIB_SIGNATURES_ERROR!>fun bar(): Long = 1L<!>
|