You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Display correct symbol in warning when unique name is used without @onready annotation
Add tests for `GET_NODE_DEFAULT_WITHOUT_ONREADY` warning with unique nodes Small modifications to tests
This commit is contained in:
@@ -1093,7 +1093,12 @@ void GDScriptAnalyzer::resolve_class_member(GDScriptParser::ClassNode *p_class,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_get_node) {
|
if (is_get_node) {
|
||||||
parser->push_warning(member.variable, GDScriptWarning::GET_NODE_DEFAULT_WITHOUT_ONREADY, is_using_shorthand ? "$" : "get_node()");
|
String offending_syntax = "get_node()";
|
||||||
|
if (is_using_shorthand) {
|
||||||
|
GDScriptParser::GetNodeNode *get_node_node = static_cast<GDScriptParser::GetNodeNode *>(expr);
|
||||||
|
offending_syntax = get_node_node->use_dollar ? "$" : "%";
|
||||||
|
}
|
||||||
|
parser->push_warning(member.variable, GDScriptWarning::GET_NODE_DEFAULT_WITHOUT_ONREADY, offending_syntax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
var add_node = do_add_node() # Hack to have one node on init and not fail at runtime.
|
var add_node = do_add_nodes() # Hack to have nodes on init and not fail at runtime.
|
||||||
|
|
||||||
var shorthand = $Node
|
var shorthand = $Node
|
||||||
var with_self = self.get_node(^"Node")
|
var with_self = self.get_node(^"Node")
|
||||||
@@ -8,11 +8,23 @@ var without_self = get_node(^"Node")
|
|||||||
var with_cast = get_node(^"Node") as Node
|
var with_cast = get_node(^"Node") as Node
|
||||||
var shorthand_with_cast = $Node as Node
|
var shorthand_with_cast = $Node as Node
|
||||||
|
|
||||||
|
var shorthand_unique = %UniqueNode
|
||||||
|
var shorthand_in_dollar_unique = $"%UniqueNode"
|
||||||
|
var without_self_unique = get_node(^"%UniqueNode")
|
||||||
|
var shorthand_with_cast_unique = %UniqueNode as Node
|
||||||
|
|
||||||
func test():
|
func test():
|
||||||
print("warn")
|
print("warn")
|
||||||
|
|
||||||
func do_add_node():
|
func do_add_nodes():
|
||||||
var node = Node.new()
|
var node = Node.new()
|
||||||
node.name = "Node"
|
node.name = "Node"
|
||||||
@warning_ignore("unsafe_call_argument")
|
@warning_ignore("unsafe_call_argument")
|
||||||
add_child(node)
|
add_child(node)
|
||||||
|
|
||||||
|
var unique_node = Node.new()
|
||||||
|
unique_node.name = "UniqueNode"
|
||||||
|
@warning_ignore("unsafe_call_argument")
|
||||||
|
add_child(unique_node)
|
||||||
|
unique_node.owner = self
|
||||||
|
unique_node.unique_name_in_owner = true
|
||||||
|
|||||||
@@ -4,4 +4,8 @@ GDTEST_OK
|
|||||||
~~ WARNING at line 7: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "get_node()" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
~~ WARNING at line 7: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "get_node()" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
~~ WARNING at line 8: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "get_node()" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
~~ WARNING at line 8: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "get_node()" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
~~ WARNING at line 9: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "$" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
~~ WARNING at line 9: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "$" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
|
~~ WARNING at line 11: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "%" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
|
~~ WARNING at line 12: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "$" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
|
~~ WARNING at line 13: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "get_node()" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
|
~~ WARNING at line 14: (GET_NODE_DEFAULT_WITHOUT_ONREADY) The default value is using "%" which won't return nodes in the scene tree before "_ready()" is called. Use the "@onready" annotation to solve this.
|
||||||
warn
|
warn
|
||||||
|
|||||||
Reference in New Issue
Block a user