Skip to content

Commit bb9efeb

Browse files
committed
Remove tokens in GDScriptParser::Node
- Add `GDScriptTokenizer::CodeArea` - Add `GDScriptParser::get_token(int p_line, int p_column)`
1 parent 46cd07a commit bb9efeb

File tree

4 files changed

+347
-281
lines changed

4 files changed

+347
-281
lines changed

modules/gdscript/gdscript_editor.cpp

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)