diff --git a/include/swift/AST/DiagnosticsSema.def b/include/swift/AST/DiagnosticsSema.def index 46b92335f7f46..8dbf8e8014c5d 100644 --- a/include/swift/AST/DiagnosticsSema.def +++ b/include/swift/AST/DiagnosticsSema.def @@ -8249,7 +8249,7 @@ ERROR(lifetime_dependence_cannot_use_parsed_borrow_inout, none, ERROR(lifetime_dependence_duplicate_target, none, "invalid duplicate target lifetime dependencies on function", ()) ERROR(lifetime_parameter_requires_inout, none, - "lifetime-dependent parameter must be 'inout'", (Identifier)) + "lifetime-dependent parameter '%0' must be 'inout'", (StringRef)) //------------------------------------------------------------------------------ // MARK: Lifetime Dependence Requirements diff --git a/lib/AST/LifetimeDependence.cpp b/lib/AST/LifetimeDependence.cpp index 10d57fa1e0dbe..502c46580040a 100644 --- a/lib/AST/LifetimeDependence.cpp +++ b/lib/AST/LifetimeDependence.cpp @@ -880,7 +880,7 @@ class LifetimeDependenceChecker { if (!targetDeclAndIndex->first->isInOut()) { diagnose(targetDeclAndIndex->first, diag::lifetime_parameter_requires_inout, - targetDescriptor->getName()); + targetDescriptor->getString()); } targetIndex = targetDeclAndIndex->second; } else { diff --git a/test/Sema/lifetime_attr.swift b/test/Sema/lifetime_attr.swift index ea56b423f177b..ef8b16fffe087 100644 --- a/test/Sema/lifetime_attr.swift +++ b/test/Sema/lifetime_attr.swift @@ -91,7 +91,7 @@ do { // rdar://146401190 ([nonescapable] implement non-inout parameter dependencies) @_lifetime(span: borrow holder) -func testParameterDep(holder: AnyObject, span: Span) {} // expected-error{{lifetime-dependent parameter must be 'inout'}} +func testParameterDep(holder: AnyObject, span: Span) {} // expected-error{{lifetime-dependent parameter 'span' must be 'inout'}} @_lifetime(&ne) func inoutLifetimeDependence(_ ne: inout NE) -> NE { @@ -113,3 +113,16 @@ func dependOnEscapable(_ k: consuming Klass) -> NE { NE() } +struct Wrapper : ~Escapable { + var _ne: NE + + var ne: NE { + @_lifetime(copy self) + get { + _ne + } + @_lifetime(self: &self) + nonmutating _modify {// expected-error{{lifetime-dependent parameter 'self' must be 'inout'}} + } + } +}