mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-07 18:00:24 +00:00
OPTION _EXPLICIT errors report the variable name.
Also: Allow comments and empty lines before OPTION _EXPLICIT
This commit is contained in:
parent
aec3d3b4dd
commit
7bb17d3d8d
|
@ -2873,6 +2873,7 @@ DO
|
||||||
IF idemode = 0 AND inclevel = 0 THEN a3$ = lineinput3$
|
IF idemode = 0 AND inclevel = 0 THEN a3$ = lineinput3$
|
||||||
IF a3$ = CHR$(13) THEN EXIT DO
|
IF a3$ = CHR$(13) THEN EXIT DO
|
||||||
linenumber = linenumber + 1
|
linenumber = linenumber + 1
|
||||||
|
IF linenumber = 1 THEN opex_comments = -1
|
||||||
|
|
||||||
IF InValidLine(linenumber) THEN
|
IF InValidLine(linenumber) THEN
|
||||||
layoutok = 1
|
layoutok = 1
|
||||||
|
@ -2906,11 +2907,20 @@ DO
|
||||||
'No need to go over those lines again.
|
'No need to go over those lines again.
|
||||||
'IF InValidLine(linenumber) THEN goto skipide4 'layoutdone = 0: GOTO finishednonexec
|
'IF InValidLine(linenumber) THEN goto skipide4 'layoutdone = 0: GOTO finishednonexec
|
||||||
|
|
||||||
|
a3u$ = UCASE$(a3$)
|
||||||
|
|
||||||
|
IF LEFT$(a3u$, 4) = "REM " OR LEFT$(a3u$, 1) = "'" OR LEFT$(a3u$, 16) = "OPTION _EXPLICIT" THEN
|
||||||
|
'It's a comment or an empty line, alright.
|
||||||
|
IF LEFT$(a3u$, 4) = "REM " THEN i = 5 ELSE i = 2
|
||||||
|
IF LEFT$(LTRIM$(MID$(a3u$, i)), 8) = "$INCLUDE" THEN opex_comments = 0
|
||||||
|
ELSE
|
||||||
|
'As soon as a line isn't a comment anymore, it can't come before OPTION _EXPLICIT
|
||||||
|
opex_comments = 0
|
||||||
|
END IF
|
||||||
|
|
||||||
'QB64 Metacommands
|
'QB64 Metacommands
|
||||||
IF ASC(a3$) = 36 THEN '$
|
IF ASC(a3$) = 36 THEN '$
|
||||||
|
|
||||||
a3u$ = UCASE$(a3$)
|
|
||||||
|
|
||||||
'precompiler commands should always be executed FIRST.
|
'precompiler commands should always be executed FIRST.
|
||||||
|
|
||||||
IF LEFT$(a3u$, 5) = "$LET " THEN GOTO finishednonexec 'we dealt with this basically in the prepass
|
IF LEFT$(a3u$, 5) = "$LET " THEN GOTO finishednonexec 'we dealt with this basically in the prepass
|
||||||
|
@ -9597,7 +9607,7 @@ DO
|
||||||
layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$
|
layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$
|
||||||
GOTO finishedline
|
GOTO finishedline
|
||||||
CASE "_EXPLICIT"
|
CASE "_EXPLICIT"
|
||||||
IF linenumber > 1 THEN a$ = "OPTION _EXPLICIT must come before any other statement": GOTO errmes
|
IF linenumber > 1 AND opex_comments = 0 THEN a$ = "OPTION _EXPLICIT must come before any other statement": GOTO errmes
|
||||||
optionexplicit = -1
|
optionexplicit = -1
|
||||||
l$ = "OPTION" + sp + "_EXPLICIT"
|
l$ = "OPTION" + sp + "_EXPLICIT"
|
||||||
layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$
|
layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$
|
||||||
|
@ -14589,7 +14599,7 @@ FUNCTION evaluate$ (a2$, typ AS LONG)
|
||||||
NEXT
|
NEXT
|
||||||
fakee$ = "10": FOR i2 = 2 TO nume: fakee$ = fakee$ + sp + "," + sp + "10": NEXT
|
fakee$ = "10": FOR i2 = 2 TO nume: fakee$ = fakee$ + sp + "," + sp + "10": NEXT
|
||||||
IF Debug THEN PRINT #9, "evaluate:creating undefined array using dim2(" + l$ + "," + dtyp$ + ",1," + fakee$ + ")"
|
IF Debug THEN PRINT #9, "evaluate:creating undefined array using dim2(" + l$ + "," + dtyp$ + ",1," + fakee$ + ")"
|
||||||
IF optionexplicit THEN Give_Error "Array not defined": EXIT FUNCTION
|
IF optionexplicit THEN Give_Error "Array '" + l$ + "' not defined": EXIT FUNCTION
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
IF Error_Happened THEN EXIT FUNCTION
|
||||||
olddimstatic = dimstatic
|
olddimstatic = dimstatic
|
||||||
method = 1
|
method = 1
|
||||||
|
@ -14810,7 +14820,7 @@ FUNCTION evaluate$ (a2$, typ AS LONG)
|
||||||
LOOP
|
LOOP
|
||||||
|
|
||||||
IF Debug THEN PRINT #9, "CREATING VARIABLE:" + x$
|
IF Debug THEN PRINT #9, "CREATING VARIABLE:" + x$
|
||||||
IF optionexplicit THEN Give_Error "Variable not defined": EXIT FUNCTION
|
IF optionexplicit THEN Give_Error "Variable '" + x$ + "' not defined": EXIT FUNCTION
|
||||||
retval = dim2(x$, typ$, 1, "")
|
retval = dim2(x$, typ$, 1, "")
|
||||||
IF Error_Happened THEN EXIT FUNCTION
|
IF Error_Happened THEN EXIT FUNCTION
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue