godot/modules/gdscript/tests/scripts/runtime/features/member_info_inheritance.gd
Aaron Franke 1085200f51
GDScript: Replace abstract keyword with @abstract annotation
Co-authored-by: Danil Alexeev <dalexeev12@yandex.ru>
2025-06-23 12:24:45 -07:00

81 lines
2.5 KiB
GDScript

# GH-82169
@warning_ignore_start("unused_signal")
@abstract class A:
@abstract func test_abstract_func_1()
@abstract func test_abstract_func_2()
func test_override_func_1(): pass
func test_override_func_2(): pass
class B extends A:
static var test_static_var_b1
static var test_static_var_b2
var test_var_b1
var test_var_b2
static func test_static_func_b1(): pass
static func test_static_func_b2(): pass
func test_abstract_func_1(): pass
func test_abstract_func_2(): pass
func test_override_func_1(): pass
func test_override_func_2(): pass
func test_func_b1(): pass
func test_func_b2(): pass
signal test_signal_b1()
signal test_signal_b2()
class C extends B:
static var test_static_var_c1
static var test_static_var_c2
var test_var_c1
var test_var_c2
static func test_static_func_c1(): pass
static func test_static_func_c2(): pass
func test_abstract_func_1(): pass
func test_abstract_func_2(): pass
func test_override_func_1(): pass
func test_override_func_2(): pass
func test_func_c1(): pass
func test_func_c2(): pass
signal test_signal_c1()
signal test_signal_c2()
func test_property_signature(name: String, base: Object, is_static: bool = false) -> void:
prints("---", name, "---")
for property in base.get_property_list():
if str(property.name).begins_with("test_"):
print(Utils.get_property_signature(property, null, is_static))
func test_method_signature(name: String, base: Object) -> void:
prints("---", name, "---")
for method in base.get_method_list():
if str(method.name).begins_with("test_"):
print(Utils.get_method_signature(method))
func test_signal_signature(name: String, base: Object) -> void:
prints("---", name, "---")
for method in base.get_signal_list():
if str(method.name).begins_with("test_"):
print(Utils.get_method_signature(method, true))
func test():
var b := B.new()
var c := C.new()
print("=== Class Properties ===")
test_property_signature("A", A as GDScript, true)
test_property_signature("B", B as GDScript, true)
test_property_signature("C", C as GDScript, true)
print("=== Member Properties ===")
test_property_signature("B", b)
test_property_signature("C", c)
print("=== Class Methods ===")
test_method_signature("A", A as GDScript)
test_method_signature("B", B as GDScript)
test_method_signature("C", C as GDScript)
print("=== Member Methods ===")
test_method_signature("B", b)
test_method_signature("C", c)
print("=== Signals ===")
test_signal_signature("B", b)
test_signal_signature("C", c)