From: Francis De Brabandere <francisdb@gmail.com> Add 13 missing VBSE error code definitions (1006, 1007, 1012, 1015, 1016, 1022, 1029, 1030, 1040, 1050, 1051, 1052, 1058) with their string resources, and 12 todo_wine test entries covering the error codes that can be safely triggered. --- dlls/vbscript/tests/run.c | 96 +++++++++++++++++++++++++++++++++++ dlls/vbscript/vbscript.rc | 13 +++++ dlls/vbscript/vbscript_defs.h | 13 +++++ 3 files changed, 122 insertions(+) diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index be71769d6de..83e815de660 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -3122,6 +3122,102 @@ 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 ']' - error 1007 */ + L"Dim [foo\n", + 0, -8, + NULL, S_OK, -1007 + }, + { + /* 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 + }, + { + /* Invalid 'for' loop control variable - error 1040 */ + L"Dim x\n" + "For x.y = 1 To 3\n" + "Next\n", + 1, -8, + NULL, S_OK, -1040 + }, + { + /* Invalid 'for each' loop control variable - error 1040 */ + L"Dim x\n" + "For Each x.y In Array(1)\n" + "Next\n", + 1, -13, + NULL, S_OK, -1040 + }, + { + /* 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", + 0, -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", + 0, -26, + NULL, S_OK, -1058 } }; HRESULT hres; diff --git a/dlls/vbscript/vbscript.rc b/dlls/vbscript/vbscript.rc index 5e3adddc789..4602ed520e7 100644 --- a/dlls/vbscript/vbscript.rc +++ b/dlls/vbscript/vbscript.rc @@ -64,24 +64,33 @@ STRINGTABLE VBSE_UNQUALIFIED_REFERENCE "Invalid or unqualified reference" VBSE_SYNTAX_ERROR "Syntax error" VBSE_EXPECTED_LPAREN "Expected '('" + VBSE_EXPECTED_RPAREN "Expected ')'" + VBSE_EXPECTED_RBRACKET "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_IDENTIFIER_TOO_LONG "Identifier too long" VBSE_INVALID_NUMBER "Invalid number" VBSE_INVALID_CHAR "Invalid character" VBSE_UNTERMINATED_STRING "Unterminated string constant" VBSE_LOOP_WITHOUT_DO "'loop' without 'do'" VBSE_INVALID_EXIT "Invalid 'exit' statement" + VBSE_INVALID_FOR_CONTROL "Invalid 'for' loop control variable" VBSE_NAME_REDEFINED "Name redefined" VBSE_MUST_BE_FIRST_STATEMENT "Must be first statement on the line" VBSE_CANNOT_USE_PARENS_CALLING_SUB "Cannot use parentheses when calling a Sub" @@ -90,10 +99,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..1efd900c170 100644 --- a/dlls/vbscript/vbscript_defs.h +++ b/dlls/vbscript/vbscript_defs.h @@ -275,24 +275,33 @@ #define VBSE_UNQUALIFIED_REFERENCE 505 #define VBSE_SYNTAX_ERROR 1002 #define VBSE_EXPECTED_LPAREN 1005 +#define VBSE_EXPECTED_RPAREN 1006 +#define VBSE_EXPECTED_RBRACKET 1007 #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_IDENTIFIER_TOO_LONG 1030 #define VBSE_INVALID_NUMBER 1031 #define VBSE_INVALID_CHAR 1032 #define VBSE_UNTERMINATED_STRING 1033 #define VBSE_LOOP_WITHOUT_DO 1038 #define VBSE_INVALID_EXIT 1039 +#define VBSE_INVALID_FOR_CONTROL 1040 #define VBSE_NAME_REDEFINED 1041 #define VBSE_MUST_BE_FIRST_STATEMENT 1042 #define VBSE_CANNOT_USE_PARENS_CALLING_SUB 1044 @@ -301,10 +310,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