Robert Wilhelm : vbscript: Allow public and private declarations in global scope.
Module: wine Branch: master Commit: 53cd1a27ad6b5a59c00525c1324e3c2405f58c69 URL: https://source.winehq.org/git/wine.git/?a=commit;h=53cd1a27ad6b5a59c00525c13... Author: Robert Wilhelm <robert.wilhelm(a)gmx.net> Date: Mon Sep 28 20:09:14 2020 +0200 vbscript: Allow public and private declarations in global scope. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46588 Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/vbscript/parser.y | 7 +++++++ dlls/vbscript/tests/lang.vbs | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y index 924d0b973b..cf94bdce46 100644 --- a/dlls/vbscript/parser.y +++ b/dlls/vbscript/parser.y @@ -131,6 +131,7 @@ static statement_t *link_statements(statement_t*,statement_t*); %token <dbl> tDouble %type <statement> Statement SimpleStatement StatementNl StatementsNl StatementsNl_opt BodyStatements IfStatement Else_opt +%type <statement> GlobalDimDeclaration %type <expression> Expression LiteralExpression PrimaryExpression EqualityExpression CallExpression ExpressionNl_opt %type <expression> ConcatExpression AdditiveExpression ModExpression IntdivExpression MultiplicativeExpression ExpExpression %type <expression> NotExpression UnaryExpression AndExpression OrExpression XorExpression EqvExpression SignExpression @@ -161,9 +162,15 @@ OptionExplicit_opt SourceElements : /* empty */ + | SourceElements GlobalDimDeclaration StSep + { source_add_statement(ctx, $2); } | SourceElements StatementNl { source_add_statement(ctx, $2); } | SourceElements ClassDeclaration { source_add_class(ctx, $2); } +GlobalDimDeclaration + : tPRIVATE DimDeclList { $$ = new_dim_statement(ctx, @$, $2); CHECK_ERROR; } + | tPUBLIC DimDeclList { $$ = new_dim_statement(ctx, @$, $2); CHECK_ERROR; } + ExpressionNl_opt : /* empty */ { $$ = NULL; } | Expression tNL { $$ = $1; } diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index 9f254f502b..dc16c50fae 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -69,6 +69,10 @@ Call ok(x = "xx", "x = " & x & " expected ""xx""") Dim public1 : public1 = 42 Call ok(public1 = 42, "public1=" & public1 & " expected & " & 42) +Private priv1 : priv1 = 43 +Call ok(priv1 = 43, "priv1=" & priv1 & " expected & " & 43) +Public pub1 : pub1 = 44 +Call ok(pub1 = 44, "pub1=" & pub1 & " expected & " & 44) Call ok(true <> false, "true <> false is false") Call ok(not (true <> true), "true <> true is true")
participants (1)
-
Alexandre Julliard