[test] libSyntax: add a flag to swift-syntax-test to print trivial node kinds.

These trivial node kinds include node collections like stmtlist and
unknown syntax like UnknownExpr.
This commit is contained in:
Xi Ge
2017-11-30 14:33:12 -08:00
parent 41f4d5c96d
commit 653de9f23f
3 changed files with 11 additions and 1 deletions

View File

@@ -188,6 +188,7 @@ enum class SourcePresence {
struct SyntaxPrintOptions { struct SyntaxPrintOptions {
bool Visual = false; bool Visual = false;
bool PrintSyntaxKind = false; bool PrintSyntaxKind = false;
bool PrintTrivialNodeKind = false;
}; };
/// RawSyntax - the strictly immutable, shared backing nodes for all syntax. /// RawSyntax - the strictly immutable, shared backing nodes for all syntax.

View File

@@ -57,7 +57,8 @@ void RawSyntax::print(llvm::raw_ostream &OS, SyntaxPrintOptions Opts) const {
return; return;
const bool PrintKind = Opts.PrintSyntaxKind && !isToken() && const bool PrintKind = Opts.PrintSyntaxKind && !isToken() &&
!isTrivialSyntaxKind(Kind); (Opts.PrintTrivialNodeKind || !isTrivialSyntaxKind(Kind));
if (PrintKind) { if (PrintKind) {
printSyntaxKind(Kind, OS, Opts, true); printSyntaxKind(Kind, OS, Opts, true);
} }

View File

@@ -83,6 +83,13 @@ PrintNodeKind("print-node-kind",
llvm::cl::desc("To print syntax node kind"), llvm::cl::desc("To print syntax node kind"),
llvm::cl::cat(Category), llvm::cl::cat(Category),
llvm::cl::init(false)); llvm::cl::init(false));
static llvm::cl::opt<bool>
PrintTrivialNodeKind("print-trivial-node-kind",
llvm::cl::desc("To print trivial syntax node kind"),
llvm::cl::cat(Category),
llvm::cl::init(false));
static llvm::cl::opt<bool> static llvm::cl::opt<bool>
Visual("v", Visual("v",
llvm::cl::desc("Print visually"), llvm::cl::desc("Print visually"),
@@ -227,6 +234,7 @@ int dumpParserGen(const char *MainExecutablePath,
SyntaxPrintOptions Opts; SyntaxPrintOptions Opts;
Opts.PrintSyntaxKind = options::PrintNodeKind; Opts.PrintSyntaxKind = options::PrintNodeKind;
Opts.Visual = options::Visual; Opts.Visual = options::Visual;
Opts.PrintTrivialNodeKind = options::PrintTrivialNodeKind;
SF->getSyntaxRoot().print(llvm::outs(), Opts); SF->getSyntaxRoot().print(llvm::outs(), Opts);
return 0; return 0;
} }