godot/modules/gdscript/tests/scripts/parser/features/super.gd

class Say:
	var prefix = "S"

	func greet():
		prefix = "S Greeted"
		print("hello")

	func say(name):
		print(prefix, " say something ", name)


class SayAnotherThing extends Say:
	# This currently crashes the engine.
	#var prefix = "SAT"

	func greet():
		prefix = "SAT Greeted"
		print("hi")

	func say(name):
		print(prefix, " say another thing ", name)


class SayNothing extends Say:
	# This currently crashes the engine.
	#var prefix = "SN"

	func greet():
		super()
		prefix = "SN Greeted"
		print("howdy, see above")

	func greet_prefix_before_super():
		prefix = "SN Greeted"
		super.greet()
		print("howdy, see above")

	func say(name):
		@warning_ignore("unsafe_call_argument")
		super(name + " super'd")
		print(prefix, " say nothing... or not? ", name)


func test():
	var say = Say.new()
	say.greet()
	say.say("foo")
	print()

	var say_another_thing = SayAnotherThing.new()
	say_another_thing.greet()
	say_another_thing.say("bar")
	print()

	var say_nothing = SayNothing.new()
	say_nothing.greet()
	print(say_nothing.prefix)
	say_nothing.greet_prefix_before_super()
	print(say_nothing.prefix)
	# This currently triggers a compiler bug: "compiler bug, function name not found"
	#say_nothing.say("baz")