mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Markup] Add Tag field
You can now specify multiple - Tag: simple fields in documentation comments for general purpose use. These are not currently intended to show up in rendered documentation but are for metadata purposes only.
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include "swift/AST/PrettyStackTrace.h"
|
||||
#include "swift/AST/RawComment.h"
|
||||
#include "swift/Markup/Markup.h"
|
||||
#include "llvm/ADT/SetVector.h"
|
||||
|
||||
using namespace swift;
|
||||
|
||||
@@ -214,6 +215,7 @@ bool extractSimpleField(
|
||||
SmallVectorImpl<const swift::markup::MarkupASTNode *> &BodyNodes) {
|
||||
auto Children = L->getChildren();
|
||||
SmallVector<swift::markup::MarkupASTNode *, 8> NormalItems;
|
||||
llvm::SmallSetVector<StringRef, 8> Tags;
|
||||
for (auto Child : Children) {
|
||||
auto I = dyn_cast<swift::markup::Item>(Child);
|
||||
if (!I) {
|
||||
@@ -261,17 +263,25 @@ bool extractSimpleField(
|
||||
ParagraphText->setLiteralContent(Remainder);
|
||||
auto Field = swift::markup::createSimpleField(MC, Tag, ItemChildren);
|
||||
|
||||
if (auto RF = dyn_cast<swift::markup::ReturnsField>(Field))
|
||||
if (auto RF = dyn_cast<swift::markup::ReturnsField>(Field)) {
|
||||
Parts.ReturnsField = RF;
|
||||
else if (auto TF = dyn_cast<swift::markup::ThrowsField>(Field))
|
||||
} else if (auto TF = dyn_cast<swift::markup::ThrowsField>(Field)) {
|
||||
Parts.ThrowsField = TF;
|
||||
else
|
||||
} else if (auto TF = dyn_cast<swift::markup::TagField>(Field)) {
|
||||
llvm::SmallString<64> Scratch;
|
||||
llvm::raw_svector_ostream OS(Scratch);
|
||||
printInlinesUnder(TF, OS);
|
||||
Tags.insert(MC.allocateCopy(OS.str()));
|
||||
} else {
|
||||
BodyNodes.push_back(Field);
|
||||
}
|
||||
}
|
||||
|
||||
if (NormalItems.size() != Children.size())
|
||||
L->setChildren(NormalItems);
|
||||
|
||||
Parts.Tags = MC.allocateCopy(Tags.getArrayRef());
|
||||
|
||||
return NormalItems.size() == 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user