Skip to content

Commit 1461391

Browse files
wip: take a quoted string in @_documentation(metadata:)
1 parent 9512cbf commit 1461391

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

include/swift/AST/DiagnosticsParse.def

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1777,8 +1777,9 @@ ERROR(documentation_attr_unknown_access_level,none,
17771777
(StringRef))
17781778
ERROR(documentation_attr_duplicate_visibility,none,
17791779
"cannot give more than one visibility to the same item", ())
1780-
ERROR(documentation_attr_metadata_expected_identifier,none,
1781-
"@_documentation attribute's 'metadata' argument expected a plain identifier",
1780+
ERROR(documentation_attr_metadata_expected_text,none,
1781+
"@_documentation attribute's 'metadata' argument expected an identifier or "
1782+
"quoted string",
17821783
())
17831784
ERROR(documentation_attr_duplicate_metadata,none,
17841785
"cannot give more than one metadata argument to the same item", ())

lib/Parse/ParseDecl.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,8 +1985,8 @@ bool Parser::parseDocumentationAttributeArgument(Optional<StringRef> &Metadata,
19851985
consumeToken();
19861986
Visibility = ParsedVisibility;
19871987
} else if (ArgumentName == "metadata") {
1988-
if (Tok.isNot(tok::identifier)) {
1989-
diagnose(Tok.getLoc(), diag::documentation_attr_metadata_expected_identifier);
1988+
if (!Tok.isAny(tok::identifier, tok::string_literal)) {
1989+
diagnose(Tok.getLoc(), diag::documentation_attr_metadata_expected_text);
19901990
return false;
19911991
}
19921992
auto ArgumentValue = Tok.getText();
@@ -1996,7 +1996,7 @@ bool Parser::parseDocumentationAttributeArgument(Optional<StringRef> &Metadata,
19961996
return false;
19971997
}
19981998

1999-
consumeToken(tok::identifier);
1999+
consumeToken();
20002000
Metadata = ArgumentValue;
20012001
} else {
20022002
llvm_unreachable("unimplemented @_documentation attr argument");

test/SymbolGraph/Symbols/DocumentationMetadata.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66
// CHECK: "metadata": "cool_stuff"
77
@_documentation(metadata: cool_stuff) public class SomeClass {}
88

9+
@_documentation(metadata: "this is a longer string") public class OtherClass {}
10+

0 commit comments

Comments
 (0)