@@ -4693,33 +4693,32 @@ ::Error GDScriptLanguage::refactor_rename_symbol_code(const String &p_code, cons
46934693 r_result.sentinel = cursor_position;
46944694 r_result.code = p_code;
46954695
4696+ GDScriptTokenizer::Token context_token;
4697+
46964698 if (context.node ) {
4697- GDScriptTokenizer::Token context_token;
4699+ GDScriptTokenizer::CodeArea context_code_area = context.node ->get_code_area ();
4700+
4701+ if (context_code_area.contains (Pair<int , int >{ cursor_position.y , cursor_position.x - 1 })) {
4702+ context_token = parser.get_token (cursor_position.y , cursor_position.x - 1 );
4703+ if (!context_code_area.contains (context_token.get_code_area ())) {
4704+ context_token = GDScriptTokenizer::Token ();
4705+ }
4706+ }
4707+
4708+ GDScriptTokenizer::Token context_token_temp = parser.get_token (cursor_position.y , cursor_position.x );
4709+ if (context_code_area.contains (context_token_temp.get_code_area ())) {
4710+ context_token = context_token_temp;
4711+ }
4712+
46984713 switch (context.node ->type ) {
46994714 case GDScriptParser::Node::ANNOTATION: {
47004715 symbol = static_cast <GDScriptParser::AnnotationNode *>(context.node )->name ;
47014716 } break ;
47024717 case GDScriptParser::Node::ARRAY: {
4703- // Non-specific result, cursor is in tokens.
4704- GDScriptParser::ArrayNode *array_node = static_cast <GDScriptParser::ArrayNode *>(context.node );
4705- if (array_node->token_array_bracket_open .has_cursor ()) {
4706- context_token = array_node->token_array_bracket_open ;
4707- } else if (array_node->token_array_bracket_close .has_cursor ()) {
4708- context_token = array_node->token_array_bracket_close ;
4709- } else {
4710- for (GDScriptTokenizer::Token &argument_comma : array_node->token_array_argument_commas ) {
4711- if (argument_comma.has_cursor ()) {
4712- context_token = argument_comma;
4713- break ;
4714- }
4715- }
4716- }
47174718 } break ;
47184719 case GDScriptParser::Node::BREAK: {
4719- context_token = static_cast <GDScriptParser::BreakNode *>(context.node )->token_break_keyword ;
47204720 } break ;
47214721 case GDScriptParser::Node::CONTINUE: {
4722- context_token = static_cast <GDScriptParser::ContinueNode *>(context.node )->token_continue_keyword ;
47234722 } break ;
47244723 case GDScriptParser::Node::IDENTIFIER: {
47254724 symbol = static_cast <GDScriptParser::IdentifierNode *>(context.node )->name ;
0 commit comments