Skip to content

Commit 61fc2e0

Browse files
authored
Merge pull request #82787 from meg-gupta/lifetimediag
Fix a lifetime dependence diagnostic
2 parents de5aa3f + 6d0a6d2 commit 61fc2e0

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8338,7 +8338,7 @@ ERROR(lifetime_dependence_cannot_use_parsed_borrow_inout, none,
83388338
ERROR(lifetime_dependence_duplicate_target, none,
83398339
"invalid duplicate target lifetime dependencies on function", ())
83408340
ERROR(lifetime_parameter_requires_inout, none,
8341-
"lifetime-dependent parameter must be 'inout'", (Identifier))
8341+
"lifetime-dependent parameter '%0' must be 'inout'", (StringRef))
83428342

83438343
//------------------------------------------------------------------------------
83448344
// MARK: Lifetime Dependence Requirements

lib/AST/LifetimeDependence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -880,7 +880,7 @@ class LifetimeDependenceChecker {
880880
if (!targetDeclAndIndex->first->isInOut()) {
881881
diagnose(targetDeclAndIndex->first,
882882
diag::lifetime_parameter_requires_inout,
883-
targetDescriptor->getName());
883+
targetDescriptor->getString());
884884
}
885885
targetIndex = targetDeclAndIndex->second;
886886
} else {

test/Sema/lifetime_attr.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ do {
9191

9292
// rdar://146401190 ([nonescapable] implement non-inout parameter dependencies)
9393
@_lifetime(span: borrow holder)
94-
func testParameterDep(holder: AnyObject, span: Span<Int>) {} // expected-error{{lifetime-dependent parameter must be 'inout'}}
94+
func testParameterDep(holder: AnyObject, span: Span<Int>) {} // expected-error{{lifetime-dependent parameter 'span' must be 'inout'}}
9595

9696
@_lifetime(&ne)
9797
func inoutLifetimeDependence(_ ne: inout NE) -> NE {
@@ -113,3 +113,16 @@ func dependOnEscapable(_ k: consuming Klass) -> NE {
113113
NE()
114114
}
115115

116+
struct Wrapper : ~Escapable {
117+
var _ne: NE
118+
119+
var ne: NE {
120+
@_lifetime(copy self)
121+
get {
122+
_ne
123+
}
124+
@_lifetime(self: &self)
125+
nonmutating _modify {// expected-error{{lifetime-dependent parameter 'self' must be 'inout'}}
126+
}
127+
}
128+
}

0 commit comments

Comments
 (0)