Merge pull request #99490 from dalexeev/gds-tests-track-multiple-errors
GDScript: Support tracking multiple analyzer and runtime errors in tests
This commit is contained in:
commit
b3a44a5567
@ -184,8 +184,8 @@ repos:
|
||||
.*\.patch$|
|
||||
.*\.out$|
|
||||
modules/gdscript/tests/scripts/parser/features/mixed_indentation_on_blank_lines\.gd$|
|
||||
modules/gdscript/tests/scripts/parser/warnings/empty_file_newline_comment\.notest\.gd$|
|
||||
modules/gdscript/tests/scripts/parser/warnings/empty_file_newline\.notest\.gd$|
|
||||
modules/gdscript/tests/scripts/parser/warnings/empty_file_newline_comment\.norun\.gd$|
|
||||
modules/gdscript/tests/scripts/parser/warnings/empty_file_newline\.norun\.gd$|
|
||||
platform/android/java/editor/src/main/java/com/android/.*|
|
||||
platform/android/java/lib/src/com/google/.*|
|
||||
tests/data/.*\.bin$
|
||||
|
@ -176,7 +176,7 @@ static String strip_warnings(const String &p_expected) {
|
||||
// so it doesn't fail just because of difference in warnings.
|
||||
String expected_no_warnings;
|
||||
for (String line : p_expected.split("\n")) {
|
||||
if (line.begins_with(">> ")) {
|
||||
if (line.begins_with("~~ ")) {
|
||||
continue;
|
||||
}
|
||||
expected_no_warnings += line + "\n";
|
||||
@ -275,6 +275,7 @@ bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// `*.notest.gd` files are skipped.
|
||||
if (next.ends_with(".notest.gd")) {
|
||||
next = dir->get_next();
|
||||
continue;
|
||||
@ -450,47 +451,43 @@ void GDScriptTest::error_handler(void *p_this, const char *p_function, const cha
|
||||
|
||||
result->status = GDTEST_RUNTIME_ERROR;
|
||||
|
||||
StringBuilder builder;
|
||||
builder.append(">> ");
|
||||
// Only include the function, file and line for script errors, otherwise the
|
||||
// test outputs changes based on the platform/compiler.
|
||||
// Only include the file, line, and function for script errors,
|
||||
// otherwise the test outputs changes based on the platform/compiler.
|
||||
String header;
|
||||
bool include_source_info = false;
|
||||
switch (p_type) {
|
||||
case ERR_HANDLER_ERROR:
|
||||
builder.append("ERROR");
|
||||
header = "ERROR";
|
||||
break;
|
||||
case ERR_HANDLER_WARNING:
|
||||
builder.append("WARNING");
|
||||
header = "WARNING";
|
||||
break;
|
||||
case ERR_HANDLER_SCRIPT:
|
||||
builder.append("SCRIPT ERROR");
|
||||
header = "SCRIPT ERROR";
|
||||
include_source_info = true;
|
||||
break;
|
||||
case ERR_HANDLER_SHADER:
|
||||
builder.append("SHADER ERROR");
|
||||
header = "SHADER ERROR";
|
||||
break;
|
||||
default:
|
||||
builder.append("Unknown error type");
|
||||
header = "UNKNOWN ERROR";
|
||||
break;
|
||||
}
|
||||
|
||||
if (include_source_info) {
|
||||
builder.append("\n>> on function: ");
|
||||
builder.append(String::utf8(p_function));
|
||||
builder.append("()\n>> ");
|
||||
builder.append(String::utf8(p_file).trim_prefix(self->base_dir).replace("\\", "/"));
|
||||
builder.append("\n>> ");
|
||||
builder.append(itos(p_line));
|
||||
header += vformat(" at %s:%d on %s()",
|
||||
String::utf8(p_file).trim_prefix(self->base_dir).replace("\\", "/"),
|
||||
p_line,
|
||||
String::utf8(p_function));
|
||||
}
|
||||
builder.append("\n>> ");
|
||||
builder.append(String::utf8(p_error));
|
||||
if (strlen(p_explanation) > 0) {
|
||||
builder.append("\n>> ");
|
||||
builder.append(String::utf8(p_explanation));
|
||||
}
|
||||
builder.append("\n");
|
||||
|
||||
result->output = builder.as_string();
|
||||
StringBuilder error_string;
|
||||
error_string.append(vformat(">> %s: %s\n", header, String::utf8(p_error)));
|
||||
if (strlen(p_explanation) > 0) {
|
||||
error_string.append(vformat(">> %s\n", String::utf8(p_explanation)));
|
||||
}
|
||||
|
||||
result->output += error_string.as_string();
|
||||
}
|
||||
|
||||
bool GDScriptTest::check_output(const String &p_output) const {
|
||||
@ -588,11 +585,11 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
|
||||
result.status = GDTEST_ANALYZER_ERROR;
|
||||
result.output = get_text_for_status(result.status) + "\n";
|
||||
|
||||
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
|
||||
if (!errors.is_empty()) {
|
||||
// Only the first error since the following might be cascading.
|
||||
result.output += errors.front()->get().message + "\n"; // TODO: line, column?
|
||||
StringBuilder error_string;
|
||||
for (const GDScriptParser::ParserError &error : parser.get_errors()) {
|
||||
error_string.append(vformat(">> ERROR at line %d: %s\n", error.line, error.message));
|
||||
}
|
||||
result.output += error_string.as_string();
|
||||
if (!p_is_generating) {
|
||||
result.passed = check_output(result.output);
|
||||
}
|
||||
@ -601,16 +598,8 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
StringBuilder warning_string;
|
||||
for (const GDScriptWarning &E : parser.get_warnings()) {
|
||||
const GDScriptWarning warning = E;
|
||||
warning_string.append(">> WARNING");
|
||||
warning_string.append("\n>> Line: ");
|
||||
warning_string.append(itos(warning.start_line));
|
||||
warning_string.append("\n>> ");
|
||||
warning_string.append(warning.get_name());
|
||||
warning_string.append("\n>> ");
|
||||
warning_string.append(warning.get_message());
|
||||
warning_string.append("\n");
|
||||
for (const GDScriptWarning &warning : parser.get_warnings()) {
|
||||
warning_string.append(vformat("~~ WARNING at line %d: (%s) %s\n", warning.start_line, warning.get_name(), warning.get_message()));
|
||||
}
|
||||
result.output += warning_string.as_string();
|
||||
#endif
|
||||
@ -628,12 +617,18 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// Script files matching this pattern are allowed to not contain a test() function.
|
||||
if (source_file.match("*.notest.gd")) {
|
||||
|
||||
// `*.norun.gd` files are allowed to not contain a `test()` function (no runtime testing).
|
||||
if (source_file.ends_with(".norun.gd")) {
|
||||
enable_stdout();
|
||||
result.passed = check_output(result.output);
|
||||
result.status = GDTEST_OK;
|
||||
result.output = get_text_for_status(result.status) + "\n" + result.output;
|
||||
if (!p_is_generating) {
|
||||
result.passed = check_output(result.output);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// Test running.
|
||||
const HashMap<StringName, GDScriptFunction *>::ConstIterator test_function_element = script->get_member_functions().find(GDScriptTestRunner::test_function_name);
|
||||
if (!test_function_element) {
|
||||
|
@ -1,10 +1,11 @@
|
||||
# Some tests handle invalid syntax deliberately; exclude relevant attributes.
|
||||
# See also the `file-format` section in `.pre-commit-config.yaml`.
|
||||
|
||||
[parser/features/mixed_indentation_on_blank_lines.gd]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[parser/warnings/empty_file_newline.notest.gd]
|
||||
[parser/warnings/empty_file_newline.norun.gd]
|
||||
insert_final_newline = false
|
||||
|
||||
[parser/warnings/empty_file_newline_comment.notest.gd]
|
||||
[parser/warnings/empty_file_newline_comment.norun.gd]
|
||||
insert_final_newline = false
|
||||
|
@ -1,2 +1,10 @@
|
||||
class A extends InstancePlaceholder:
|
||||
func _init():
|
||||
print('no')
|
||||
|
||||
class B extends A:
|
||||
pass
|
||||
|
||||
func test():
|
||||
InstancePlaceholder.new()
|
||||
B.new()
|
||||
|
@ -1,2 +1,5 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Native class "InstancePlaceholder" cannot be constructed as it is abstract.
|
||||
>> ERROR at line 9: Native class "InstancePlaceholder" cannot be constructed as it is abstract.
|
||||
>> ERROR at line 9: Name "new" is a Callable. You can call it with "new.call()" instead.
|
||||
>> ERROR at line 10: Class "abstract_class_instantiate.gd::B" cannot be constructed as it is based on abstract native class "InstancePlaceholder".
|
||||
>> ERROR at line 10: Name "new" is a Callable. You can call it with "new.call()" instead.
|
||||
|
@ -1,9 +0,0 @@
|
||||
class A extends InstancePlaceholder:
|
||||
func _init():
|
||||
print('no')
|
||||
|
||||
class B extends A:
|
||||
pass
|
||||
|
||||
func test():
|
||||
B.new()
|
@ -1,2 +0,0 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Class "abstract_script_instantiate.gd::B" cannot be constructed as it is based on abstract native class "InstancePlaceholder".
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Argument 1 of annotation "@export_range" isn't a constant expression.
|
||||
>> ERROR at line 3: Argument 1 of annotation "@export_range" isn't a constant expression.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a constant.
|
||||
>> ERROR at line 3: Cannot assign a new value to a constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a constant.
|
||||
>> ERROR at line 3: Cannot assign a new value to a constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a constant.
|
||||
>> ERROR at line 4: Cannot assign a new value to a constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a read-only property.
|
||||
>> ERROR at line 3: Cannot assign a new value to a read-only property.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a read-only property.
|
||||
>> ERROR at line 3: Cannot assign a new value to a read-only property.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "Color" as "String".
|
||||
>> ERROR at line 2: Cannot assign a value of type "Color" as "String".
|
||||
>> ERROR at line 2: Cannot assign a value of type Color to variable "var_color" with specified type String.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot infer the type of "_a" variable because the value doesn't have a set type.
|
||||
>> ERROR at line 4: Cannot infer the type of "_a" variable because the value doesn't have a set type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid operands to operator <<, float and int.
|
||||
>> ERROR at line 3: Invalid operands to operator <<, float and int.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid operands to operator >>, int and float.
|
||||
>> ERROR at line 3: Invalid operands to operator >>, int and float.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Static function "not_existing_method()" not found in base "MyClass".
|
||||
>> ERROR at line 7: Static function "not_existing_method()" not found in base "MyClass".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid cast. Cannot convert from "int" to "Array".
|
||||
>> ERROR at line 3: Invalid cast. Cannot convert from "int" to "Array".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid cast. Cannot convert from "int" to "Node".
|
||||
>> ERROR at line 3: Invalid cast. Cannot convert from "int" to "Node".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid cast. Cannot convert from "RefCounted" to "int".
|
||||
>> ERROR at line 3: Invalid cast. Cannot convert from "RefCounted" to "int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Class "Vector2" hides a built-in type.
|
||||
>> ERROR at line 1: Class "Vector2" hides a built-in type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a constant.
|
||||
>> ERROR at line 5: Cannot assign a new value to a constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a constant.
|
||||
>> ERROR at line 5: Cannot assign a new value to a constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The member "Vector2" cannot have the same name as a builtin type.
|
||||
>> ERROR at line 1: The member "Vector2" cannot have the same name as a builtin type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "int" so it can't be of type "String".
|
||||
>> ERROR at line 5: Expression is of type "int" so it can't be of type "String".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Member "CONSTANT" is not a function.
|
||||
>> ERROR at line 5: Member "CONSTANT" is not a function.
|
||||
>> ERROR at line 5: Name "CONSTANT" called as a function but is a "int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "B" so it can't be of type "C".
|
||||
>> ERROR at line 10: Expression is of type "B" so it can't be of type "C".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cyclic inheritance.
|
||||
>> ERROR at line 4: Cyclic inheritance.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "c1": Cyclic reference.
|
||||
>> ERROR at line 5: Could not resolve member "c1": Cyclic reference.
|
||||
>> ERROR at line 5: Could not resolve type for constant "c2".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "E1": Cyclic reference.
|
||||
>> ERROR at line 5: Could not resolve member "E1": Cyclic reference.
|
||||
>> ERROR at line 5: Enum values must be constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "EV1": Cyclic reference.
|
||||
>> ERROR at line 5: Could not resolve member "EV1": Cyclic reference.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve external class member "v".
|
||||
>> ERROR at line 4: Could not resolve external class member "v".
|
||||
>> ERROR at line 4: Cannot find member "v" in base "TestCyclicRefExternalA".
|
||||
|
@ -1,3 +1,5 @@
|
||||
class_name TestCyclicRefExternalA
|
||||
|
||||
const B = preload("cyclic_ref_external.gd")
|
||||
|
||||
var v = B.v
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "f1": Cyclic reference.
|
||||
>> ERROR at line 8: Could not resolve member "f1": Cyclic reference.
|
||||
>> ERROR at line 8: Cannot infer the type of "p" parameter because the value doesn't have a set type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "f": Cyclic reference.
|
||||
>> ERROR at line 11: Could not resolve member "f": Cyclic reference.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "v1": Cyclic reference.
|
||||
>> ERROR at line 5: Could not resolve member "v1": Cyclic reference.
|
||||
>> ERROR at line 5: Cannot infer the type of "v2" variable because the value doesn't have a set type.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not resolve member "v1": Cyclic reference.
|
||||
>> ERROR at line 1: Could not resolve member "v1": Cyclic reference.
|
||||
>> ERROR at line 1: Could not resolve type for variable "v1".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Key "a" was already used in this dictionary (at line 3).
|
||||
>> ERROR at line 5: Key "a" was already used in this dictionary (at line 3).
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Key "a" was already used in this dictionary (at line 3).
|
||||
>> ERROR at line 5: Key "a" was already used in this dictionary (at line 3).
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Key "a" was already used in this dictionary (at line 3).
|
||||
>> ERROR at line 5: Key "a" was already used in this dictionary (at line 3).
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Key "key" was already used in this dictionary (at line 5).
|
||||
>> ERROR at line 6: Key "key" was already used in this dictionary (at line 5).
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot construct native class "Time" because it is an engine singleton.
|
||||
>> ERROR at line 2: Cannot construct native class "Time" because it is an engine singleton.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot call non-const Dictionary function "clear()" on enum "Enum".
|
||||
>> ERROR at line 4: Cannot call non-const Dictionary function "clear()" on enum "Enum".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot find member "V3" in base "enum_bad_value.gd.Enum".
|
||||
>> ERROR at line 4: Cannot find member "V3" in base "enum_bad_value.gd.Enum".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_class_var_assign_with_wrong_enum_type.gd.MyOtherEnum" as "enum_class_var_assign_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 9: Cannot assign a value of type "enum_class_var_assign_with_wrong_enum_type.gd.MyOtherEnum" as "enum_class_var_assign_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 9: Value of type "enum_class_var_assign_with_wrong_enum_type.gd.MyOtherEnum" cannot be assigned to a variable of type "enum_class_var_assign_with_wrong_enum_type.gd.MyEnum".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_class_var_init_with_wrong_enum_type.gd.MyOtherEnum" as "enum_class_var_init_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 5: Cannot assign a value of type "enum_class_var_init_with_wrong_enum_type.gd.MyOtherEnum" as "enum_class_var_init_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 5: Cannot assign a value of type enum_class_var_init_with_wrong_enum_type.gd.MyOtherEnum to variable "class_var" with specified type enum_class_var_init_with_wrong_enum_type.gd.MyEnum.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot call non-const Dictionary function "clear()" on enum "Enum".
|
||||
>> ERROR at line 5: Cannot call non-const Dictionary function "clear()" on enum "Enum".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Enum values must be integers.
|
||||
>> ERROR at line 3: Enum values must be integers.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot pass a value of type "enum_function_parameter_wrong_type.gd.MyOtherEnum" as "enum_function_parameter_wrong_type.gd.MyEnum".
|
||||
>> ERROR at line 8: Cannot pass a value of type "enum_function_parameter_wrong_type.gd.MyOtherEnum" as "enum_function_parameter_wrong_type.gd.MyEnum".
|
||||
>> ERROR at line 8: Invalid argument for "enum_func()" function: argument 1 should be "enum_function_parameter_wrong_type.gd.MyEnum" but is "enum_function_parameter_wrong_type.gd.MyOtherEnum".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot return a value of type "enum_function_return_wrong_type.gd.MyOtherEnum" as "enum_function_return_wrong_type.gd.MyEnum".
|
||||
>> ERROR at line 5: Cannot return a value of type "enum_function_return_wrong_type.gd.MyOtherEnum" as "enum_function_return_wrong_type.gd.MyEnum".
|
||||
>> ERROR at line 5: Cannot return value of type "enum_function_return_wrong_type.gd.MyOtherEnum" because the function return type is "enum_function_return_wrong_type.gd.MyEnum".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_local_var_assign_outer_with_wrong_enum_type.gd::InnerClass.MyEnum" as "enum_local_var_assign_outer_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 9: Cannot assign a value of type "enum_local_var_assign_outer_with_wrong_enum_type.gd::InnerClass.MyEnum" as "enum_local_var_assign_outer_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 9: Value of type "enum_local_var_assign_outer_with_wrong_enum_type.gd::InnerClass.MyEnum" cannot be assigned to a variable of type "enum_local_var_assign_outer_with_wrong_enum_type.gd.MyEnum".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_local_var_assign_with_wrong_enum_type.gd.MyOtherEnum" as "enum_local_var_assign_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 7: Cannot assign a value of type "enum_local_var_assign_with_wrong_enum_type.gd.MyOtherEnum" as "enum_local_var_assign_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 7: Value of type "enum_local_var_assign_with_wrong_enum_type.gd.MyOtherEnum" cannot be assigned to a variable of type "enum_local_var_assign_with_wrong_enum_type.gd.MyEnum".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_local_var_init_with_wrong_enum_type.gd.MyOtherEnum" as "enum_local_var_init_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 5: Cannot assign a value of type "enum_local_var_init_with_wrong_enum_type.gd.MyOtherEnum" as "enum_local_var_init_with_wrong_enum_type.gd.MyEnum".
|
||||
>> ERROR at line 5: Cannot assign a value of type enum_local_var_init_with_wrong_enum_type.gd.MyOtherEnum to variable "local_var" with specified type enum_local_var_init_with_wrong_enum_type.gd.MyEnum.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The member "Vector2" cannot have the same name as a builtin type.
|
||||
>> ERROR at line 1: The member "Vector2" cannot have the same name as a builtin type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot find member "THIS_DOES_NOT_EXIST" in base "TileSet.TileShape".
|
||||
>> ERROR at line 2: Cannot find member "THIS_DOES_NOT_EXIST" in base "TileSet.TileShape".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_value_from_parent.gd.<anonymous enum>" as "enum_preload_unnamed_assign_to_named.gd.MyEnum".
|
||||
>> ERROR at line 6: Cannot assign a value of type "enum_value_from_parent.gd.<anonymous enum>" as "enum_preload_unnamed_assign_to_named.gd.MyEnum".
|
||||
>> ERROR at line 6: Value of type "enum_value_from_parent.gd.<anonymous enum>" cannot be assigned to a variable of type "enum_preload_unnamed_assign_to_named.gd.MyEnum".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The member "V" already exists in parent class A.
|
||||
>> ERROR at line 5: The member "V" already exists in parent class A.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Enum values must be integers.
|
||||
>> ERROR at line 3: Enum values must be integers.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a value of type "enum_unnamed_assign_to_named.gd.<anonymous enum>" as "enum_unnamed_assign_to_named.gd.MyEnum".
|
||||
>> ERROR at line 6: Cannot assign a value of type "enum_unnamed_assign_to_named.gd.<anonymous enum>" as "enum_unnamed_assign_to_named.gd.MyEnum".
|
||||
>> ERROR at line 6: Cannot assign a value of type enum_unnamed_assign_to_named.gd.<anonymous enum> to variable "local_var" with specified type enum_unnamed_assign_to_named.gd.MyEnum.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Node export is only supported in Node-derived classes, but the current class inherits "Resource".
|
||||
>> ERROR at line 5: Node export is only supported in Node-derived classes, but the current class inherits "Resource".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Node export is only supported in Node-derived classes, but the current class inherits "RefCounted".
|
||||
>> ERROR at line 6: Node export is only supported in Node-derived classes, but the current class inherits "RefCounted".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Node export is only supported in Node-derived classes, but the current class inherits "Resource".
|
||||
>> ERROR at line 5: Node export is only supported in Node-derived classes, but the current class inherits "Resource".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot inherit native class "Time" because it is an engine singleton.
|
||||
>> ERROR at line 3: Cannot inherit native class "Time" because it is an engine singleton.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Constant "A" is not a preloaded script or class.
|
||||
>> ERROR at line 5: Constant "A" is not a preloaded script or class.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Identifier "X" is not a preloaded script or class.
|
||||
>> ERROR at line 8: Identifier "X" is not a preloaded script or class.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot get nested types for extension from non-GDScript type "RefCounted".
|
||||
>> ERROR at line 1: Cannot get nested types for extension from non-GDScript type "RefCounted".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Could not find nested type "Baz".
|
||||
>> ERROR at line 4: Could not find nested type "Baz".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot use variable "A" in extends chain.
|
||||
>> ERROR at line 5: Cannot use variable "A" in extends chain.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "float" so it can't be of type "String".
|
||||
>> ERROR at line 5: Expression is of type "float" so it can't be of type "String".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "int" so it can't be of type "String".
|
||||
>> ERROR at line 5: Expression is of type "int" so it can't be of type "String".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "int" so it can't be of type "String".
|
||||
>> ERROR at line 5: Expression is of type "int" so it can't be of type "String".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "float" so it can't be of type "String".
|
||||
>> ERROR at line 5: Expression is of type "float" so it can't be of type "String".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "int" so it can't be of type "String".
|
||||
>> ERROR at line 5: Expression is of type "int" so it can't be of type "String".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "StringName" so it can't be of type "int".
|
||||
>> ERROR at line 13: Expression is of type "StringName" so it can't be of type "int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "String" so it can't be of type "int".
|
||||
>> ERROR at line 5: Expression is of type "String" so it can't be of type "int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Unable to iterate on value of type "bool".
|
||||
>> ERROR at line 2: Unable to iterate on value of type "bool".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Expression is of type "int" so it can't be of type "String".
|
||||
>> ERROR at line 3: Expression is of type "int" so it can't be of type "String".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Unable to iterate on value of type "Array[Resource]" with variable of type "Node".
|
||||
>> ERROR at line 3: Unable to iterate on value of type "Array[Resource]" with variable of type "Node".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot include a value of type "int" as "String".
|
||||
>> ERROR at line 4: Cannot include a value of type "int" as "String".
|
||||
>> ERROR at line 4: Cannot have an element of type "int" in an array of type "Array[String]".
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot include a value of type "String" as "int".
|
||||
>> ERROR at line 2: Cannot include a value of type "String" as "int".
|
||||
>> ERROR at line 2: Cannot have a key of type "String" in a dictionary of type "Dictionary[int, Variant]".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".
|
||||
>> ERROR at line 9: The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".
|
||||
>> ERROR at line 9: The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "my_function(int = <default>) -> int".
|
||||
>> ERROR at line 9: The function signature doesn't match the parent. Parent signature is "my_function(int = <default>) -> int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".
|
||||
>> ERROR at line 9: The function signature doesn't match the parent. Parent signature is "my_function(int) -> int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "my_function() -> int".
|
||||
>> ERROR at line 9: The function signature doesn't match the parent. Parent signature is "my_function() -> int".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f(Object) -> Variant".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f(Object) -> Variant".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f(Variant) -> Variant".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f(Variant) -> Variant".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f(int) -> Variant".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f(int) -> Variant".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f() -> Node".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f() -> Node".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f() -> Node".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f() -> Node".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f() -> Node".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f() -> Node".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
The function signature doesn't match the parent. Parent signature is "f() -> float".
|
||||
>> ERROR at line 6: The function signature doesn't match the parent. Parent signature is "f() -> float".
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot assign a new value to a constant.
|
||||
>> ERROR at line 6: Cannot assign a new value to a constant.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid argument for "len()" function: Value of type 'Color' can't provide a length.
|
||||
>> ERROR at line 2: Invalid argument for "len()" function: Value of type 'Color' can't provide a length.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot use shorthand "get_node()" notation ("$") in a static function.
|
||||
>> ERROR at line 6: Cannot use shorthand "get_node()" notation ("$") in a static function.
|
||||
|
@ -1,2 +1,3 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot use shorthand "get_node()" notation ("$") on a class that isn't a node.
|
||||
>> ERROR at line 4: Cannot use shorthand "get_node()" notation ("$") on a class that isn't a node.
|
||||
>> ERROR at line 4: Cannot infer the type of "nope" variable because the value doesn't have a set type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Invalid operands "bool" and "String" for assignment operator.
|
||||
>> ERROR at line 3: Invalid operands "bool" and "String" for assignment operator.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot infer the type of "inferred" variable because the value doesn't have a set type.
|
||||
>> ERROR at line 3: Cannot infer the type of "inferred" variable because the value doesn't have a set type.
|
||||
|
@ -1,2 +1,2 @@
|
||||
GDTEST_ANALYZER_ERROR
|
||||
Cannot infer the type of "inferred" variable because the value doesn't have a set type.
|
||||
>> ERROR at line 2: Cannot infer the type of "inferred" variable because the value doesn't have a set type.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user