From: Francis De Brabandere <francisdb@gmail.com> Return error 1006 "Expected ')'" for unclosed parentheses in expressions, error 1052 for multiple Default members in a class, and error 1058 for Default on Property Let/Set instead of Property Get. --- dlls/vbscript/parser.y | 8 ++++++-- dlls/vbscript/tests/run.c | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y index ab4f6250aa1..6b99c034cbb 100644 --- a/dlls/vbscript/parser.y +++ b/dlls/vbscript/parser.y @@ -483,6 +483,7 @@ IntegerValue PrimaryExpression : tEXPRLBRACKET Expression ')' { $$ = new_unary_expression(ctx, EXPR_BRACKETS, $2); } + | tEXPRLBRACKET Expression error { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_RPAREN); YYABORT; } | tME { $$ = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; } ClassDeclaration @@ -1118,8 +1119,7 @@ static function_decl_t *new_function_decl(parser_ctx_t *ctx, const WCHAR *name, if(type == FUNC_PROPGET || type == FUNC_FUNCTION || type == FUNC_SUB) { is_default = TRUE; }else { - FIXME("Invalid default property\n"); - ctx->hres = E_FAIL; + ctx->hres = MAKE_VBSERROR(VBSE_DEFAULT_ONLY_ON_PROPERTY_GET); return NULL; } } @@ -1171,6 +1171,10 @@ static class_decl_t *add_class_function(parser_ctx_t *ctx, class_decl_t *class_d function_decl_t *iter; for(iter = class_decl->funcs; iter; iter = iter->next) { + if(decl->is_default && iter->is_default) { + ctx->hres = MAKE_VBSERROR(VBSE_MULTIPLE_DEFAULT_MEMBERS); + return NULL; + } if(!wcsicmp(iter->name, decl->name)) { if(decl->type == FUNC_SUB || decl->type == FUNC_FUNCTION) { ctx->hres = MAKE_VBSERROR(VBSE_NAME_REDEFINED); diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index b5aebf619f2..969b51d727a 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -3127,7 +3127,7 @@ static void test_parse_errors(void) /* Expected ')' - error 1006 */ L"x = (1 + 2\n", 0, 10, - NULL, S_OK, -1006 + NULL, S_OK, 1006 }, { /* Expected ']' - error 1007 */ @@ -3208,7 +3208,7 @@ static void test_parse_errors(void) " End Function\n" "End Class\n", -4, -17, - NULL, S_OK, -1052 + NULL, S_OK, 1052 }, { /* Default only on Property Get - error 1058 */ @@ -3217,7 +3217,7 @@ static void test_parse_errors(void) " End Property\n" "End Class\n", -1, -26, - NULL, S_OK, -1058 + NULL, S_OK, 1058 } }; HRESULT hres; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10588