Skip to content

Commit 38dea46

Browse files
authored
Merge pull request #71147 from meg-gupta/lifetimedependencelangattrfollowup
Follow up for C++ parser changes in #71069
2 parents 7bcade6 + 36f43fe commit 38dea46

File tree

5 files changed

+13
-11
lines changed

5 files changed

+13
-11
lines changed

include/swift/AST/DiagnosticsParse.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2173,11 +2173,11 @@ ERROR(expected_lparen_after_lifetime_dependence, PointsToFirstBadToken,
21732173

21742174
ERROR(expected_identifier_or_index_or_self_after_lifetime_dependence,
21752175
PointsToFirstBadToken,
2176-
"expected identifier or index or self in lifetime dependence specifier",
2176+
"expected identifier, index or self in lifetime dependence specifier",
21772177
())
21782178

21792179
ERROR(expected_rparen_after_lifetime_dependence, PointsToFirstBadToken,
2180-
"expected ')' after param list in lifetime dependence specifier", ())
2180+
"expected ')' after parameter list in lifetime dependence specifier", ())
21812181

21822182
ERROR(expected_param_index_lifetime_dependence, PointsToFirstBadToken,
21832183
"expected unsigned parameter index in lifetime dependence specifier", ())

include/swift/Parse/Token.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,9 @@ class Token {
267267
return MultilineString;
268268
}
269269

270-
bool isLifetimeDependenceToken() {
271-
auto tokenRawText = getRawText();
272-
return tokenRawText.equals("_copy") || tokenRawText.equals("_consume") ||
273-
tokenRawText.equals("_borrow") || tokenRawText.equals("_mutate");
270+
bool isLifetimeDependenceToken() const {
271+
return isContextualKeyword("_copy") || isContextualKeyword("_consume") ||
272+
isContextualKeyword("_borrow") || isContextualKeyword("_mutate");
274273
}
275274

276275
/// Count of extending escaping '#'.

lib/Parse/ParseDecl.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4950,7 +4950,6 @@ ParserStatus Parser::parseLifetimeDependenceSpecifiers(
49504950
if (parseUnsignedInteger(
49514951
paramNum, paramLoc,
49524952
diag::expected_param_index_lifetime_dependence)) {
4953-
skipUntil(tok::r_paren);
49544953
listStatus.setIsParseError();
49554954
return listStatus;
49564955
}
@@ -4972,7 +4971,6 @@ ParserStatus Parser::parseLifetimeDependenceSpecifiers(
49724971
Tok,
49734972
diag::
49744973
expected_identifier_or_index_or_self_after_lifetime_dependence);
4975-
skipUntil(tok::r_paren);
49764974
listStatus.setIsParseError();
49774975
return listStatus;
49784976
}

test/Parse/explicit_lifetime_dependence_specifiers.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ func invalidSpecifier1(_ x: borrowing BufferView) -> _borrow BufferView { // exp
8585
return BufferView(x.ptr)
8686
}
8787

88-
func invalidSpecifier2(_ x: borrowing BufferView) -> _borrow() BufferView {// expected-error{{expected identifier or index or self in lifetime dependence specifier}}
88+
func invalidSpecifier2(_ x: borrowing BufferView) -> _borrow() BufferView {// expected-error{{expected identifier, index or self in lifetime dependence specifier}}
8989
return BufferView(x.ptr)
9090
}
9191

92-
func invalidSpecifier3(_ x: borrowing BufferView) -> _borrow(*) BufferView { // expected-error{{expected identifier or index or self in lifetime dependence specifier}}
92+
func invalidSpecifier3(_ x: borrowing BufferView) -> _borrow(*) BufferView { // expected-error{{expected identifier, index or self in lifetime dependence specifier}}
9393
return BufferView(x.ptr)
9494
}
9595

test/Sema/explicit_lifetime_dependence_specifiers.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,15 @@ func inoutParamInvalidLifetimeDependence2(_ x: inout BufferView) -> _borrow(x) B
7878
return BufferView(x.ptr)
7979
}
8080

81-
func invalidSpecifierPosition(_ x: borrowing _borrow(x) BufferView) -> BufferView { // expected-error{{lifetime dependence specifiers may only be used on result of functions, methods, initializers}}
81+
func invalidSpecifierPosition1(_ x: borrowing _borrow(x) BufferView) -> BufferView { // expected-error{{lifetime dependence specifiers may only be used on result of functions, methods, initializers}}
8282
return BufferView(x.ptr)
8383
}
8484

85+
func invalidSpecifierPosition2(_ x: borrowing BufferView) -> BufferView {
86+
let y: _borrow(x) x // expected-error{{lifetime dependence specifiers may only be used on result of functions, methods, initializers}}
87+
return BufferView(y.ptr)
88+
}
89+
8590
struct Wrapper : ~Escapable {
8691
let view: BufferView
8792
borrowing func getView1() -> _borrow(self) BufferView {

0 commit comments

Comments
 (0)