mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Ordinarily in valid code, pattern binding initializers in local types cannot capture anything from the outer scope. However one exception is lazy property initializers, which can reference the lazy property initializer context's 'self' parameter. If we computed captures for the outer function before synthesizing the lazy property getter, we would think that the 'self' parameter was a capture of the outer function, with hilarious results. Fixes <rdar://problem/54712320>.
15 lines
920 B
Swift
15 lines
920 B
Swift
// RUN: %target-swift-emit-silgen -primary-file %s %S/Inputs/lazy_properties_other.swift -module-name lazy_properties_multi | %FileCheck %s
|
|
// RUN: %target-swift-emit-silgen %S/Inputs/lazy_properties_other.swift -primary-file %s -module-name lazy_properties_multi | %FileCheck %s
|
|
// RUN: %target-swift-emit-silgen %S/Inputs/lazy_properties_other.swift %s -module-name lazy_properties_multi | %FileCheck %s
|
|
// RUN: %target-swift-emit-silgen %s %S/Inputs/lazy_properties_other.swift -module-name lazy_properties_multi | %FileCheck %s
|
|
|
|
|
|
public class C1 {
|
|
// CHECK-LABEL: sil [ossa] @$s21lazy_properties_multi2C1C1f1cyAA2C2C_tF : $@convention(method) (@guaranteed C2, @guaranteed C1) -> () {
|
|
// CHECK: [[FN:%.*]] = function_ref @$s21lazy_properties_multi2C2C1fyyF : $@convention(method) (@guaranteed C2)
|
|
// CHECK: apply [[FN]](%0) : $@convention(method) (@guaranteed C2) -> ()
|
|
public func f(c: C2) {
|
|
c.f()
|
|
}
|
|
}
|