|
25 | 25 | #include "swift/Parse/SyntaxParsingCache.h"
|
26 | 26 | #include "swift/Parse/Token.h"
|
27 | 27 | #include "swift/Syntax/SyntaxFactory.h"
|
| 28 | +#include "llvm/Support/raw_ostream.h" |
28 | 29 |
|
29 | 30 | using namespace swift;
|
30 | 31 | using namespace swift::syntax;
|
31 | 32 |
|
| 33 | +llvm::raw_ostream &llvm::operator<<(llvm::raw_ostream &OS, |
| 34 | + SyntaxContextKind Kind) { |
| 35 | + switch (Kind) { |
| 36 | + case SyntaxContextKind::Decl: |
| 37 | + OS << "Decl"; |
| 38 | + break; |
| 39 | + case SyntaxContextKind::Stmt: |
| 40 | + OS << "Stmt"; |
| 41 | + break; |
| 42 | + case SyntaxContextKind::Expr: |
| 43 | + OS << "Expr"; |
| 44 | + break; |
| 45 | + case SyntaxContextKind::Type: |
| 46 | + OS << "Type"; |
| 47 | + break; |
| 48 | + case SyntaxContextKind::Pattern: |
| 49 | + OS << "Pattern"; |
| 50 | + break; |
| 51 | + case SyntaxContextKind::Syntax: |
| 52 | + OS << "Syntax"; |
| 53 | + break; |
| 54 | + } |
| 55 | + return OS; |
| 56 | +} |
| 57 | + |
32 | 58 | void SyntaxParseActions::_anchor() {}
|
33 | 59 |
|
34 | 60 | using RootContextData = SyntaxParsingContext::RootContextData;
|
@@ -356,6 +382,38 @@ void SyntaxParsingContext::dumpStorage() const {
|
356 | 382 | }
|
357 | 383 | }
|
358 | 384 |
|
| 385 | +void SyntaxParsingContext::dumpStack(llvm::raw_ostream &OS) const { |
| 386 | + if (!isRoot()) { |
| 387 | + getParent()->dumpStack(OS); |
| 388 | + } |
| 389 | + switch (Mode) { |
| 390 | + case AccumulationMode::CreateSyntax: |
| 391 | + llvm::errs() << "CreateSyntax (" << SynKind << ")\n"; |
| 392 | + break; |
| 393 | + case AccumulationMode::DeferSyntax: |
| 394 | + llvm::errs() << "DeferSyntax (" << SynKind << ")\n"; |
| 395 | + break; |
| 396 | + case AccumulationMode::CoerceKind: |
| 397 | + llvm::errs() << "CoerceKind (" << CtxtKind << ")\n"; |
| 398 | + break; |
| 399 | + case AccumulationMode::Transparent: |
| 400 | + llvm::errs() << "Transparent\n"; |
| 401 | + break; |
| 402 | + case AccumulationMode::Discard: |
| 403 | + llvm::errs() << "Discard\n"; |
| 404 | + break; |
| 405 | + case AccumulationMode::SkippedForIncrementalUpdate: |
| 406 | + llvm::errs() << "SkippedForIncrementalUpdate\n"; |
| 407 | + break; |
| 408 | + case AccumulationMode::Root: |
| 409 | + llvm::errs() << "Root\n"; |
| 410 | + break; |
| 411 | + case AccumulationMode::NotSet: |
| 412 | + llvm::errs() << "NotSet\n"; |
| 413 | + break; |
| 414 | + } |
| 415 | +} |
| 416 | + |
359 | 417 | SyntaxParsingContext::~SyntaxParsingContext() {
|
360 | 418 | assert(isTopOfContextStack() && "destructed in wrong order");
|
361 | 419 |
|
|
0 commit comments