mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[SourceKit] Add parameter.name.local and parameter.name.external tags
... for the fully annotated declarations. More substructure more better. This has to go through a callback mechanism similar to printDeclLoc and printDeclPre since it should be scheduled after both of those are printed. rdar://problem/24292226
This commit is contained in:
@@ -62,6 +62,9 @@ static StringRef getTagForDecl(const Decl *D, bool isRef) {
|
||||
return UID.getName().drop_front(strlen(prefix));
|
||||
}
|
||||
|
||||
static StringRef ExternalParamNameTag = "decl.var.parameter.name.external";
|
||||
static StringRef LocalParamNameTag = "decl.var.parameter.name.local";
|
||||
|
||||
/// An ASTPrinter for annotating declarations with XML tags that describe the
|
||||
/// key substructure of the declaration for CursorInfo/DocInfo.
|
||||
///
|
||||
@@ -90,6 +93,31 @@ private:
|
||||
closeTag("decl.name");
|
||||
}
|
||||
|
||||
void printNamePre(PrintNameContext context) override {
|
||||
switch (context) {
|
||||
case PrintNameContext::FunctionParameterExternal:
|
||||
openTag(ExternalParamNameTag);
|
||||
break;
|
||||
case PrintNameContext::FunctionParameterLocal:
|
||||
openTag(LocalParamNameTag);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
void printNamePost(PrintNameContext context) override {
|
||||
switch (context) {
|
||||
case PrintNameContext::FunctionParameterExternal:
|
||||
closeTag(ExternalParamNameTag);
|
||||
break;
|
||||
case PrintNameContext::FunctionParameterLocal:
|
||||
closeTag(LocalParamNameTag);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void printTypeRef(const TypeDecl *TD, Identifier name) override {
|
||||
auto tag = getTagForDecl(TD, /*isRef=*/true);
|
||||
OS << "<" << tag << " usr=\"";
|
||||
|
||||
Reference in New Issue
Block a user