[K/N] Fix FunctionReferenceLowering for bound refs to generic functions
4a2a77d9b9 introduced a regression
where for bound references to functions generic over their receiver
the generated class was also generic even if the function reference
itself only contained concrete types. This is fixed here.
This commit is contained in:
committed by
Space Team
parent
2573201a87
commit
150b8061e9
@@ -3,11 +3,26 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// CHECK-LABEL: define internal void @"kfun:$foo$FUNCTION_REFERENCE$0.<init>#internal"
|
||||
// CHECK-SAME: i32
|
||||
|
||||
fun <T> T.foo() { println(this) }
|
||||
|
||||
fun main() {
|
||||
println(5::foo)
|
||||
// CHECK-LABEL: define void @"kfun:#bar(0:0){0\C2\A7<kotlin.Any?>}"
|
||||
// CHECK-SAME: (%struct.ObjHeader* [[x:%[0-9]+]])
|
||||
fun <BarTP> bar(x: BarTP) {
|
||||
// CHECK: call void @"kfun:$foo$FUNCTION_REFERENCE$0.<init>#internal"(%struct.ObjHeader* {{%[0-9]+}}, %struct.ObjHeader* [[x]])
|
||||
println(x::foo)
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @"kfun:#main(){}"
|
||||
fun main() {
|
||||
// CHECK: call void @"kfun:$foo$FUNCTION_REFERENCE$1.<init>#internal"(%struct.ObjHeader* {{%[0-9]+}}, i32 5)
|
||||
println(5::foo)
|
||||
|
||||
bar("hello")
|
||||
bar(42)
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define internal void @"kfun:$foo$FUNCTION_REFERENCE$0.<init>#internal"
|
||||
// CHECK-SAME: (%struct.ObjHeader* {{%[0-9]+}}, %struct.ObjHeader* {{%[0-9]+}})
|
||||
|
||||
// CHECK-LABEL: define internal void @"kfun:$foo$FUNCTION_REFERENCE$1.<init>#internal"
|
||||
// CHECK-SAME: (%struct.ObjHeader* {{%[0-9]+}}, i32 {{%[0-9]+}})
|
||||
|
||||
Reference in New Issue
Block a user