1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-05 21:40:25 +00:00

If merely redefining a CONST with same value, just issue a warning.

This commit is contained in:
FellippeHeitor 2019-03-31 20:22:53 -03:00
parent ca446b471d
commit cb21e44e94

View file

@ -112,7 +112,7 @@ DIM SHARED ConsoleMode, No_C_Compile_Mode, Cloud, NoIDEMode
DIM SHARED VerboseMode AS _BYTE, CMDLineFile AS STRING DIM SHARED VerboseMode AS _BYTE, CMDLineFile AS STRING
DIM SHARED totalUnusedVariables AS LONG, usedVariableList$, bypassNextVariable AS _BYTE DIM SHARED totalUnusedVariables AS LONG, usedVariableList$, bypassNextVariable AS _BYTE
DIM SHARED totalWarnings AS LONG, warningListItems AS LONG DIM SHARED totalWarnings AS LONG, warningListItems AS LONG, lastWarningHeader AS STRING
DIM SHARED ExeIconSet AS LONG DIM SHARED ExeIconSet AS LONG
DIM SHARED VersionInfoSet AS _BYTE DIM SHARED VersionInfoSet AS _BYTE
@ -1435,6 +1435,7 @@ usedVariableList$ = ""
totalUnusedVariables = 0 totalUnusedVariables = 0
totalWarnings = 0 totalWarnings = 0
warningListItems = 0 warningListItems = 0
lastWarningHeader = ""
REDIM SHARED warning$(1000) REDIM SHARED warning$(1000)
uniquenumbern = 0 uniquenumbern = 0
@ -2353,7 +2354,31 @@ DO
hashres = HashFind(hashname$, hashchkflags, hashresflags, hashresref) hashres = HashFind(hashname$, hashchkflags, hashresflags, hashresref)
DO WHILE hashres DO WHILE hashres
IF hashresflags AND HASHFLAG_CONSTANT THEN IF hashresflags AND HASHFLAG_CONSTANT THEN
IF constsubfunc(hashresref) = subfuncn THEN a$ = "Name already in use": GOTO errmes IF constsubfunc(hashresref) = subfuncn THEN
'If merely redefining a CONST with same value
'just issue a warning instead of an error
issueWarning = 0
IF t AND ISSTRING THEN
IF conststring(hashresref) = e$ THEN issueWarning = -1
ELSE
IF t AND ISFLOAT THEN
IF constfloat(hashresref) = constval## THEN issueWarning = -1
ELSE
IF t AND ISUNSIGNED THEN
IF constuinteger(hashresref) = constval~&& THEN issueWarning = -1
ELSE
IF constinteger(hashresref) = constval&& THEN issueWarning = -1
END IF
END IF
END IF
IF issueWarning THEN
addWarning 0, "Constant already defined (same value):"
addWarning linenumber, n$
GOTO constAddDone
ELSE
a$ = "Name already in use": GOTO errmes
END IF
END IF
END IF END IF
IF hashresflags AND HASHFLAG_RESERVED THEN IF hashresflags AND HASHFLAG_RESERVED THEN
a$ = "Name already in use": GOTO errmes a$ = "Name already in use": GOTO errmes
@ -2391,6 +2416,8 @@ DO
END IF END IF
END IF END IF
constAddDone:
IF pending THEN IF pending THEN
'l$ = l$ + sp2 + "," 'l$ = l$ + sp2 + ","
GOTO constdefpendingpp GOTO constdefpendingpp
@ -24994,11 +25021,19 @@ SUB manageVariableList (name$, __cname$, action AS _BYTE)
END SUB END SUB
SUB addWarning (lineNumber AS LONG, text$) SUB addWarning (lineNumber AS LONG, text$)
IF lineNumber > 0 THEN
totalWarnings = totalWarnings + 1
ELSE
IF lastWarningHeader = text$ THEN
EXIT SUB
ELSE
lastWarningHeader = text$
END IF
END IF
warningListItems = warningListItems + 1 warningListItems = warningListItems + 1
IF warningListItems > UBOUND(warning$) THEN REDIM _PRESERVE warning$(warningListItems + 999) IF warningListItems > UBOUND(warning$) THEN REDIM _PRESERVE warning$(warningListItems + 999)
warning$(warningListItems) = MKL$(lineNumber) + text$ warning$(warningListItems) = MKL$(lineNumber) + text$
IF lineNumber > 0 THEN totalWarnings = totalWarnings + 1
END SUB END SUB
'$INCLUDE:'utilities\strings.bas' '$INCLUDE:'utilities\strings.bas'