ASTPrinter: Expose a utility to print keywords directly by token kinds. NFC (#7646)

This commit is contained in:
Xi Ge
2017-02-20 12:40:42 -08:00
committed by GitHub
parent 83d2e9f01b
commit 0b5b7d057e
2 changed files with 19 additions and 7 deletions

View File

@@ -581,17 +581,24 @@ ASTPrinter &ASTPrinter::operator<<(DeclName name) {
return *this;
}
ASTPrinter &operator<<(ASTPrinter &printer, tok keyword) {
StringRef name;
llvm::raw_ostream &swift::
operator<<(llvm::raw_ostream &OS, tok keyword) {
switch (keyword) {
#define KEYWORD(KW) case tok::kw_##KW: name = #KW; break;
#define POUND_KEYWORD(KW) case tok::pound_##KW: name = "#"#KW; break;
#define KEYWORD(KW) case tok::kw_##KW: OS << #KW; break;
#define POUND_KEYWORD(KW) case tok::pound_##KW: OS << "#"#KW; break;
#define PUNCTUATOR(PUN, TEXT) case tok::PUN: OS << TEXT; break;
#include "swift/Syntax/TokenKinds.def"
default:
llvm_unreachable("unexpected keyword kind");
llvm_unreachable("unexpected keyword or punctuator kind");
}
printer.printKeyword(name);
return OS;
}
ASTPrinter &operator<<(ASTPrinter &printer, tok keyword) {
SmallString<16> Buffer;
llvm::raw_svector_ostream OS(Buffer);
OS << keyword;
printer.printKeyword(Buffer.str());
return printer;
}