@@ -507,8 +507,8 @@ ParserResult<AvailableAttr> Parser::parseExtendedAvailabilitySpecList(
507
507
diagnose (ArgumentLoc, diag::attr_availability_expected_option, AttrName)
508
508
.highlight (SourceRange (ArgumentLoc));
509
509
if (Tok.is (tok::code_complete) && CodeCompletionCallbacks) {
510
- CodeCompletionCallbacks->completeDeclAttrParam (DAK_Available,
511
- ParamIndex);
510
+ CodeCompletionCallbacks->completeDeclAttrParam (
511
+ CustomSyntaxAttributeKind::Available, ParamIndex);
512
512
consumeToken (tok::code_complete);
513
513
} else {
514
514
consumeIf (tok::identifier);
@@ -940,7 +940,8 @@ bool Parser::parseAvailability(
940
940
if (!Tok.is (tok::identifier) &&
941
941
!(Tok.isAnyOperator () && Tok.getText () == " *" )) {
942
942
if (Tok.is (tok::code_complete) && CodeCompletionCallbacks) {
943
- CodeCompletionCallbacks->completeDeclAttrParam (DAK_Available, 0 );
943
+ CodeCompletionCallbacks->completeDeclAttrParam (
944
+ CustomSyntaxAttributeKind::Available, 0 );
944
945
consumeToken (tok::code_complete);
945
946
}
946
947
diagnose (Tok.getLoc (), diag::attr_availability_platform, AttrName)
@@ -2220,6 +2221,24 @@ Parser::parseMacroRoleAttribute(
2220
2221
[&] {
2221
2222
ParserStatus status;
2222
2223
2224
+ if (Tok.is (tok::code_complete)) {
2225
+ consumeIf (tok::code_complete);
2226
+ status.setHasCodeCompletionAndIsError ();
2227
+ CustomSyntaxAttributeKind attributeKind =
2228
+ isAttached ? CustomSyntaxAttributeKind::AttachedMacro
2229
+ : CustomSyntaxAttributeKind::FreestandingMacro;
2230
+ if (!sawRole) {
2231
+ sawRole = true ;
2232
+ if (this ->CodeCompletionCallbacks ) {
2233
+ this ->CodeCompletionCallbacks ->completeDeclAttrParam (attributeKind, 0 );
2234
+ }
2235
+ } else if (!sawNames) {
2236
+ if (this ->CodeCompletionCallbacks ) {
2237
+ this ->CodeCompletionCallbacks ->completeDeclAttrParam (attributeKind, 1 );
2238
+ }
2239
+ }
2240
+ }
2241
+
2223
2242
// Parse the argment label, if there is one.
2224
2243
Identifier fieldName;
2225
2244
SourceLoc fieldNameLoc;
0 commit comments