1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-05 03:00:25 +00:00

Merge pull request #190 from QB64Team/debug-mode [ci-skip]

Debug mode tweaks
This commit is contained in:
Fellippe Heitor 2021-09-11 23:26:14 -03:00 committed by GitHub
commit 1788a77379
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 26 deletions

View file

@ -7103,6 +7103,10 @@ SUB DebugMode
tempVarType$ = "_UNSIGNED _BIT" tempVarType$ = "_UNSIGNED _BIT"
END IF END IF
SELECT CASE tempVarType$ SELECT CASE tempVarType$
CASE "_BIT", "_UNSIGNED _BIT"
value$ = MKL$(VAL(value$))
varSize& = LEN(dummy&)
result$ = STR$(CVL(value$))
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE" CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE"
value$ = _MK$(_BYTE, VAL(value$)) value$ = _MK$(_BYTE, VAL(value$))
varSize& = LEN(dummy%%) varSize& = LEN(dummy%%)
@ -7641,14 +7645,14 @@ SUB DebugMode
IF INSTR(tempVarType$, "BIT *") THEN IF INSTR(tempVarType$, "BIT *") THEN
IF VAL(MID$(tempVarType$, _INSTRREV(tempVarType$, " ") + 1)) > 32 THEN IF VAL(MID$(tempVarType$, _INSTRREV(tempVarType$, " ") + 1)) > 32 THEN
tempVarType$ = "_INTEGER64" tempVarType$ = "_INTEGER64"
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED _INTEGER64" IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED _INTEGER64"
ELSE ELSE
tempVarType$ = "LONG" tempVarType$ = "LONG"
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG" IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
END IF END IF
ELSEIF INSTR("@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@", "@" + tempVarType$ + "@") THEN ELSEIF INSTR("@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@", "@" + tempVarType$ + "@") THEN
tempVarType$ = "LONG" tempVarType$ = "LONG"
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG" IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
END IF END IF
SELECT CASE tempVarType$ SELECT CASE tempVarType$
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE": varSize& = LEN(dummy%%) CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE": varSize& = LEN(dummy%%)
@ -7941,7 +7945,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
COLOR 0, 7 COLOR 0, 7
LOCATE p.y + 4, p.x + 2 LOCATE p.y + 4, p.x + 2
PRINT "Double-click on an item to add it to the watch list:" PRINT "Double-click on an item to add it to the watch list:"
IF doubleClickThreshold < p.w AND IdeDebugMode > 0 THEN IF doubleClickThreshold > 0 AND doubleClickThreshold < p.w AND IdeDebugMode > 0 THEN
_PRINTSTRING (p.x + doubleClickThreshold, p.y + 5), CHR$(194) _PRINTSTRING (p.x + doubleClickThreshold, p.y + 5), CHR$(194)
_PRINTSTRING (p.x + doubleClickThreshold, p.y + p.h - 1), CHR$(193) _PRINTSTRING (p.x + doubleClickThreshold, p.y + p.h - 1), CHR$(193)
END IF END IF
@ -8361,10 +8365,10 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
IF mCLICK AND focus = 2 THEN 'list click IF mCLICK AND focus = 2 THEN 'list click
IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN
IF mX < p.x + doubleClickThreshold OR IdeDebugMode = 0 THEN IF doubleClickThreshold > 0 AND mX >= p.x + doubleClickThreshold AND IdeDebugMode > 0 THEN
GOTO toggleWatch
ELSE
GOTO sendValue GOTO sendValue
ELSE
GOTO toggleWatch
END IF END IF
END IF END IF
lastClick! = TIMER lastClick! = TIMER
@ -12223,9 +12227,9 @@ SUB ideshowtext
IF ShowLineNumbers THEN IF ShowLineNumbers THEN
IF ShowLineNumbersUseBG THEN COLOR , 6 IF ShowLineNumbersUseBG THEN COLOR , 6
IF searchStringFoundOn > 0 AND searchStringFoundOn = l THEN IF (searchStringFoundOn > 0 AND searchStringFoundOn = l) OR (l = debugnextline AND vWatchOn = 1) THEN
COLOR 13, 5 COLOR 13, 5
searchStringFoundOn = 0 IF searchStringFoundOn > 0 AND searchStringFoundOn = l THEN searchStringFoundOn = 0
END IF END IF
IF vWatchOn = 1 AND IdeBreakpoints(l) <> 0 THEN COLOR , 4 IF vWatchOn = 1 AND IdeBreakpoints(l) <> 0 THEN COLOR , 4
IF vWatchOn = 1 AND IdeSkipLines(l) <> 0 THEN COLOR 14 IF vWatchOn = 1 AND IdeSkipLines(l) <> 0 THEN COLOR 14
@ -13038,7 +13042,7 @@ FUNCTION idewarningbox
FOR x = 1 TO warningListItems FOR x = 1 TO warningListItems
IF warningLines(x) = 0 THEN IF warningLines(x) = 0 THEN
l$ = l$ + warning$(x) l$ = l$ + warning$(x)
IF x > 1 THEN ASC(l$, treeConnection) = 192 IF x > 1 AND treeConnection > 0 THEN ASC(l$, treeConnection) = 192
ELSE ELSE
l3$ = CHR$(16) + CHR$(2) 'dark grey l3$ = CHR$(16) + CHR$(2) 'dark grey
IF warningIncLines(x) > 0 THEN IF warningIncLines(x) > 0 THEN
@ -13052,7 +13056,7 @@ FUNCTION idewarningbox
END IF END IF
treeConnection = LEN(l$) + 1 treeConnection = LEN(l$) + 1
text$ = warning$(x) text$ = warning$(x)
IF LEN(text$) + 10 > dialogWidth THEN dialogWidth = LEN(text$) + 10 IF LEN(l3$ + text$) + 6 > dialogWidth THEN dialogWidth = LEN(l3$ + text$) + 6
IF LEN(text$) THEN IF LEN(text$) THEN
l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$ l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$
ELSE ELSE

View file

@ -825,8 +825,8 @@ DIM SHARED uniquenumbern AS LONG
'CLEAR , , 16384 'CLEAR , , 16384
DIM SHARED bitmask(1 TO 56) AS _INTEGER64 DIM SHARED bitmask(1 TO 64) AS _INTEGER64
DIM SHARED bitmaskinv(1 TO 56) AS _INTEGER64 DIM SHARED bitmaskinv(1 TO 64) AS _INTEGER64
DIM SHARED defineextaz(1 TO 27) AS STRING DIM SHARED defineextaz(1 TO 27) AS STRING
DIM SHARED defineaz(1 TO 27) AS STRING '27 is an underscore DIM SHARED defineaz(1 TO 27) AS STRING '27 is an underscore
@ -903,7 +903,7 @@ DIM SHARED controlref(1000) AS LONG 'the line number the control was created on
ON ERROR GOTO qberror ON ERROR GOTO qberror
i2&& = 1 i2&& = 1
FOR i&& = 1 TO 56 FOR i&& = 1 TO 64
bitmask(i&&) = i2&& bitmask(i&&) = i2&&
bitmaskinv(i&&) = NOT i2&& bitmaskinv(i&&) = NOT i2&&
i2&& = i2&& + 2 ^ i&& i2&& = i2&& + 2 ^ i&&
@ -1683,8 +1683,6 @@ DO
LOOP LOOP
InValidLine(linenumber) = 0 InValidLine(linenumber) = 0
ColorPass:
IF LEN(wholeline$) THEN IF LEN(wholeline$) THEN
IF UCASE$(_TRIM$(wholeline$)) = "$NOPREFIX" THEN IF UCASE$(_TRIM$(wholeline$)) = "$NOPREFIX" THEN
@ -3130,12 +3128,18 @@ DO
IF a3u$ = "$DEBUG" THEN IF a3u$ = "$DEBUG" THEN
layout$ = SCase$("$Debug") layout$ = SCase$("$Debug")
IF NoIDEMode THEN
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "$Debug", "$Debug features only work from the IDE"
END IF
GOTO finishednonexec GOTO finishednonexec
END IF END IF
IF a3u$ = "$CHECKING:OFF" THEN IF a3u$ = "$CHECKING:OFF" THEN
layout$ = SCase$("$Checking:Off") layout$ = SCase$("$Checking:Off")
NoChecks = 1 NoChecks = 1
IF vWatchOn <> 0 AND NoIDEMode = 0 AND inclevel = 0 THEN
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "$Debug", "$Debug features won't work in $Checking:Off blocks"
END IF
GOTO finishednonexec GOTO finishednonexec
END IF END IF
@ -8781,13 +8785,13 @@ DO
IF firstelement$ = "CHAIN" THEN IF firstelement$ = "CHAIN" THEN
IF vWatchOn THEN IF vWatchOn THEN
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $DEBUG MODE", "CHAIN" addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $Debug mode", "CHAIN"
END IF END IF
END IF END IF
IF firstelement$ = "RUN" THEN 'RUN IF firstelement$ = "RUN" THEN 'RUN
IF vWatchOn THEN IF vWatchOn THEN
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $DEBUG MODE", "RUN" addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $Debug mode", "RUN"
END IF END IF
l$ = SCase$("Run") l$ = SCase$("Run")
IF n = 1 THEN IF n = 1 THEN
@ -14814,10 +14818,10 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
IF LEFT$(typ$, 7) <> "_BIT * " AND LEFT$(typ$, 6) <> "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION IF LEFT$(typ$, 7) <> "_BIT * " AND LEFT$(typ$, 6) <> "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION
c$ = MID$(typ$, INSTR(typ$, " * ") + 3) c$ = MID$(typ$, INSTR(typ$, " * ") + 3)
IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION
IF LEN(c$) > 2 THEN Give_Error "Too many characters in number after *": EXIT FUNCTION IF LEN(c$) > 2 THEN Give_Error "Cannot create a bit variable of size > 64 bits": EXIT FUNCTION
bits = VAL(c$) bits = VAL(c$)
IF bits = 0 THEN Give_Error "Cannot create a bit variable of size 0 bits": EXIT FUNCTION IF bits = 0 THEN Give_Error "Cannot create a bit variable of size 0 bits": EXIT FUNCTION
IF bits > 57 THEN Give_Error "Cannot create a bit variable of size > 24 bits": EXIT FUNCTION IF bits > 64 THEN Give_Error "Cannot create a bit variable of size > 64 bits": EXIT FUNCTION
ELSE ELSE
bits = 1 bits = 1
END IF END IF
@ -21468,7 +21472,7 @@ FUNCTION symboltype (s$) 'returns type or 0(not a valid symbol)
IF isuinteger(RIGHT$(s$, l - 1)) THEN IF isuinteger(RIGHT$(s$, l - 1)) THEN
IF l > 3 THEN EXIT FUNCTION IF l > 3 THEN EXIT FUNCTION
n = VAL(RIGHT$(s$, l - 1)) n = VAL(RIGHT$(s$, l - 1))
IF n > 56 THEN EXIT FUNCTION IF n > 64 THEN EXIT FUNCTION
symboltype = n + ISOFFSETINBITS: EXIT FUNCTION symboltype = n + ISOFFSETINBITS: EXIT FUNCTION
END IF END IF
EXIT FUNCTION EXIT FUNCTION
@ -21494,7 +21498,7 @@ FUNCTION symboltype (s$) 'returns type or 0(not a valid symbol)
IF isuinteger(RIGHT$(s$, l - 2)) THEN IF isuinteger(RIGHT$(s$, l - 2)) THEN
IF l > 4 THEN EXIT FUNCTION IF l > 4 THEN EXIT FUNCTION
n = VAL(RIGHT$(s$, l - 2)) n = VAL(RIGHT$(s$, l - 2))
IF n > 56 THEN EXIT FUNCTION IF n > 64 THEN EXIT FUNCTION
symboltype = n + ISOFFSETINBITS + ISUNSIGNED: EXIT FUNCTION symboltype = n + ISOFFSETINBITS + ISUNSIGNED: EXIT FUNCTION
END IF END IF
EXIT FUNCTION EXIT FUNCTION
@ -22468,7 +22472,7 @@ FUNCTION typ2ctyp$ (t AS LONG, tstr AS STRING)
IF n$ <> "" THEN IF n$ <> "" THEN
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
b = VAL(n$) b = VAL(n$)
IF b > 57 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION IF b > 64 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
END IF END IF
IF b <= 32 THEN ctyp$ = "int32" ELSE ctyp$ = "int64" IF b <= 32 THEN ctyp$ = "int32" ELSE ctyp$ = "int64"
IF unsgn THEN ctyp$ = "u" + ctyp$ IF unsgn THEN ctyp$ = "u" + ctyp$
@ -22543,7 +22547,7 @@ FUNCTION type2symbol$ (typ$)
IF isuinteger(t$) = 0 THEN Give_Error e$: EXIT FUNCTION IF isuinteger(t$) = 0 THEN Give_Error e$: EXIT FUNCTION
v = VAL(t$) v = VAL(t$)
IF v = 0 THEN Give_Error e$: EXIT FUNCTION IF v = 0 THEN Give_Error e$: EXIT FUNCTION
IF s$ <> "$" AND v > 56 THEN Give_Error e$: EXIT FUNCTION IF s$ <> "$" AND v > 64 THEN Give_Error e$: EXIT FUNCTION
IF s$ = "$" THEN IF s$ = "$" THEN
s$ = s$ + str2$(v) s$ = s$ + str2$(v)
ELSE ELSE
@ -22593,7 +22597,7 @@ FUNCTION typname2typ& (t2$)
IF n$ <> "" THEN IF n$ <> "" THEN
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
b = VAL(n$) b = VAL(n$)
IF b > 56 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION IF b > 64 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
END IF END IF
IF unsgn THEN typname2typ& = UBITTYPE + (b - 1) ELSE typname2typ& = BITTYPE + (b - 1) IF unsgn THEN typname2typ& = UBITTYPE + (b - 1) ELSE typname2typ& = BITTYPE + (b - 1)
EXIT FUNCTION EXIT FUNCTION
@ -22687,7 +22691,7 @@ FUNCTION typname2typ& (t2$)
n$ = RIGHT$(t$, LEN(t$) - 7) n$ = RIGHT$(t$, LEN(t$) - 7)
IF isuinteger(n$) = 0 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION IF isuinteger(n$) = 0 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
b = VAL(n$) b = VAL(n$)
IF b = 0 OR b > 56 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION IF b = 0 OR b > 64 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
t = BITTYPE - 1 + b: IF u THEN t = t + ISUNSIGNED t = BITTYPE - 1 + b: IF u THEN t = t + ISUNSIGNED
typname2typ& = t typname2typ& = t
EXIT FUNCTION EXIT FUNCTION