Should this return a duplicate Indentifier error?

BlitzMax Forums/BlitzMax Programming/Should this return a duplicate Indentifier error?

_Skully(Posted 2009) [#1]
I always thought that within an IF/ELSE/ELSEIF, a local variable defined would stay within the scope of that part of the if/else. At what level does variable scoping occur?

For example:
For Local s:Shape=EachIn Self.HotSpots
	If Poly.PointInPoly(mx,my,s.TFormPoly)
		If s.State=Shape.State_MouseDown And (Not md1)
			' Click Event
			Local ev:TMGUIEvent=New TMGUIEvent
			ev.Event=ev.Event_Clicked
			ev.EventShape=s
			ev.EventMount=s.Parent
			s.State=Shape.State_MouseHover
			TMGUIEvent.Events.AddLast(ev)
		ElseIf s.State=Shape.State_MouseHover And md1
			' Pressed Event
			Local ev:TMGUIEvent=New TMGUIEvent
			ev.Event=ev.EVENT_MOUSEDOWN
			ev.EventShape=s
			ev.EventMount=s.Parent
			s.State=Shape.State_MouseDown
			TMGUIEvent.Events.AddLast(ev)
		ElseIf s.State=Shape.State_Normal
			' Mouse Hover Event
			Local ev:TMGUIEvent=New TMGUIEvent
			ev.Event=ev.Event_MouseOver
			ev.EventShape=s
			ev.EventMount=s.Parent
			s.State=Shape.State_MouseHover
			TMGUIEvent.Events.AddLast(ev)
		EndIf
		
'				DrawText s.Parent.Name,0,128
	Else
		If s.State<>Shape.State_Normal
			Local ev:TMGUIEvent=New TMGUIEvent
			ev.Event=ev.Event_MouseAway
			ev.EventShape=s
			ev.EventMount=s.Parent
			s.State=Shape.State_Normal
			TMGUIEvent.Events.AddLast(ev)
		EndIf				
	End If
Next


I get a duplicate identifier error for ev, is that correct?


N(Posted 2009) [#2]
Is Strict/SuperStrict enabled?


_Skully(Posted 2009) [#3]
SuperStrict


N(Posted 2009) [#4]
SuperStrict

Local l:TList = New TList

For Local s:Object = EachIn l
	If True Then
		If True Then
			Local ev:Object = "Woop"
		ElseIf False
			Local ev:Object = "Woop"
		Else
			Local ev:Object = "Woop"
		EndIf
	Else
		If True Then
			Local ev:Object = "Woop"
		EndIf
	EndIf
Next


This works. Chances are you've got ev declared somewhere else.


_Skully(Posted 2009) [#5]
Its working now, I must have typed something above it to screw things up.. I just CTRL-Z'd until it worked... weird!