diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-09-09 14:10:24 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-09-09 14:10:24 +0200 |
commit | 7a2f5753a12a68e87f8556f6e833710f147533b2 (patch) | |
tree | 850bfc8e3b0a40671db5656e695d640488bdda0a /tests | |
parent | e3b6dc455ab5c98606e38983bd19426ae346f469 (diff) |
Add support for evaluation context
For now it acts as just the value mode that can be enabled anywhere
variable expansion is supported, for example:
(foo=bar):
And the primary use currently is to enable/test quoted and indirect
variable expansion:
"foo bar" = FOO BAR
print $"foo bar" # Invalid.
print $("foo bar") # Yeah, baby.
foo = FOO
FOO = foo
print $($foo)
Not that you should do something like this...
Diffstat (limited to 'tests')
-rw-r--r-- | tests/eval/buildfile | 13 | ||||
-rw-r--r-- | tests/eval/test.out | 4 | ||||
-rwxr-xr-x | tests/eval/test.sh | 3 | ||||
-rw-r--r-- | tests/lexer/driver.cxx | 2 | ||||
-rw-r--r-- | tests/quote/buildfile | 10 | ||||
-rw-r--r-- | tests/quote/test.out | 6 | ||||
-rw-r--r-- | tests/variable/expansion/buildfile | 26 | ||||
-rw-r--r-- | tests/variable/expansion/test.out | 6 | ||||
-rwxr-xr-x | tests/variable/expansion/test.sh | 3 |
9 files changed, 72 insertions, 1 deletions
diff --git a/tests/eval/buildfile b/tests/eval/buildfile new file mode 100644 index 0000000..c658d3b --- /dev/null +++ b/tests/eval/buildfile @@ -0,0 +1,13 @@ +(./): + +# Invalid. +# +#(foo +#(foo #comment + +print () +print ((foo)(bar)) +print ((foo) (bar)) + +print (foo\ +bar) diff --git a/tests/eval/test.out b/tests/eval/test.out new file mode 100644 index 0000000..5885c7d --- /dev/null +++ b/tests/eval/test.out @@ -0,0 +1,4 @@ + +foobar +foo bar +foobar diff --git a/tests/eval/test.sh b/tests/eval/test.sh new file mode 100755 index 0000000..b898b3c --- /dev/null +++ b/tests/eval/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +valgrind -q b -q | diff -u test.out - diff --git a/tests/lexer/driver.cxx b/tests/lexer/driver.cxx index a3819f5..ca27d39 100644 --- a/tests/lexer/driver.cxx +++ b/tests/lexer/driver.cxx @@ -89,7 +89,7 @@ main () assert (lex ("\"foo \"\"bar\"") == tokens ({"foo bar", ""})); assert (lex ("foo\" \"bar") == tokens ({"foo bar", ""})); assert (lex ("\"foo\nbar\"") == tokens ({"foo\nbar", ""})); - assert (lex ("\"#:{}()=+\n\"") == tokens ({"#:{}()=+\n", ""})); + assert (lex ("\"#:{})=+\n\"") == tokens ({"#:{})=+\n", ""})); assert (lex ("\"'\"") == tokens ({"'", ""})); assert (lex ("\"\\\"") == tokens ({"\\", ""})); diff --git a/tests/quote/buildfile b/tests/quote/buildfile index 6dd22b4..19c2bfc 100644 --- a/tests/quote/buildfile +++ b/tests/quote/buildfile @@ -19,4 +19,14 @@ print $foo'bar' print $foo"$bar" print "$foo"bar +# Quoting and evaluation context. +# +print ("x{foo bar}") +#print "(x{foo bar})" # multiple values in concatenating context expansion +print "({foo})" +print "('foo bar')" +print "("foo bar")" +print "("$foo bar")" +print "("$foo ($bar)")" + ./: diff --git a/tests/quote/test.out b/tests/quote/test.out index 216b1c8..f5d7a71 100644 --- a/tests/quote/test.out +++ b/tests/quote/test.out @@ -12,3 +12,9 @@ fo o bar fo obar fo o bar fo obar +x{foo bar} +foo +foo bar +foo bar +fo o bar +fo o bar diff --git a/tests/variable/expansion/buildfile b/tests/variable/expansion/buildfile new file mode 100644 index 0000000..3f28372 --- /dev/null +++ b/tests/variable/expansion/buildfile @@ -0,0 +1,26 @@ +foo = FOO + +print $foo +print $(foo) + +# Invalid. +# +#print $ +#print $() +#print $(foo bar) +#print $(foo{bar}) + +# Indirect. +# +FOO = foo +print $($FOO) +print $($(FOO)) +print $($($FOO)) + +# Quoted name. +# +"b a r" = BAR +print $("b a r") +#print $"b a r" + +./: diff --git a/tests/variable/expansion/test.out b/tests/variable/expansion/test.out new file mode 100644 index 0000000..5056f04 --- /dev/null +++ b/tests/variable/expansion/test.out @@ -0,0 +1,6 @@ +FOO +FOO +FOO +FOO +foo +BAR diff --git a/tests/variable/expansion/test.sh b/tests/variable/expansion/test.sh new file mode 100755 index 0000000..b898b3c --- /dev/null +++ b/tests/variable/expansion/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +valgrind -q b -q | diff -u test.out - |