[PATCH 0/1] MR10588: vbscript: Add missing compiler error constants, messages, and todo tests.
Add 14 missing VBSE error code definitions (1006, 1007, 1012, 1015, 1016, 1022, 1029, 1030, 1037, 1040, 1050, 1051, 1052, 1058) with their string resources, and 12 todo_wine test entries covering the error codes that can be safely triggered. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10588
From: Francis De Brabandere <francisdb@gmail.com> Add 14 missing VBSE error code definitions (1006, 1007, 1012, 1015, 1016, 1022, 1029, 1030, 1037, 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 | 14 +++++ dlls/vbscript/vbscript_defs.h | 14 +++++ 3 files changed, 124 insertions(+) diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 70ccd517254..4bbb95edd9e 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -3079,6 +3079,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, -2, + 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, -23, + 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, -9, + NULL, S_OK, -1058 } }; HRESULT hres; diff --git a/dlls/vbscript/vbscript.rc b/dlls/vbscript/vbscript.rc index 5e3adddc789..2697130ce3e 100644 --- a/dlls/vbscript/vbscript.rc +++ b/dlls/vbscript/vbscript.rc @@ -64,24 +64,34 @@ 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_INVALID_USE_OF_ME "Invalid use of 'Me' keyword" 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 +100,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..21e5c6c95d9 100644 --- a/dlls/vbscript/vbscript_defs.h +++ b/dlls/vbscript/vbscript_defs.h @@ -275,24 +275,34 @@ #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_INVALID_USE_OF_ME 1037 #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 +311,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
participants (2)
-
Francis De Brabandere -
Francis De Brabandere (@francisdb)