Skip to content

Commit bb884f5

Browse files
authored
Merge pull request #7681 from nkcsgexi/print-util
2 parents f66bbfb + 52ecc4a commit bb884f5

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

include/swift/AST/ASTPrinter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,9 @@ bool printRequirementStub(ValueDecl *Requirement, DeclContext *Adopter,
307307
/// Print a keyword or punctuator directly by its kind.
308308
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, tok keyword);
309309

310+
/// Get the length of a keyword or punctuator by its kind.
311+
uint8_t getKeywordLen(tok keyword);
312+
310313
} // namespace swift
311314

312315
#endif // LLVM_SWIFT_AST_ASTPRINTER_H

lib/AST/ASTPrinter.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,17 @@ operator<<(llvm::raw_ostream &OS, tok keyword) {
594594
return OS;
595595
}
596596

597+
uint8_t swift::getKeywordLen(tok keyword) {
598+
switch (keyword) {
599+
#define KEYWORD(KW) case tok::kw_##KW: return StringRef(#KW).size();
600+
#define POUND_KEYWORD(KW) case tok::pound_##KW: return StringRef("#"#KW).size();
601+
#define PUNCTUATOR(PUN, TEXT) case tok::PUN: return StringRef(TEXT).size();
602+
#include "swift/Syntax/TokenKinds.def"
603+
default:
604+
llvm_unreachable("unexpected keyword or punctuator kind");
605+
}
606+
}
607+
597608
ASTPrinter &operator<<(ASTPrinter &printer, tok keyword) {
598609
SmallString<16> Buffer;
599610
llvm::raw_svector_ostream OS(Buffer);

0 commit comments

Comments
 (0)