From: Francis De Brabandere <francisdb@gmail.com> Add 9 missing VBSE error code definitions (1006, 1012, 1015, 1016, 1022, 1029, 1050, 1052, 1058) with their string resources and test entries. --- dlls/vbscript/tests/run.c | 79 ++++++++++++++++++++++++++++++++++- dlls/vbscript/vbscript.rc | 10 +++++ dlls/vbscript/vbscript_defs.h | 10 +++++ 3 files changed, 97 insertions(+), 2 deletions(-) diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index be71769d6de..f6cde521242 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -2742,7 +2742,7 @@ static void test_parse_errors(void) static const struct { const WCHAR *src; - unsigned error_line; + int error_line; int error_char; const WCHAR *source_line; HRESULT source_line_hres; @@ -3122,6 +3122,80 @@ static void test_parse_errors(void) L"\x00e9var = 1\n", 0, 0, NULL, S_OK, 1032 + }, + { + /* Expected ')' - error 1006 */ + L"x = (1 + 2\n", + 0, 10, + NULL, S_OK, -1006 + }, + { + /* Expected 'If' - End With inside If block - error 1012 */ + L"If True Then\n" + " x = 1\n" + "End With\n", + 2, 4, + NULL, S_OK, -1012 + }, + { + /* Expected 'Function' - End Sub inside Function - error 1015 */ + L"Function F()\n" + "End Sub\n", + 1, 4, + NULL, S_OK, -1015 + }, + { + /* Expected 'Sub' - End Function inside Sub - error 1016 */ + L"Sub S()\n" + "End Function\n", + 1, 4, + NULL, S_OK, -1016 + }, + { + /* Expected 'Select' - End If inside Select block - error 1022 */ + L"Select Case 1\n" + " Case 1\n" + "End If\n", + 2, 4, + NULL, S_OK, -1022 + }, + { + /* Expected 'With' - End Sub inside With block - error 1029 */ + L"With CreateObject(\"Scripting.Dictionary\")\n" + "End Sub\n", + 1, 4, + NULL, S_OK, -1029 + }, + { + /* Expected 'Property' - End Sub inside Property Get - error 1050 */ + L"Class C\n" + " Property Get P()\n" + " End Sub\n" + "End Class\n", + 2, 6, + NULL, S_OK, -1050 + }, + { + /* Multiple default members - error 1052 */ + L"Class C\n" + " Public Default Function F()\n" + " F = 1\n" + " End Function\n" + " Public Default Function G()\n" + " G = 2\n" + " End Function\n" + "End Class\n", + -4, -17, + NULL, S_OK, -1052 + }, + { + /* Default only on Property Get - error 1058 */ + L"Class C\n" + " Public Default Property Let P(v)\n" + " End Property\n" + "End Class\n", + -1, -26, + NULL, S_OK, -1058 } }; HRESULT hres; @@ -3139,7 +3213,8 @@ static void test_parse_errors(void) ok(hres == SCRIPT_E_REPORTED, "[%u] script returned: %08lx\n", i, hres); CHECK_CALLED(OnScriptError); - ok(error_line == invalid_scripts[i].error_line, "[%u] error line %lu expected %u\n", + todo_wine_if(invalid_scripts[i].error_line < 0) + ok(error_line == abs(invalid_scripts[i].error_line), "[%u] error line %lu expected %d\n", i, error_line, invalid_scripts[i].error_line); todo_wine_if(invalid_scripts[i].error_char < 0) ok(error_char == abs(invalid_scripts[i].error_char), "[%u] error char %ld expected %d\n", diff --git a/dlls/vbscript/vbscript.rc b/dlls/vbscript/vbscript.rc index 5e3adddc789..87005a8ab3f 100644 --- a/dlls/vbscript/vbscript.rc +++ b/dlls/vbscript/vbscript.rc @@ -64,19 +64,25 @@ STRINGTABLE VBSE_UNQUALIFIED_REFERENCE "Invalid or unqualified reference" VBSE_SYNTAX_ERROR "Syntax error" VBSE_EXPECTED_LPAREN "Expected '('" + VBSE_EXPECTED_RPAREN "Expected ')'" VBSE_EXPECTED_IDENTIFIER "Expected identifier" VBSE_EXPECTED_ASSIGN "Expected '='" + VBSE_EXPECTED_IF "Expected 'If'" VBSE_EXPECTED_TO "Expected 'To'" VBSE_EXPECTED_END "Expected 'End'" + VBSE_EXPECTED_FUNCTION "Expected 'Function'" + VBSE_EXPECTED_SUB "Expected 'Sub'" VBSE_EXPECTED_THEN "Expected 'Then'" VBSE_EXPECTED_WEND "Expected 'Wend'" VBSE_EXPECTED_LOOP "Expected 'Loop'" VBSE_EXPECTED_NEXT "Expected 'Next'" VBSE_EXPECTED_CASE "Expected 'Case'" + VBSE_EXPECTED_SELECT "Expected 'Select'" VBSE_EXPECTED_STATEMENT "Expected statement" VBSE_EXPECTED_END_OF_STATEMENT "Expected end of statement" VBSE_EXPECTED_INTEGER_CONSTANT "Expected integer constant" VBSE_EXPECTED_WHILE_UNTIL_EOS "Expected 'While', 'Until' or end of statement" + VBSE_EXPECTED_WITH "Expected 'With'" VBSE_INVALID_NUMBER "Invalid number" VBSE_INVALID_CHAR "Invalid character" VBSE_UNTERMINATED_STRING "Unterminated string constant" @@ -90,10 +96,14 @@ STRINGTABLE VBSE_EXPECTED_CLASS "Expected 'Class'" VBSE_MUST_BE_INSIDE_CLASS "Must be defined inside a Class" VBSE_EXPECTED_LET_SET_GET "Expected Let or Set or Get in property declaration" + VBSE_EXPECTED_PROPERTY "Expected 'Property'" + VBSE_PROPERTY_ARG_COUNT_MISMATCH "Number of arguments must be consistent across properties specification" + VBSE_MULTIPLE_DEFAULT_MEMBERS "Cannot have multiple default property/method in a Class" VBSE_CLASS_INIT_NO_ARGS "Class initialize or terminate do not have arguments" VBSE_PROPERTY_LET_SET_NEEDS_ARG "Property set or let must have at least one argument" VBSE_UNEXPECTED_NEXT "Unexpected 'Next'" VBSE_DEFAULT_MUST_BE_PUBLIC "'Default' specification must also specify 'Public'" + VBSE_DEFAULT_ONLY_ON_PROPERTY_GET "'Default' specification can only be on Property Get" VBS_COMPILE_ERROR "Microsoft VBScript compilation error" VBS_RUNTIME_ERROR "Microsoft VBScript runtime error" diff --git a/dlls/vbscript/vbscript_defs.h b/dlls/vbscript/vbscript_defs.h index 0dc7b677517..41366f699ca 100644 --- a/dlls/vbscript/vbscript_defs.h +++ b/dlls/vbscript/vbscript_defs.h @@ -275,19 +275,25 @@ #define VBSE_UNQUALIFIED_REFERENCE 505 #define VBSE_SYNTAX_ERROR 1002 #define VBSE_EXPECTED_LPAREN 1005 +#define VBSE_EXPECTED_RPAREN 1006 #define VBSE_EXPECTED_IDENTIFIER 1010 #define VBSE_EXPECTED_ASSIGN 1011 +#define VBSE_EXPECTED_IF 1012 #define VBSE_EXPECTED_TO 1013 #define VBSE_EXPECTED_END 1014 +#define VBSE_EXPECTED_FUNCTION 1015 +#define VBSE_EXPECTED_SUB 1016 #define VBSE_EXPECTED_THEN 1017 #define VBSE_EXPECTED_WEND 1018 #define VBSE_EXPECTED_LOOP 1019 #define VBSE_EXPECTED_NEXT 1020 #define VBSE_EXPECTED_CASE 1021 +#define VBSE_EXPECTED_SELECT 1022 #define VBSE_EXPECTED_STATEMENT 1024 #define VBSE_EXPECTED_END_OF_STATEMENT 1025 #define VBSE_EXPECTED_INTEGER_CONSTANT 1026 #define VBSE_EXPECTED_WHILE_UNTIL_EOS 1028 +#define VBSE_EXPECTED_WITH 1029 #define VBSE_INVALID_NUMBER 1031 #define VBSE_INVALID_CHAR 1032 #define VBSE_UNTERMINATED_STRING 1033 @@ -301,10 +307,14 @@ #define VBSE_EXPECTED_CLASS 1047 #define VBSE_MUST_BE_INSIDE_CLASS 1048 #define VBSE_EXPECTED_LET_SET_GET 1049 +#define VBSE_EXPECTED_PROPERTY 1050 +#define VBSE_PROPERTY_ARG_COUNT_MISMATCH 1051 +#define VBSE_MULTIPLE_DEFAULT_MEMBERS 1052 #define VBSE_CLASS_INIT_NO_ARGS 1053 #define VBSE_PROPERTY_LET_SET_NEEDS_ARG 1054 #define VBSE_UNEXPECTED_NEXT 1055 #define VBSE_DEFAULT_MUST_BE_PUBLIC 1057 +#define VBSE_DEFAULT_ONLY_ON_PROPERTY_GET 1058 #define VBS_COMPILE_ERROR 4096 #define VBS_RUNTIME_ERROR 4097 -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10588