You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Unify String and StringName
This commit is contained in:
@@ -2676,7 +2676,7 @@ void GDScriptAnalyzer::reduce_cast(GDScriptParser::CastNode *p_cast) {
|
||||
}
|
||||
|
||||
void GDScriptAnalyzer::reduce_dictionary(GDScriptParser::DictionaryNode *p_dictionary) {
|
||||
HashMap<Variant, GDScriptParser::ExpressionNode *, VariantHasher, VariantComparator> elements;
|
||||
HashMap<Variant, GDScriptParser::ExpressionNode *, VariantHasher, StringLikeVariantComparator> elements;
|
||||
|
||||
for (int i = 0; i < p_dictionary->elements.size(); i++) {
|
||||
const GDScriptParser::DictionaryNode::Pair &element = p_dictionary->elements[i];
|
||||
@@ -3432,7 +3432,7 @@ void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscri
|
||||
case Variant::QUATERNION:
|
||||
case Variant::AABB:
|
||||
case Variant::OBJECT:
|
||||
error = index_type.builtin_type != Variant::STRING;
|
||||
error = index_type.builtin_type != Variant::STRING && index_type.builtin_type != Variant::STRING_NAME;
|
||||
break;
|
||||
// Expect String or number.
|
||||
case Variant::BASIS:
|
||||
@@ -3446,11 +3446,11 @@ void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscri
|
||||
case Variant::TRANSFORM3D:
|
||||
case Variant::PROJECTION:
|
||||
error = index_type.builtin_type != Variant::INT && index_type.builtin_type != Variant::FLOAT &&
|
||||
index_type.builtin_type != Variant::STRING;
|
||||
index_type.builtin_type != Variant::STRING && index_type.builtin_type != Variant::STRING_NAME;
|
||||
break;
|
||||
// Expect String or int.
|
||||
case Variant::COLOR:
|
||||
error = index_type.builtin_type != Variant::INT && index_type.builtin_type != Variant::STRING;
|
||||
error = index_type.builtin_type != Variant::INT && index_type.builtin_type != Variant::STRING && index_type.builtin_type != Variant::STRING_NAME;
|
||||
break;
|
||||
// Don't support indexing, but we will check it later.
|
||||
case Variant::RID:
|
||||
@@ -4164,6 +4164,8 @@ bool GDScriptAnalyzer::is_type_compatible(const GDScriptParser::DataType &p_targ
|
||||
|
||||
if (p_target.kind == GDScriptParser::DataType::BUILTIN) {
|
||||
bool valid = p_source.kind == GDScriptParser::DataType::BUILTIN && p_target.builtin_type == p_source.builtin_type;
|
||||
valid |= p_source.builtin_type == Variant::STRING && p_target.builtin_type == Variant::STRING_NAME;
|
||||
valid |= p_source.builtin_type == Variant::STRING_NAME && p_target.builtin_type == Variant::STRING;
|
||||
if (!valid && p_allow_implicit_conversion) {
|
||||
valid = Variant::can_convert_strict(p_source.builtin_type, p_target.builtin_type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user