From: Francis De Brabandere <francisdb@gmail.com> A fixed-size class member array (Private mArr(N) or Public mArr(N)) is created with FADF_FIXEDSIZE on native, so attempting to ReDim it from a method body raises err 10 at runtime. Dynamic (mArr()) and scalar (mArr) members can be ReDim'd freely. These cases pass the parser but reach interp_redim; mark the fixed-size ones todo_wine for the upcoming fix. --- dlls/vbscript/tests/lang.vbs | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index d8d612bd389..6c8d5c22b6c 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -2799,6 +2799,68 @@ sub TestRedimInputArg end sub Call TestRedimInputArg +Class FixedClassArr + Private mArr(2) + Public LastErr + Public Sub Resize(n) + On Error Resume Next + Err.Clear : ReDim mArr(n) : LastErr = Err.Number + End Sub + Public Sub ResizePreserve(n) + On Error Resume Next + Err.Clear : ReDim Preserve mArr(n) : LastErr = Err.Number + End Sub +End Class + +Class FixedClassArr2D + Private mArr(2, 3) + Public LastErr + Public Sub Resize(a, b) + On Error Resume Next + Err.Clear : ReDim mArr(a, b) : LastErr = Err.Number + End Sub +End Class + +Class DynamicClassArr + Private mArr() + Public LastErr + Public Function UB : UB = UBound(mArr) : End Function + Public Sub Resize(n) + On Error Resume Next + Err.Clear : ReDim mArr(n) : LastErr = Err.Number + End Sub +End Class + +Class ScalarClassMember + Private mArr + Public LastErr + Public Function UB : UB = UBound(mArr) : End Function + Public Sub Resize(n) + On Error Resume Next + Err.Clear : ReDim mArr(n) : LastErr = Err.Number + End Sub +End Class + +dim cFix : Set cFix = New FixedClassArr +cFix.Resize 5 +todo_wine_ok cFix.LastErr = 10, "ReDim fixed class member err = " & cFix.LastErr +cFix.ResizePreserve 5 +todo_wine_ok cFix.LastErr = 10, "ReDim Preserve fixed class member err = " & cFix.LastErr + +dim cFix2D : Set cFix2D = New FixedClassArr2D +cFix2D.Resize 5, 7 +todo_wine_ok cFix2D.LastErr = 10, "ReDim fixed 2D class member err = " & cFix2D.LastErr + +dim cDyn : Set cDyn = New DynamicClassArr +cDyn.Resize 5 +call ok(cDyn.LastErr = 0, "ReDim dynamic class member err = " & cDyn.LastErr) +call ok(cDyn.UB = 5, "ReDim dynamic class member UB = " & cDyn.UB) + +dim cScalar : Set cScalar = New ScalarClassMember +cScalar.Resize 5 +call ok(cScalar.LastErr = 0, "ReDim scalar->array class member err = " & cScalar.LastErr) +call ok(cScalar.UB = 5, "ReDim scalar->array class member UB = " & cScalar.UB) + sub TestReDimList dim x, y -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10927