@@ -329,6 +329,36 @@ struct Tag {
329329  size_t  StartPosition = StringRef::npos;
330330};
331331
332+ static  const  char  *tagKindToString (Tag::Kind K) {
333+   switch  (K) {
334+   case  Tag::Kind::None:
335+     return  " None" 
336+   case  Tag::Kind::Normal:
337+     return  " Normal" 
338+   case  Tag::Kind::Triple:
339+     return  " Triple" 
340+   }
341+   llvm_unreachable (" Unknown Tag::Kind" 
342+ }
343+ 
344+ static  const  char  *jsonKindToString (json::Value::Kind K) {
345+   switch  (K) {
346+   case  json::Value::Kind::Null:
347+     return  " JSON_KIND_NULL" 
348+   case  json::Value::Kind::Boolean:
349+     return  " JSON_KIND_BOOLEAN" 
350+   case  json::Value::Kind::Number:
351+     return  " JSON_KIND_NUMBER" 
352+   case  json::Value::Kind::String:
353+     return  " JSON_KIND_STRING" 
354+   case  json::Value::Kind::Array:
355+     return  " JSON_KIND_ARRAY" 
356+   case  json::Value::Kind::Object:
357+     return  " JSON_KIND_OBJECT" 
358+   }
359+   llvm_unreachable (" Unknown json::Value::Kind" 
360+ }
361+ 
332362static  Tag findNextTag (StringRef Template, size_t  StartPos, StringRef Open,
333363                       StringRef Close) {
334364  const  StringLiteral TripleOpen (" {{{" 
@@ -373,19 +403,17 @@ static Tag findNextTag(StringRef Template, size_t StartPos, StringRef Open,
373403
374404static  std::optional<std::pair<StringRef, StringRef>>
375405processTag (const  Tag &T, SmallVectorImpl<Token> &Tokens) {
376-   LLVM_DEBUG (dbgs () << "   Found tag:  \" " FullMatch  << " \" , Content: \" " 
377-                     << T. Content  << " \ "\n" 
406+   LLVM_DEBUG (dbgs () << " [Tag]  " FullMatch  << " , Content: "  << T. Content 
407+                     << " , Kind:  "  <<  tagKindToString (T. TagKind )  << " \n " 
378408  if  (T.TagKind  == Tag::Kind::Triple) {
379409    Tokens.emplace_back (T.FullMatch .str (), " &" Content .str (), ' &' 
380-     LLVM_DEBUG (dbgs () << "   Created UnescapeVariable token.\n " 
381410    return  std::nullopt ;
382411  }
383412  StringRef Interpolated = T.Content ;
384413  std::string RawBody = T.FullMatch .str ();
385414  if  (!Interpolated.trim ().starts_with (" =" 
386415    char  Front = Interpolated.empty () ? '  ' trim ().front ();
387416    Tokens.emplace_back (RawBody, Interpolated.str (), Front);
388-     LLVM_DEBUG (dbgs () << "   Created tag token of type '" " '\n " 
389417    return  std::nullopt ;
390418  }
391419  Tokens.emplace_back (RawBody, Interpolated.str (), ' =' 
@@ -395,8 +423,8 @@ processTag(const Tag &T, SmallVectorImpl<Token> &Tokens) {
395423  DelimSpec = DelimSpec.trim ();
396424
397425  std::pair<StringRef, StringRef> Ret = DelimSpec.split ('  ' 
398-   LLVM_DEBUG (dbgs () << "   Found  Set Delimiter tag.  NewOpen=' " first 
399-                     << " ' , NewClose=' " second  << " ' \n " 
426+   LLVM_DEBUG (dbgs () << " [ Set Delimiter]  NewOpen:  " first 
427+                     << " , NewClose:  " second  << " \n " 
400428  return  Ret;
401429}
402430
@@ -405,14 +433,14 @@ processTag(const Tag &T, SmallVectorImpl<Token> &Tokens) {
405433//  but we don't support that here. An unescape variable
406434//  is represented only by {{& variable}}.
407435static  SmallVector<Token> tokenize (StringRef Template) {
408-   LLVM_DEBUG (dbgs () << " Tokenizing template:  \" " " \"\n " 
436+   LLVM_DEBUG (dbgs () << " [Tokenize Template]  \" " " \"\n " 
409437  SmallVector<Token> Tokens;
410438  SmallString<8 > Open (" {{" 
411439  SmallString<8 > Close (" }}" 
412440  size_t  Start = 0 ;
413441
414442  while  (Start < Template.size ()) {
415-     LLVM_DEBUG (dbgs () << " Loop start.  Start=" " , Open='" 
443+     LLVM_DEBUG (dbgs () << " [Tokenize Loop]  Start=" " , Open='" 
416444                      << " ', Close='" " '\n " 
417445    Tag T = findNextTag (Template, Start, Open, Close);
418446
@@ -428,7 +456,6 @@ static SmallVector<Token> tokenize(StringRef Template) {
428456    if  (T.StartPosition  > Start) {
429457      StringRef Text = Template.substr (Start, T.StartPosition  - Start);
430458      Tokens.emplace_back (Text.str ());
431-       LLVM_DEBUG (dbgs () << "   Created Text token: \" " " \"\n " 
432459    }
433460
434461    if  (auto  NewDelims = processTag (T, Tokens)) {
@@ -479,7 +506,6 @@ static SmallVector<Token> tokenize(StringRef Template) {
479506    if  ((!HasTextBehind && !HasTextAhead) || (!HasTextBehind && Idx == LastIdx))
480507      stripTokenBefore (Tokens, Idx, CurrentToken, CurrentType);
481508  }
482-   LLVM_DEBUG (dbgs () << " Tokenizing finished.\n " 
483509  return  Tokens;
484510}
485511
@@ -545,7 +571,7 @@ class AddIndentationStringStream : public MustacheOutputStream {
545571    Indent.resize (Indentation, '  ' 
546572
547573    for  (char  C : Data) {
548-       LLVM_DEBUG (dbgs () << " IndentationStream:  NeedsIndent=" 
574+       LLVM_DEBUG (dbgs () << " [ IndentationStream]  NeedsIndent=" 
549575                        << " , C='" " ', Indentation=" 
550576                        << " \n " 
551577      if  (NeedsIndent && C != ' \n ' 
@@ -654,7 +680,9 @@ void Parser::parseMustache(ASTNode *Parent) {
654680  }
655681}
656682static  void  toMustacheString (const  json::Value &Data, raw_ostream &OS) {
657-   LLVM_DEBUG (dbgs () << " toMustacheString: kind=" int )Data.kind () << " \n " 
683+   LLVM_DEBUG (dbgs () << " [To Mustache String] Kind: " 
684+                     << jsonKindToString (Data.kind ()) << " , Data: " 
685+                     << " \n " 
658686  switch  (Data.kind ()) {
659687  case  json::Value::Null:
660688    return ;
@@ -667,7 +695,6 @@ static void toMustacheString(const json::Value &Data, raw_ostream &OS) {
667695  }
668696  case  json::Value::String: {
669697    auto  Str = *Data.getAsString ();
670-     LLVM_DEBUG (dbgs () << "   --> writing string: \" " " \"\n " 
671698    OS << Str.str ();
672699    return ;
673700  }
@@ -696,7 +723,7 @@ void ASTNode::renderText(MustacheOutputStream &OS) { OS << Body; }
696723
697724void  ASTNode::renderPartial (const  json::Value &CurrentCtx,
698725                            MustacheOutputStream &OS) {
699-   LLVM_DEBUG (dbgs () << " renderPartial:  Accessor=" 0 ]
726+   LLVM_DEBUG (dbgs () << " [Render Partial]  Accessor=" 0 ]
700727                    << " , Indentation=" " \n " 
701728  auto  Partial = Ctx.Partials .find (AccessorValue[0 ]);
702729  if  (Partial != Ctx.Partials .end ())
@@ -716,13 +743,12 @@ void ASTNode::renderVariable(const json::Value &CurrentCtx,
716743
717744void  ASTNode::renderUnescapeVariable (const  json::Value &CurrentCtx,
718745                                     MustacheOutputStream &OS) {
719-   LLVM_DEBUG (dbgs () << " renderUnescapeVariable:  Accessor=" 0 ]
746+   LLVM_DEBUG (dbgs () << " [Render UnescapeVariable]  Accessor=" 0 ]
720747                    << " \n " 
721748  auto  Lambda = Ctx.Lambdas .find (AccessorValue[0 ]);
722749  if  (Lambda != Ctx.Lambdas .end ()) {
723750    renderLambdas (CurrentCtx, OS, Lambda->getValue ());
724751  } else  if  (const  json::Value *ContextPtr = findContext ()) {
725-     LLVM_DEBUG (dbgs () << "   --> Found context value, writing to stream.\n " 
726752    OS.suspendIndentation ();
727753    toMustacheString (*ContextPtr, OS);
728754    OS.resumeIndentation ();
@@ -792,8 +818,6 @@ void ASTNode::render(const llvm::json::Value &Data, MustacheOutputStream &OS) {
792818}
793819
794820const  json::Value *ASTNode::findContext () {
795-   LLVM_DEBUG (dbgs () << " findContext: AccessorValue[0]=" 0 ]
796-                     << " \n " 
797821  //  The mustache spec allows for dot notation to access nested values
798822  //  a single dot refers to the current context.
799823  //  We attempt to find the JSON context in the current node, if it is not
@@ -808,22 +832,12 @@ const json::Value *ASTNode::findContext() {
808832  StringRef CurrentAccessor = AccessorValue[0 ];
809833  ASTNode *CurrentParent = Parent;
810834
811-   LLVM_DEBUG (dbgs () << " findContext: ParentContext: " 
812-              if  (ParentContext) ParentContext->print (dbgs ());
813-              else  dbgs () << " nullptr" dbgs () << " \n " 
814- 
815835  while  (!CurrentContext || !CurrentContext->get (CurrentAccessor)) {
816-     LLVM_DEBUG (dbgs () << " findContext: climbing parent\n " 
817836    if  (CurrentParent->Ty  != Root) {
818837      CurrentContext = CurrentParent->ParentContext ->getAsObject ();
819838      CurrentParent = CurrentParent->Parent ;
820-       LLVM_DEBUG (dbgs () << " findContext: new ParentContext: " 
821-                  if  (CurrentParent->ParentContext )
822-                      CurrentParent->ParentContext ->print (dbgs ());
823-                  else  dbgs () << " nullptr" dbgs () << " \n " 
824839      continue ;
825840    }
826-     LLVM_DEBUG (dbgs () << " findContext: reached root, not found\n " 
827841    return  nullptr ;
828842  }
829843  const  json::Value *Context = nullptr ;
@@ -839,9 +853,6 @@ const json::Value *ASTNode::findContext() {
839853      Context = CurrentValue;
840854    }
841855  }
842-   LLVM_DEBUG (dbgs () << " findContext: found value: " 
843-              if  (Context) Context->print (dbgs ()); else  dbgs () << " nullptr" 
844-              dbgs () << " \n " 
845856  return  Context;
846857}
847858
@@ -853,8 +864,7 @@ void ASTNode::renderChild(const json::Value &Contexts,
853864
854865void  ASTNode::renderPartial (const  json::Value &Contexts,
855866                            MustacheOutputStream &OS, ASTNode *Partial) {
856-   LLVM_DEBUG (dbgs () << " renderPartial (helper): Indentation=" 
857-                     << " \n " 
867+   LLVM_DEBUG (dbgs () << " [Render Partial Indentation] " " \n " 
858868  AddIndentationStringStream IS (OS, Indentation);
859869  Partial->render (Contexts, IS);
860870}
0 commit comments