summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/expression/evaluator.cpp
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-07-25 12:43:57 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-07-26 16:59:52 +0200
commit1bf8196856c631640659e0a70d900ed7950a5e30 (patch)
tree171288ed86de04357800485d332a71ce6f9c9a7b /src/buildtool/build_engine/expression/evaluator.cpp
parent806a141fd15f8598776a05b736eaf8d09fec5309 (diff)
downloadjustbuild-1bf8196856c631640659e0a70d900ed7950a5e30.tar.gz
expression language: add quoting
Diffstat (limited to 'src/buildtool/build_engine/expression/evaluator.cpp')
-rw-r--r--src/buildtool/build_engine/expression/evaluator.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp
index 2256a040..673b80b3 100644
--- a/src/buildtool/build_engine/expression/evaluator.cpp
+++ b/src/buildtool/build_engine/expression/evaluator.cpp
@@ -499,6 +499,15 @@ auto VarExpr(SubExprEvaluator&& eval,
return result;
}
+auto QuoteExpr(SubExprEvaluator&& /*eval*/,
+ ExpressionPtr const& expr,
+ Configuration const& /*env*/) -> ExpressionPtr {
+ if (auto const literal = expr->At("$1")) {
+ return *literal;
+ }
+ return Expression::kNone;
+}
+
auto IfExpr(SubExprEvaluator&& eval,
ExpressionPtr const& expr,
Configuration const& env) -> ExpressionPtr {
@@ -1089,6 +1098,7 @@ auto AssertNonEmptyExpr(SubExprEvaluator&& eval,
auto const kBuiltInFunctions =
FunctionMap::MakePtr({{"var", VarExpr},
+ {"'", QuoteExpr},
{"if", IfExpr},
{"cond", CondExpr},
{"case", CaseExpr},