Thank you SnooPI and thank you Gernot, your support is really appreciated.

Now, thew, bare with me please!

Just be be clear, this is a new bug in the compiler that was introduced when an attempt was made by you Gernot to change the behaviour in the compiler of when dealing with ".self" a couple of weeks back. My code I am showing here is years old and has worked fine up until Sunday when I downloaded the latest Steam release patch.
Also I will do as you ask and modify my code around this error(we already did this in the previous thread) but, please be patient with me, I am a little unclear why? This is only something that was introduced after a failed attempt to add functionality to the compiler, wouldn't it be easier to simply roll back this part of the compiler code to where it was working fine? No functionality would be lost. This should affect Shoebox for example.
The reason the I would declare(not so much in this sub) the iterator variable, for use in a FOREACH block is because of scope. Logically the declaring the variable as a LOCAL(or even on a global) outside of FOREACH block means that it will be used somewhere in else within the function. If I had use an IF/THEN/BREAK within the FOREACH then I would not want scope errors when trying to access "w" outside the FOREACH block, in this case. This used to work fine, so there is actually a loss of functionality when working around this bug.
Again, to reiterate, this is not a new compiler bug, it's one that's been introduced with the previous beta and with no added functionality to the compiler, simply rolling back the code pre ".self" modification hopefully this shouldn't add any bugs as it was a new bug introduced to old compiler code only a couple of weeks back.
EDIT:
I did the modifications as asked and now this is not working...
"material.gbas"(82) error : GPC0007 wrong argument type
FOREACH m IN self.m[] // <------------------- THIS IS LINE 82
m.combined% = ASL((m.alpha#)*255,24)+ASL(m.blue#*255,16)+ASL(m.green#*255,8) + m.red#*255
NEXT
I'm feeling a little dejavu here

These are the same modifications you asked me to make to the same code when the bug was introduced in the last beta(see here a couple of weeks ago...
https://www.glbasic.com/forum/index.php?topic=11453.msg101179#msg101179 )
Here is the full type by the way(which again, was years old working code)...
TYPE TMaterials
filename$
totalMaterials%
m[] AS TMaterial
FUNCTION SetUp:
DIM self.m[0]
self.Update()
ENDFUNCTION
FUNCTION Update:
self.totalMaterials%=LEN(self.m[])
ENDFUNCTION
FUNCTION Render:
ENDFUNCTION
FUNCTION Destroy:
DIM self.m[0]
self.Update()
ENDFUNCTION
FUNCTION ReadFile: filename$
LOCAL f%,l$
LOCAL n%,t$[]
LOCAL i%
LOCAL m AS TMaterial
self.Destroy()
self.SetUp()
f%=GENFILE()
OPENFILE(f%, filename$, TRUE)
//DEBUG "Start read TMaterials.ReadFile("+filename$+") file >\n"
REPEAT
READLINE f%, l$
n%=SPLITSTR(l$,t$[]," ")
IF LEN(t$[])=0 THEN CONTINUE
SELECT t$[0]
CASE "newmtl"
DIMPUSH self.m[], m
self.m[-1].name$=t$[1]
CASE "Kd"
self.m[-1].red# = t$[1]; self.m[-1].green# = t$[2]; self.m[-1].blue# = t$[3]
CASE "Tr"
self.m[-1].alpha# = t$[1]
CASE "Ns"
self.m[-1].size# = t$[1]
CASE "#"
DEFAULT
ENDSELECT
UNTIL ENDOFFILE(f%)
FOREACH m IN self.m[] // <------------------- THIS IS LINE 82
m.combined% = ASL((m.alpha#)*255,24)+ASL(m.blue#*255,16)+ASL(m.green#*255,8) + m.red#*255
NEXT
//DEBUG "< End read material file\n"
CLOSEFILE f%
ENDFUNCTION
FUNCTION GetMaterialIndex%: findname$
LOCAL matIndex%=0
FOREACH mat IN self.m[]
IF mat.name$ = findname$ THEN BREAK
INC matIndex%
NEXT
IF matIndex%=LEN(self.m[])
myDEBUG ( "Error in GetMaterialIndex(): Material '"+findname$+"', not found!\n" )
END
RETURN -1
ENDIF
RETURN matIndex%
ENDFUNCTION
ENDTYPE
TYPE TMaterial
name$
red#
blue#
green#
alpha# = 1.0
combined% = 0xffffffff
size# = 32
ENDTYPE