Module: wine Branch: master Commit: 69bee9f00452ea526afea75199ba540b391ddee3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=69bee9f00452ea526afea75199... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Mar 13 17:44:14 2014 +0100 vbscript: Allow empty brackets in argument declarations. --- dlls/vbscript/parser.y | 6 +++--- dlls/vbscript/tests/lang.vbs | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y index cd69f5d..6bd4907 100644 --- a/dlls/vbscript/parser.y +++ b/dlls/vbscript/parser.y @@ -434,9 +434,9 @@ ArgumentDeclList | ArgumentDecl ',' ArgumentDeclList { $1->next = $3; $$ = $1; } ArgumentDecl - : Identifier { $$ = new_argument_decl(ctx, $1, TRUE); } - | tBYREF Identifier { $$ = new_argument_decl(ctx, $2, TRUE); } - | tBYVAL Identifier { $$ = new_argument_decl(ctx, $2, FALSE); } + : Identifier EmptyBrackets_opt { $$ = new_argument_decl(ctx, $1, TRUE); } + | tBYREF Identifier EmptyBrackets_opt { $$ = new_argument_decl(ctx, $2, TRUE); } + | tBYVAL Identifier EmptyBrackets_opt { $$ = new_argument_decl(ctx, $2, FALSE); } /* 'property' may be both keyword and identifier, depending on context */ Identifier diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index c1af191..612c615 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -1115,4 +1115,21 @@ End Sub Call arrarg(arr, arr, obj.classarr, obj.classarr) +Sub arrarg2(byref refarr(), byval valarr(), byref refarr2(), byval valarr2()) + Call ok(getVT(refarr) = "VT_ARRAY|VT_BYREF|VT_VARIANT*", "getVT(refarr) = " & getVT(refarr)) + Call ok(getVT(valarr) = "VT_ARRAY|VT_VARIANT*", "getVT(valarr) = " & getVT(valarr)) + Call ok(getVT(refarr2) = "VT_ARRAY|VT_VARIANT*", "getVT(refarr2) = " & getVT(refarr2)) + Call ok(getVT(valarr2) = "VT_ARRAY|VT_VARIANT*", "getVT(valarr2) = " & getVT(valarr2)) +End Sub + +Call arrarg2(arr, arr, obj.classarr, obj.classarr) + +Sub testarrarg(arg(), vt) + Call ok(getVT(arg) = vt, "getVT() = " & getVT(arg) & " expected " & vt) +End Sub + +Call testarrarg(1, "VT_I2*") +Call testarrarg(false, "VT_BOOL*") +Call testarrarg(Empty, "VT_EMPTY*") + reportSuccess()