File:  [parser3project] / parser3 / tests / 376.html
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Jan 17 17:34:50 2017 UTC (9 years, 5 months ago) by moko
Branches: MAIN
CVS tags: release_3_5_1, release_3_5_0, release_3_4_6, release_3_4_5, HEAD
many ^break[] tests added (related to bug #1077)

@main[]
1. break in method string param
    ^while(1){=^test1[]=}
2. break in method code param
    ^while(1){=^test2[]=}
3. break in variable in code
    ^while(1){=^test3[]=}
4. stack usage is not visible, but exists
    ^test4[]
5. break can be called from getter
    ^while(1){ ^test5[] } "$o.v"
6. break can be called from setter
    6.0 ^while(1){ ^test6[] } "$o.v"
    6.1 ^while(1){ ^test6-1[] } "$o.v"
7. break can be called from constructor
    ^while(1){ ^test7[] } "$z.CLASS_NAME"
8. break in method name (unusial, but still possible)
    ^while(1){ ^test8[] }
9. break in expression or parser method expression param is allowed
    9.0 ^while(1){ ^test9[] }
    9.1 ^while(1){ ^test9-1[] }
10. break in native methods expression params is not allowed
    10.0 ^while(1){ ^test10[] }
    10.1 ^while(1){ ^test10-1[] }

@test1[]
^method1[%^break[]%;gpf]

@method1[arg1;arg2]
should not be called

@test2[]
^method2{%^break[]%;gpf}

@method2[arg1;arg2]
arg: [$arg1] [$arg2]

@test3[]
$code{%^break[]%}
|$code|

@test4[]
# each iteration uses leaves 6 unwiped values on stack,
# but they are cleaned upon exit from ^for without side effects
$v[^for[i](1;10){- $l1[$l2[$l3[$l4[$l5[$l6[^continue[]?]]]]]] + }]
[$v]

@test5[]
$o[^O::create[]]
=$o.property=

@test6[]
$o[^O::create[]]
=$o.property[value]=

@test6-1[]
$o[^O::create[]]
=$o.property(1+1)=

@test7[]
=$z[^O::create-with-break[]]=

@test8[]
$code{%^break[]%}
=^code[]=

@test9[]
%$x(1+^break[])%

@test9-1[]
=^method9(^break[])=

@method9[cond]
%$x($cond)%

@test10[]
$c{1 ^continue[]}
^try-catch{
=^if($c){yes}{no}=
}
%^break[]%

@test10-1[]
^try-catch{
    =^method10(^break[]){yes}{no}=
}
%^break[]%

@method10[cond;yes;no]
%^if($cond){$yes}{$no}%

@CLASS
O

@create[]
$v[]

@create-with-break[]
%^break[]%

@GET_property[]
$v[before] %^break[]% $v[after]

@SET_property[value]
$v[before] %^break[]% $v[after]

E-mail: