vbscript: Colon used in for loop.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35782
Signed-off-by: Robert Wilhelm <robert.wilhelm@gmx.net>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Robert Wilhelm 2020-09-07 21:46:38 +02:00 committed by Alexandre Julliard
parent 74357b7d97
commit 5adbabe90c
2 changed files with 35 additions and 2 deletions

View File

@ -178,8 +178,8 @@ StatementsNl_opt
| StatementsNl { $$ = $1; } | StatementsNl { $$ = $1; }
StatementsNl StatementsNl
: StatementNl { $$ = $1; } : SimpleStatement StSep { $$ = $1; }
| StatementNl StatementsNl { $$ = link_statements($1, $2); } | SimpleStatement StSep StatementsNl { $$ = link_statements($1, $3); }
StatementNl StatementNl
: Statement tNL { $$ = $1; } : Statement tNL { $$ = $1; }

View File

@ -345,6 +345,10 @@ while empty
ok false, "while empty executed" ok false, "while empty executed"
wend wend
x = 0
WHILE x < 3 : x = x + 1 : Wend
Call ok(x = 3, "x not equal to 3")
x = 0 x = 0
WHILE x < 3 : x = x + 1 WHILE x < 3 : x = x + 1
Wend Wend
@ -370,6 +374,8 @@ call ok((x and y), "x or y is false after while")
do while false do while false
loop loop
do while false : loop
do while true do while true
exit do exit do
ok false, "exit do didn't work" ok false, "exit do didn't work"
@ -380,6 +386,10 @@ Do While x < 2 : x = x + 1
Loop Loop
Call ok(x = 2, "x not equal to 2") Call ok(x = 2, "x not equal to 2")
x = 0
Do While x < 2 : x = x + 1: Loop
Call ok(x = 2, "x not equal to 2")
x = 0 x = 0
Do While x >= -2 : Do While x >= -2 :
x = x - 1 x = x - 1
@ -409,6 +419,10 @@ Do: :: x = x + 2
Loop Until x = 4 Loop Until x = 4
Call ok(x = 4, "x not equal to 4") Call ok(x = 4, "x not equal to 4")
x = 0
Do: :: x = x + 2 ::: : Loop Until x = 4
Call ok(x = 4, "x not equal to 4")
x = 5 x = 5
Do: : Do: :
@ -542,6 +556,16 @@ for x = 1 to 5 :
Call ok(false, "exit for not escaped the loop?") Call ok(false, "exit for not escaped the loop?")
next next
dim a1(8)
a1(6)=8
for x=1 to 8:a1(x)=x-1:next
Call ok(a1(6) = 5, "colon used in for loop")
a1(6)=8
for x=1 to 8:y=1
a1(x)=x-2:next
Call ok(a1(6) = 4, "colon used in for loop")
do while true do while true
for x = 1 to 100 for x = 1 to 100
exit do exit do
@ -574,6 +598,15 @@ Call ok(y = 3, "y = " & y)
Call ok(z = 6, "z = " & z) Call ok(z = 6, "z = " & z)
Call ok(getVT(x) = "VT_EMPTY*", "getVT(x) = " & getVT(x)) Call ok(getVT(x) = "VT_EMPTY*", "getVT(x) = " & getVT(x))
Call collectionObj.reset()
y = 0
x = 10
z = 0
for each x in collectionObj : z = z + 2 : y = y+1 ::
Call ok(x = y, "x <> y") : next
Call ok(y = 3, "y = " & y)
Call ok(z = 6, "z = " & z)
Call collectionObj.reset() Call collectionObj.reset()
y = false y = false
for each x in collectionObj for each x in collectionObj