This code must give an error about incompatible types: option VBASupport 1 sub test dim x as Long x = "abc" end sub because that's what VBA does.
Repro. This error occurs when calling the conversion functions to the Integral type CByte, CInt, CLng in the case when the argument of the String type cannot be converted to a number. [1], 5.5.1.2.4 Let-coercion to and from String. Destination Declared Type: Any numeric type. "If the <regional-number-string> could not be interpreted as a number or currency value, runtime error 13 (Type mismatch) is raised. If the value could be interpreted as a number, but was out of the range of the destination type, runtime error 6 (Overflow) is raised" This applies to both explicit and implicit conversions. In my opinion, the fix should also apply to the "Option Compatible" mode. [1]. [MS-VBAL] - v20240521. VBA Language Specification. Copyright © 2024 Microsoft Corporation. Release: May 21, 2024. https://learn.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74
Code pointer: calls to ImpScan in ImpGet* functions (see e.g. basic/source/sbx/sbxint.cxx, basic/source/sbx/sbxlng.cxx). When ImpScan returns an error, in VBA compatibility mode, we need to set the error.