Skip to content

Commit 8a192ea

Browse files
committed
Refactor away some digester diagnostic boilerplate
1 parent 88ac6f1 commit 8a192ea

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

tools/swift-api-digester/swift-api-digester.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,15 @@ class SDKContext {
318318
}
319319
bool checkingABI() const { return ABI; }
320320
ArrayRef<ABIAttributeInfo> getABIAttributeInfo() const { return ABIAttrs; }
321+
322+
template<class YAMLNodeTy, typename ...ArgTypes>
323+
void diagnose(YAMLNodeTy node, Diag<ArgTypes...> ID,
324+
typename detail::PassArgument<ArgTypes>::type... args) {
325+
auto smRange = node->getSourceRange();
326+
auto range = SourceRange(SourceLoc(smRange.Start), SourceLoc(smRange.End));
327+
Diags.diagnose(range.Start, ID, std::forward<ArgTypes>(args)...)
328+
.highlight(range);
329+
}
321330
};
322331

323332
// A node matcher will traverse two trees of SDKNode and find matched nodes
@@ -1045,9 +1054,6 @@ SDKNode* SDKNode::constructSDKNode(SDKContext &Ctx,
10451054
return std::stoi(cast<llvm::yaml::ScalarNode>(N)->getRawValue());
10461055
};
10471056

1048-
static auto convertRange = [](llvm::SMRange Range) -> SourceRange {
1049-
return SourceRange(SourceLoc(Range.Start), SourceLoc(Range.End));
1050-
};
10511057
SDKNodeKind Kind;
10521058
SDKNodeInitInfo Info(Ctx);
10531059
NodeVector Children;
@@ -1060,10 +1066,8 @@ SDKNode* SDKNode::constructSDKNode(SDKContext &Ctx,
10601066
if (auto parsedKind = parseSDKNodeKind(GetScalarString(Pair.getValue()))) {
10611067
Kind = *parsedKind;
10621068
} else {
1063-
auto range = convertRange(Pair.getValue()->getSourceRange());
1064-
Ctx.getDiags().diagnose(range.Start, diag::sdk_node_unrecognized_node_kind,
1065-
GetScalarString(Pair.getValue()))
1066-
.highlight(range);
1069+
Ctx.diagnose(Pair.getValue(), diag::sdk_node_unrecognized_node_kind,
1070+
GetScalarString(Pair.getValue()));
10671071
}
10681072
break;
10691073
case KeyKind::KK_name:
@@ -1167,10 +1171,8 @@ SDKNode* SDKNode::constructSDKNode(SDKContext &Ctx,
11671171
}
11681172
}
11691173
else {
1170-
auto range = convertRange(Pair.getKey()->getSourceRange());
1171-
Ctx.getDiags().diagnose(range.Start, diag::sdk_node_unrecognized_key,
1172-
keyString)
1173-
.highlight(range);
1174+
Ctx.diagnose(Pair.getKey(), diag::sdk_node_unrecognized_key,
1175+
keyString);
11741176
Pair.skip();
11751177
}
11761178
};

0 commit comments

Comments
 (0)