[llvm] [llvm][mustache][NFC] Use type alias for escape symbols (PR #138050)

Paul Kirth via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 30 16:39:59 PDT 2025


https://github.com/ilovepi created https://github.com/llvm/llvm-project/pull/138050

This data structure's type and/or representation is likely to change.
Using an alias, makes it easy to refactor.

>From 4c4b6e7b34e81ffea64810927b023d9c86182541 Mon Sep 17 00:00:00 2001
From: Paul Kirth <paulkirth at google.com>
Date: Tue, 29 Apr 2025 13:55:36 -0700
Subject: [PATCH] [llvm][mustache][NFC] Use type alias for escape symbols

This data structure's type and/or representation is likely to change.
Using an alias, makes it easy to refactor.
---
 llvm/lib/Support/Mustache.cpp | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/llvm/lib/Support/Mustache.cpp b/llvm/lib/Support/Mustache.cpp
index 2560619538f9a..f201e1c37bf94 100644
--- a/llvm/lib/Support/Mustache.cpp
+++ b/llvm/lib/Support/Mustache.cpp
@@ -110,6 +110,8 @@ class Token {
   size_t Indentation;
 };
 
+using EscapeMap = DenseMap<char, std::string>;
+
 class ASTNode {
 public:
   enum Type {
@@ -124,7 +126,7 @@ class ASTNode {
 
   ASTNode(llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
           llvm::StringMap<SectionLambda> &SectionLambdas,
-          llvm::DenseMap<char, std::string> &Escapes)
+          EscapeMap &Escapes)
       : Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
         Escapes(Escapes), Ty(Type::Root), Parent(nullptr),
         ParentContext(nullptr) {}
@@ -132,7 +134,7 @@ class ASTNode {
   ASTNode(std::string Body, ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
           llvm::StringMap<Lambda> &Lambdas,
           llvm::StringMap<SectionLambda> &SectionLambdas,
-          llvm::DenseMap<char, std::string> &Escapes)
+          EscapeMap &Escapes)
       : Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
         Escapes(Escapes), Ty(Type::Text), Body(std::move(Body)), Parent(Parent),
         ParentContext(nullptr) {}
@@ -141,7 +143,7 @@ class ASTNode {
   ASTNode(Type Ty, Accessor Accessor, ASTNode *Parent,
           llvm::StringMap<AstPtr> &Partials, llvm::StringMap<Lambda> &Lambdas,
           llvm::StringMap<SectionLambda> &SectionLambdas,
-          llvm::DenseMap<char, std::string> &Escapes)
+          EscapeMap &Escapes)
       : Partials(Partials), Lambdas(Lambdas), SectionLambdas(SectionLambdas),
         Escapes(Escapes), Ty(Ty), Parent(Parent),
         AccessorValue(std::move(Accessor)), ParentContext(nullptr) {}
@@ -171,7 +173,7 @@ class ASTNode {
   StringMap<AstPtr> &Partials;
   StringMap<Lambda> &Lambdas;
   StringMap<SectionLambda> &SectionLambdas;
-  DenseMap<char, std::string> &Escapes;
+  EscapeMap &Escapes;
   Type Ty;
   size_t Indentation = 0;
   std::string RawBody;
@@ -187,7 +189,7 @@ class ASTNode {
 AstPtr createRootNode(llvm::StringMap<AstPtr> &Partials,
                       llvm::StringMap<Lambda> &Lambdas,
                       llvm::StringMap<SectionLambda> &SectionLambdas,
-                      llvm::DenseMap<char, std::string> &Escapes) {
+                      EscapeMap &Escapes) {
   return std::make_unique<ASTNode>(Partials, Lambdas, SectionLambdas, Escapes);
 }
 
@@ -195,7 +197,7 @@ AstPtr createNode(ASTNode::Type T, Accessor A, ASTNode *Parent,
                   llvm::StringMap<AstPtr> &Partials,
                   llvm::StringMap<Lambda> &Lambdas,
                   llvm::StringMap<SectionLambda> &SectionLambdas,
-                  llvm::DenseMap<char, std::string> &Escapes) {
+                  EscapeMap &Escapes) {
   return std::make_unique<ASTNode>(T, std::move(A), Parent, Partials, Lambdas,
                                    SectionLambdas, Escapes);
 }
@@ -204,7 +206,7 @@ AstPtr createTextNode(std::string Body, ASTNode *Parent,
                       llvm::StringMap<AstPtr> &Partials,
                       llvm::StringMap<Lambda> &Lambdas,
                       llvm::StringMap<SectionLambda> &SectionLambdas,
-                      llvm::DenseMap<char, std::string> &Escapes) {
+                      EscapeMap &Escapes) {
   return std::make_unique<ASTNode>(std::move(Body), Parent, Partials, Lambdas,
                                    SectionLambdas, Escapes);
 }
@@ -374,7 +376,7 @@ SmallVector<Token> tokenize(StringRef Template) {
 class EscapeStringStream : public raw_ostream {
 public:
   explicit EscapeStringStream(llvm::raw_ostream &WrappedStream,
-                              DenseMap<char, std::string> &Escape)
+                              EscapeMap &Escape)
       : Escape(Escape), WrappedStream(WrappedStream) {
     SetUnbuffered();
   }
@@ -394,7 +396,7 @@ class EscapeStringStream : public raw_ostream {
   uint64_t current_pos() const override { return WrappedStream.tell(); }
 
 private:
-  DenseMap<char, std::string> &Escape;
+  EscapeMap &Escape;
   llvm::raw_ostream &WrappedStream;
 };
 
@@ -433,13 +435,13 @@ class Parser {
   AstPtr parse(llvm::StringMap<AstPtr> &Partials,
                llvm::StringMap<Lambda> &Lambdas,
                llvm::StringMap<SectionLambda> &SectionLambdas,
-               llvm::DenseMap<char, std::string> &Escapes);
+               EscapeMap &Escapes);
 
 private:
   void parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
                      llvm::StringMap<Lambda> &Lambdas,
                      llvm::StringMap<SectionLambda> &SectionLambdas,
-                     llvm::DenseMap<char, std::string> &Escapes);
+                     EscapeMap &Escapes);
 
   SmallVector<Token> Tokens;
   size_t CurrentPtr;
@@ -449,7 +451,7 @@ class Parser {
 AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
                      llvm::StringMap<Lambda> &Lambdas,
                      llvm::StringMap<SectionLambda> &SectionLambdas,
-                     llvm::DenseMap<char, std::string> &Escapes) {
+                     EscapeMap &Escapes) {
   Tokens = tokenize(TemplateStr);
   CurrentPtr = 0;
   AstPtr RootNode = createRootNode(Partials, Lambdas, SectionLambdas, Escapes);
@@ -460,7 +462,7 @@ AstPtr Parser::parse(llvm::StringMap<AstPtr> &Partials,
 void Parser::parseMustache(ASTNode *Parent, llvm::StringMap<AstPtr> &Partials,
                            llvm::StringMap<Lambda> &Lambdas,
                            llvm::StringMap<SectionLambda> &SectionLambdas,
-                           llvm::DenseMap<char, std::string> &Escapes) {
+                           EscapeMap &Escapes) {
 
   while (CurrentPtr < Tokens.size()) {
     Token CurrentToken = Tokens[CurrentPtr];
@@ -726,7 +728,7 @@ void Template::registerLambda(std::string Name, SectionLambda L) {
   SectionLambdas[Name] = L;
 }
 
-void Template::overrideEscapeCharacters(DenseMap<char, std::string> E) {
+void Template::overrideEscapeCharacters(EscapeMap E) {
   Escapes = std::move(E);
 }
 
@@ -734,7 +736,8 @@ Template::Template(StringRef TemplateStr) {
   Parser P = Parser(TemplateStr);
   Tree = P.parse(Partials, Lambdas, SectionLambdas, Escapes);
   // The default behavior is to escape html entities.
-  DenseMap<char, std::string> HtmlEntities = {{'&', "&"},
+  const
+  EscapeMap HtmlEntities = {{'&', "&"},
                                               {'<', "<"},
                                               {'>', ">"},
                                               {'"', """},



More information about the llvm-commits mailing list