Jacek Caban : vbscript: Allow empty brackets in argument declarations.

Alexandre Julliard julliard at winehq.org
Thu Mar 13 14:40:35 CDT 2014


Module: wine
Branch: master
Commit: 69bee9f00452ea526afea75199ba540b391ddee3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=69bee9f00452ea526afea75199ba540b391ddee3

Author: Jacek Caban <jacek at 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()




More information about the wine-cvs mailing list