From 84d815f4e006e02521759070bb89025dab80b219 Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Sat, 24 May 2014 01:39:33 +0200 Subject: Added scoping. ste:mktag generated tags now have an own scope. They even resemble closures, since they inherit their parent scope. A lot of work was done to keep this compatible with older programs. However: * Templates that relied on the non-scoping behavior of tags will probably fail. * Since $ste->vars is no longer an actual array, things like $ste->vars["foo"]["bar"] = "baz" are no longer possible! A single field access will still work: $ste->vars["foo"] = "bar" --- tests/test_closure/.gitignore | 3 +++ tests/test_closure/code.php | 5 +++++ tests/test_closure/test.tpl | 8 ++++++++ tests/test_closure/want | 1 + tests/test_mktag/test.tpl | 3 +-- tests/test_recursive/.gitignore | 3 +++ tests/test_recursive/code.php | 5 +++++ tests/test_recursive/test.tpl | 11 +++++++++++ tests/test_recursive/want | 1 + tests/test_scoping/.gitignore | 3 +++ tests/test_scoping/code.php | 5 +++++ tests/test_scoping/test.tpl | 6 ++++++ tests/test_scoping/want | 0 13 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 tests/test_closure/.gitignore create mode 100644 tests/test_closure/code.php create mode 100644 tests/test_closure/test.tpl create mode 100644 tests/test_closure/want create mode 100644 tests/test_recursive/.gitignore create mode 100644 tests/test_recursive/code.php create mode 100644 tests/test_recursive/test.tpl create mode 100644 tests/test_recursive/want create mode 100644 tests/test_scoping/.gitignore create mode 100644 tests/test_scoping/code.php create mode 100644 tests/test_scoping/test.tpl create mode 100644 tests/test_scoping/want (limited to 'tests') diff --git a/tests/test_closure/.gitignore b/tests/test_closure/.gitignore new file mode 100644 index 0000000..de2a41b --- /dev/null +++ b/tests/test_closure/.gitignore @@ -0,0 +1,3 @@ +have +*.ast +*.transc.php diff --git a/tests/test_closure/code.php b/tests/test_closure/code.php new file mode 100644 index 0000000..de8c553 --- /dev/null +++ b/tests/test_closure/code.php @@ -0,0 +1,5 @@ + + + + $x + + + +10 +20 \ No newline at end of file diff --git a/tests/test_closure/want b/tests/test_closure/want new file mode 100644 index 0000000..64bb6b7 --- /dev/null +++ b/tests/test_closure/want @@ -0,0 +1 @@ +30 diff --git a/tests/test_mktag/test.tpl b/tests/test_mktag/test.tpl index c381ef4..c446206 100644 --- a/tests/test_mktag/test.tpl +++ b/tests/test_mktag/test.tpl @@ -1,11 +1,10 @@ 2 * - $_tag_parameters[b]Ugly hack, since STE does no scoping... $i $i - $b + $_tag_parameters[b] diff --git a/tests/test_recursive/.gitignore b/tests/test_recursive/.gitignore new file mode 100644 index 0000000..de2a41b --- /dev/null +++ b/tests/test_recursive/.gitignore @@ -0,0 +1,3 @@ +have +*.ast +*.transc.php diff --git a/tests/test_recursive/code.php b/tests/test_recursive/code.php new file mode 100644 index 0000000..4ca3852 --- /dev/null +++ b/tests/test_recursive/code.php @@ -0,0 +1,5 @@ +mute_runtime_errors = false; +} diff --git a/tests/test_recursive/test.tpl b/tests/test_recursive/test.tpl new file mode 100644 index 0000000..bea3934 --- /dev/null +++ b/tests/test_recursive/test.tpl @@ -0,0 +1,11 @@ + + + ~{$_tag_parameters[n]|eq|0} + 1 + + $_tag_parameters[n] - 1 + * $_tag_parameters[n] + + + + \ No newline at end of file diff --git a/tests/test_recursive/want b/tests/test_recursive/want new file mode 100644 index 0000000..3fbd4a8 --- /dev/null +++ b/tests/test_recursive/want @@ -0,0 +1 @@ +3628800 diff --git a/tests/test_scoping/.gitignore b/tests/test_scoping/.gitignore new file mode 100644 index 0000000..de2a41b --- /dev/null +++ b/tests/test_scoping/.gitignore @@ -0,0 +1,3 @@ +have +*.ast +*.transc.php diff --git a/tests/test_scoping/code.php b/tests/test_scoping/code.php new file mode 100644 index 0000000..de8c553 --- /dev/null +++ b/tests/test_scoping/code.php @@ -0,0 +1,5 @@ + + ! + + + +$bla \ No newline at end of file diff --git a/tests/test_scoping/want b/tests/test_scoping/want new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3-70-g09d2