godot/modules/gdscript/tests/scripts/runtime/features/self_destruction.gd

# https://github.com/godotengine/godot/issues/75658

class MyObj:
	var callable: Callable

	func run():
		callable.call()

	var prop:
		set(value):
			callable.call()
		get:
			callable.call()
			return 0

	func _on_some_signal():
		callable.call()

	func _init(p_callable: Callable):
		self.callable = p_callable

signal some_signal

var obj: MyObj

func test():
	# Call.
	obj = MyObj.new(nullify_obj)
	obj.run()
	print(obj)

	# Get.
	obj = MyObj.new(nullify_obj)
	var _aux = obj.prop
	print(obj)

	# Set.
	obj = MyObj.new(nullify_obj)
	obj.prop = 1
	print(obj)

	# Signal handling.
	obj = MyObj.new(nullify_obj)
	@warning_ignore("return_value_discarded")
	some_signal.connect(obj._on_some_signal)
	some_signal.emit()
	print(obj)

func nullify_obj():
	obj = null