aboutsummaryrefslogtreecommitdiff
path: root/build2/test/script/lexer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/test/script/lexer.cxx')
-rw-r--r--build2/test/script/lexer.cxx14
1 files changed, 11 insertions, 3 deletions
diff --git a/build2/test/script/lexer.cxx b/build2/test/script/lexer.cxx
index a9b7d56..b7a9f78 100644
--- a/build2/test/script/lexer.cxx
+++ b/build2/test/script/lexer.cxx
@@ -264,13 +264,21 @@ namespace build2
//
case '&':
{
- if (peek () == '&')
+ xchar p (peek ());
+
+ if (p == '?' || p == '!' || p == '&')
{
get ();
- return make_token (type::log_and);
+
+ switch (p)
+ {
+ case '?': return make_token (type::clean_maybe);
+ case '!': return make_token (type::clean_never);
+ case '&': return make_token (type::log_and);
+ }
}
else
- return make_token (type::clean);
+ return make_token (type::clean_always);
}
// <
//