Browse Source

GDScript: Make sure Lua-style dicts use StringName as keys

George Marques 4 years ago
parent
commit
1e4ff2ede6
2 changed files with 4 additions and 2 deletions
  1. 2 2
      modules/gdscript/gdscript_compiler.cpp
  2. 2 0
      modules/gdscript/gdscript_parser.cpp

+ 2 - 2
modules/gdscript/gdscript_compiler.cpp

@@ -427,8 +427,8 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
 						}
 						break;
 					case GDScriptParser::DictionaryNode::LUA_TABLE:
-						// Lua-style: key is an identifier interpreted as string.
-						String key = static_cast<const GDScriptParser::IdentifierNode *>(dn->elements[i].key)->name;
+						// Lua-style: key is an identifier interpreted as StringName.
+						StringName key = static_cast<const GDScriptParser::IdentifierNode *>(dn->elements[i].key)->name;
 						element = codegen.add_constant(key);
 						break;
 				}

+ 2 - 0
modules/gdscript/gdscript_parser.cpp

@@ -2440,6 +2440,8 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_dictionary(ExpressionNode
 							push_error(R"(Expected "=" after dictionary key.)");
 						}
 					}
+					key->is_constant = true;
+					key->reduced_value = static_cast<IdentifierNode *>(key)->name;
 					break;
 				case DictionaryNode::PYTHON_DICT:
 					if (!match(GDScriptTokenizer::Token::COLON)) {