From: Francis De Brabandere francisdb@gmail.com
--- dlls/vbscript/compile.c | 7 +++++++ dlls/vbscript/tests/lang.vbs | 15 ++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c index baddc51d7e4..b70ea6e5f6a 100644 --- a/dlls/vbscript/compile.c +++ b/dlls/vbscript/compile.c @@ -1173,6 +1173,13 @@ static HRESULT compile_redim_statement(compile_ctx_t *ctx, redim_statement_t *st HRESULT hres;
while(1) { + for (function_decl_t *func = ctx->func_decls; func; func = func->next) { + if (!wcsicmp(func->name, decl->identifier)) { + // compilation error: Name redefined + return MAKE_VBSERROR(VBS_COMPILE_ERROR); + } + } + hres = compile_args(ctx, decl->dims, &arg_cnt); if(FAILED(hres)) return hres; diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index ce62319375e..023af27f939 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -1717,13 +1717,14 @@ redim err(3) ' REF_DISP -> runtime error: Object doesn't support this property or method ok err.number = 501, "redim <err> err.number = " & err.number err.clear -Sub redimSub -End Sub -redim redimSub(3) -' REF_FUNC -> compilation error: Name redefined -todo_wine_ok err.number = -1, "redim <sub> err.number = " & err.number -err.clear -' TODO how do we test the REF_OBJ case? +' TODO where should we put this compilation error test? +' Sub redimSub +' End Sub +' redim redimSub(3) +' ' REF_FUNC -> compilation error: Name redefined +' todo_wine_ok err.number = -1, "redim <sub> err.number = " & err.number +' err.clear +' ' TODO how do we test the REF_OBJ case? on error goto 0