C#: Fix parsing of class full name when the base has generics
Also we no longer ignore base classes with generics, since we don't really care about that.
This commit is contained in:
parent
ba9bfb8593
commit
42c57eef13
@ -322,6 +322,15 @@ Error ScriptClassParser::_parse_type_full_name(String &r_full_name) {
|
||||
|
||||
r_full_name += String(value);
|
||||
|
||||
if (code[idx] == '<') {
|
||||
idx++;
|
||||
|
||||
// We don't mind if the base is generic, but we skip it any ways since this information is not needed
|
||||
Error err = _skip_generic_type_params();
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
if (code[idx] != '.') // We only want to take the next token if it's a period
|
||||
return OK;
|
||||
|
||||
@ -344,16 +353,6 @@ Error ScriptClassParser::_parse_class_base(Vector<String> &r_base) {
|
||||
|
||||
Token tk = get_token();
|
||||
|
||||
bool generic = false;
|
||||
if (tk == TK_OP_LESS) {
|
||||
err = _skip_generic_type_params();
|
||||
if (err)
|
||||
return err;
|
||||
// We don't add it to the base list if it's generic
|
||||
generic = true;
|
||||
tk = get_token();
|
||||
}
|
||||
|
||||
if (tk == TK_COMMA) {
|
||||
err = _parse_class_base(r_base);
|
||||
if (err)
|
||||
@ -373,9 +372,7 @@ Error ScriptClassParser::_parse_class_base(Vector<String> &r_base) {
|
||||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
|
||||
if (!generic) {
|
||||
r_base.push_back(name);
|
||||
}
|
||||
r_base.push_back(name);
|
||||
|
||||
return OK;
|
||||
}
|
||||
@ -567,7 +564,7 @@ Error ScriptClassParser::parse(const String &p_code) {
|
||||
if (full_name.length())
|
||||
full_name += ".";
|
||||
full_name += class_decl.name;
|
||||
OS::get_singleton()->print("%s", String("Ignoring generic class declaration: " + class_decl.name).utf8().get_data());
|
||||
OS::get_singleton()->print("Ignoring generic class declaration: %s\n", class_decl.name.utf8().get_data());
|
||||
}
|
||||
}
|
||||
} else if (tk == TK_IDENTIFIER && String(value) == "struct") {
|
||||
|
Loading…
Reference in New Issue
Block a user