aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/build
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-10-14 11:56:35 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-10-14 11:57:28 +0200
commitcbea7fec9a493e543ebc6284d17041c9e91cb28f (patch)
tree8179ca177ffb36ecdee18a02b207620fc4d7c2c1 /libbuild2/build
parent3a2969cf54fb21273b7949095c709f6aa9a2a6d9 (diff)
Disable re-parse of sole expansions in Buildscript
Diffstat (limited to 'libbuild2/build')
-rw-r--r--libbuild2/build/script/parser+command-re-parse.test.testscript14
-rw-r--r--libbuild2/build/script/parser+expansion.test.testscript23
-rw-r--r--libbuild2/build/script/parser.hxx2
3 files changed, 36 insertions, 3 deletions
diff --git a/libbuild2/build/script/parser+command-re-parse.test.testscript b/libbuild2/build/script/parser+command-re-parse.test.testscript
index a59b49c..56e05b5 100644
--- a/libbuild2/build/script/parser+command-re-parse.test.testscript
+++ b/libbuild2/build/script/parser+command-re-parse.test.testscript
@@ -1,11 +1,23 @@
# file : libbuild2/build/script/parser+command-re-parse.test.testscript
# license : MIT; see accompanying LICENSE file
+# @@ TMP
+#
+#\
: double-quote
:
$* <<EOI >>EOO
-x = cmd \">-\" "'<-'"
+x = [cmd_line] cmd \">-\" "'<-'"
$x
EOI
cmd '>-' '<-'
EOO
+#\
+
+: literal-re-parse
+:
+$* <<EOI >>EOO
+cmd >foo
+EOI
+cmd >foo
+EOO
diff --git a/libbuild2/build/script/parser+expansion.test.testscript b/libbuild2/build/script/parser+expansion.test.testscript
index 9f1e774..086ec8f 100644
--- a/libbuild2/build/script/parser+expansion.test.testscript
+++ b/libbuild2/build/script/parser+expansion.test.testscript
@@ -24,12 +24,33 @@ EOI
buildfile:12:5: info: while parsing string 'xy'a bc'
EOE
+# @@ TMP
+#
+#\
: invalid-redirect
:
$* <<EOI 2>>EOE != 0
-x = "1>&a"
+x = [cmd_line] "1>&a"
cmd $x
EOI
<string>:1:4: error: stdout merge redirect file descriptor must be 2
buildfile:12:5: info: while parsing string '1>&a'
EOE
+#\
+
+: expansion-re-parse
+:
+$* <<EOI >>EOO
+x = <foo> <bar>
+cmd $x
+
+x = foo
+cmd >$x
+
+x = [string] foo
+cmd >$x
+EOI
+cmd '<foo>' '<bar>'
+cmd >foo
+cmd >foo
+EOO
diff --git a/libbuild2/build/script/parser.hxx b/libbuild2/build/script/parser.hxx
index 09a349f..b737a13 100644
--- a/libbuild2/build/script/parser.hxx
+++ b/libbuild2/build/script/parser.hxx
@@ -29,7 +29,7 @@ namespace build2
// Pre-parse. Issue diagnostics and throw failed in case of an error.
//
public:
- parser (context& c): build2::script::parser (c) {}
+ parser (context& c): build2::script::parser (c, false /* relex */) {}
// Note that the returned script object references the passed path
// name.