Skip to content

Commit 833a665

Browse files
committed
[Property Wrappers] Correct the source location of applied property
wrapper expressions in property wrapper parameter thunks, and add SILGen tests for property wrapper parameters in inlinable functions.
1 parent a15f423 commit 833a665

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

lib/Sema/CSApply.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,8 +1033,7 @@ namespace {
10331033
ValueKind valueKind = (initKind == PropertyWrapperInitKind::ProjectedValue ?
10341034
ValueKind::ProjectedValue : ValueKind::WrappedValue);
10351035

1036-
paramRef = AppliedPropertyWrapperExpr::create(context, ref, innerParam,
1037-
innerParam->getStartLoc(),
1036+
paramRef = AppliedPropertyWrapperExpr::create(context, ref, innerParam, SourceLoc(),
10381037
wrapperType, paramRef, valueKind);
10391038
cs.cacheExprTypes(paramRef);
10401039

test/SILGen/property_wrapper_parameter.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,20 @@ public func publicFunc(@PublicWrapper value: String) {
230230
// property wrapper init from projected value of value #1 in publicFunc(value:)
231231
// CHECK: sil non_abi [serialized] [ossa] @$s26property_wrapper_parameter10publicFunc5valueyAA13PublicWrapperVySSG_tFACL_SSvpfW : $@convention(thin) (@owned PublicWrapper<String>) -> @owned PublicWrapper<String>
232232
}
233+
234+
// CHECK-LABEL: sil [serialized] [ossa] @$s26property_wrapper_parameter13inlinableFunc5valueyAA13PublicWrapperVySSG_tF : $@convention(thin) (@guaranteed PublicWrapper<String>) -> ()
235+
@inlinable func inlinableFunc(@PublicWrapper value: String) {
236+
// property wrapper backing initializer of value #1 in inlinableFunc(value:)
237+
// CHECK: sil non_abi [serialized] [ossa] @$s26property_wrapper_parameter13inlinableFunc5valueyAA13PublicWrapperVySSG_tFACL_SSvpfP : $@convention(thin) (@owned String) -> @owned PublicWrapper<String>
238+
239+
// property wrapper init from projected value of value #1 in inlinableFunc(value:)
240+
// CHECK: sil non_abi [serialized] [ossa] @$s26property_wrapper_parameter13inlinableFunc5valueyAA13PublicWrapperVySSG_tFACL_SSvpfW : $@convention(thin) (@owned PublicWrapper<String>) -> @owned PublicWrapper<String>
241+
242+
243+
_ = publicFunc(value:)
244+
245+
// implicit closure #1 in inlinableFunc(value:)
246+
// CHECK: sil shared [serialized] [ossa] @$s26property_wrapper_parameter13inlinableFunc5valueyAA13PublicWrapperVySSG_tFySScfu_ : $@convention(thin) (@guaranteed String) -> ()
247+
// CHECK: function_ref @$s26property_wrapper_parameter10publicFunc5valueyAA13PublicWrapperVySSG_tFACL_SSvpfP : $@convention(thin) (@owned String) -> @owned PublicWrapper<String>
248+
// CHECK: function_ref @$s26property_wrapper_parameter10publicFunc5valueyAA13PublicWrapperVySSG_tF : $@convention(thin) (@guaranteed PublicWrapper<String>) -> ()
249+
}

0 commit comments

Comments
 (0)