Using Self and Super for Fields

BlitzMax Forums/BlitzMax Programming/Using Self and Super for Fields

Is it possible to use self and super for fields within extended types?

What happens when you try?

Type Base
	Field Test:String = "Base Field"
End Type

Type Extended Extends Base
	Field Test:String = "Extended Field"
	
	Method Debug()
		Print Super.Test
		Print Self.Test
	End Method
End Type

Local Example:Extended = New Extended
Example.Debug()


Gives an error "Identifier Test Not Found" at "Print Super.Test".
I guess that's my answer.

You need to typecast it:

Print Base(Super).Test


Which makes the use of Super pretty redundant as you might just as well use...
Print Base(Self).Test


Super *should* work with fields, should it not?

Yeah I guess it should unless I'm missing something (like it would break inheritance or something). It works with methods and functions of course:

Type Base
	Field Test:String = "Base Field"
	
	Method GetTest$()
		Return test
	End Method

	Function Test2$()
		Return "Base Test2"
	End Function
End Type

Type Extended Extends Base
	Field Test:String = "Extended Field"
	
	Method GetTest$()
		Return test
	End Method

	Function Test2$()
		Return "Extended Test2"
	End Function

	Method Debug()
		Print Super.GetTest()
		Print Self.GetTest()
		Print Super.Test2()
		Print Self.Test2()
	End Method
End Type

Local Example:Extended = New Extended
Example.Debug()