diff options
author | fche <fche> | 2005-06-05 16:35:28 +0000 |
---|---|---|
committer | fche <fche> | 2005-06-05 16:35:28 +0000 |
commit | f3c26ea55e2f2c1d222312bf75035359c439ed21 (patch) | |
tree | 1a58dfcdebe04941002e7e0203f765b619ca9c67 /testsuite | |
parent | 8846477c222cdae649b02117cc96999b0be6ad40 (diff) | |
download | systemtap-steved-f3c26ea55e2f2c1d222312bf75035359c439ed21.tar.gz systemtap-steved-f3c26ea55e2f2c1d222312bf75035359c439ed21.tar.xz systemtap-steved-f3c26ea55e2f2c1d222312bf75035359c439ed21.zip |
2005-06-05 Frank Ch. Eigler <fche@elastic.org>
Implement for/next/continue/break/while statements.
* staptree.h: Declare new 0-arity statement types. Tweak for_loop.
* parse.cxx: Parse them all.
* translate.cxx (c_unparser): Maintain break/continue label stack.
(visit_for_loop, *_statement): New implementations.
* elaborate.*, staptree.cxx: Mechanical changes.
* testsuite/parseok/ten.stp, semko/twelve.stp, transko/two.stp,
transok/five.stp: New tests.
Diffstat (limited to 'testsuite')
-rwxr-xr-x | testsuite/parseok/ten.stp | 17 | ||||
-rwxr-xr-x | testsuite/semko/twelve.stp | 6 | ||||
-rwxr-xr-x | testsuite/transko/two.stp | 11 | ||||
-rwxr-xr-x | testsuite/transok/five.stp | 17 |
4 files changed, 51 insertions, 0 deletions
diff --git a/testsuite/parseok/ten.stp b/testsuite/parseok/ten.stp new file mode 100755 index 00000000..25d16e62 --- /dev/null +++ b/testsuite/parseok/ten.stp @@ -0,0 +1,17 @@ +#! stap -p1 + +probe two +{ + for (;;) ; + for (a=0;;) { a + 4; break } + for (;a>0;) { a + 5; continue } + for (;;a++) { a + 5 } + for (a=0;a>0;) { a + 4 } + for (;a>0;a++) { a + 5 } + for (a=0;;a++) { a + 5 } + for (a=0; a<=4; a++) ; + for (a=0; a<=4; a++) { b = a } + next + while (99) ; + while (99) { break continue } +} diff --git a/testsuite/semko/twelve.stp b/testsuite/semko/twelve.stp new file mode 100755 index 00000000..ab71d579 --- /dev/null +++ b/testsuite/semko/twelve.stp @@ -0,0 +1,6 @@ +#! stap -p2 + +probe end { + for (a=0; "hello";) {} + while ("goodbye") {} +} diff --git a/testsuite/transko/two.stp b/testsuite/transko/two.stp new file mode 100755 index 00000000..69f78b5c --- /dev/null +++ b/testsuite/transko/two.stp @@ -0,0 +1,11 @@ +#! stap -p3 + +function bar () { + next +} + +probe foo { + break + for (a=0; a<10; a=a+1) for (b=0; b<10; b=b+1) ; + continue +} diff --git a/testsuite/transok/five.stp b/testsuite/transok/five.stp new file mode 100755 index 00000000..266b3408 --- /dev/null +++ b/testsuite/transok/five.stp @@ -0,0 +1,17 @@ +#! stap + +probe two +{ + for (;;) ; + for (a=0;;) { if (a > 4) break } + for (;a>0;) { a + 5 } + for (;;a=a+1) { a + 5 } + for (a=0;a>0;) { if (a < 4) continue } + for (;a>0;a=a+1) { a + 5 } + for (a=0;;a=a+1) { a + 5 } + for (a=0; a<=4; a=a+1) ; + for (a=0; a<=4; a=a+1) { b = a } + + while (99) next + while (99) {} +} |