1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-02 22:21:21 +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"
END IF
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"
value$ = _MK$(_BYTE, VAL(value$))
varSize& = LEN(dummy%%)
@ -7641,14 +7645,14 @@ SUB DebugMode
IF INSTR(tempVarType$, "BIT *") THEN
IF VAL(MID$(tempVarType$, _INSTRREV(tempVarType$, " ") + 1)) > 32 THEN
tempVarType$ = "_INTEGER64"
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED _INTEGER64"
IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED _INTEGER64"
ELSE
tempVarType$ = "LONG"
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
END IF
ELSEIF INSTR("@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@", "@" + tempVarType$ + "@") THEN
tempVarType$ = "LONG"
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
END IF
SELECT CASE tempVarType$
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE": varSize& = LEN(dummy%%)
@ -7941,7 +7945,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
COLOR 0, 7
LOCATE p.y + 4, p.x + 2
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 + p.h - 1), CHR$(193)
END IF
@ -8361,10 +8365,10 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
IF mCLICK AND focus = 2 THEN 'list click
IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN
IF mX < p.x + doubleClickThreshold OR IdeDebugMode = 0 THEN
GOTO toggleWatch
ELSE
IF doubleClickThreshold > 0 AND mX >= p.x + doubleClickThreshold AND IdeDebugMode > 0 THEN
GOTO sendValue
ELSE
GOTO toggleWatch
END IF
END IF
lastClick! = TIMER
@ -12223,9 +12227,9 @@ SUB ideshowtext
IF ShowLineNumbers THEN
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
searchStringFoundOn = 0
IF searchStringFoundOn > 0 AND searchStringFoundOn = l THEN searchStringFoundOn = 0
END IF
IF vWatchOn = 1 AND IdeBreakpoints(l) <> 0 THEN COLOR , 4
IF vWatchOn = 1 AND IdeSkipLines(l) <> 0 THEN COLOR 14
@ -13038,7 +13042,7 @@ FUNCTION idewarningbox
FOR x = 1 TO warningListItems
IF warningLines(x) = 0 THEN
l$ = l$ + warning$(x)
IF x > 1 THEN ASC(l$, treeConnection) = 192
IF x > 1 AND treeConnection > 0 THEN ASC(l$, treeConnection) = 192
ELSE
l3$ = CHR$(16) + CHR$(2) 'dark grey
IF warningIncLines(x) > 0 THEN
@ -13052,7 +13056,7 @@ FUNCTION idewarningbox
END IF
treeConnection = LEN(l$) + 1
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
l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$
ELSE

View file

@ -825,8 +825,8 @@ DIM SHARED uniquenumbern AS LONG
'CLEAR , , 16384
DIM SHARED bitmask(1 TO 56) AS _INTEGER64
DIM SHARED bitmaskinv(1 TO 56) AS _INTEGER64
DIM SHARED bitmask(1 TO 64) AS _INTEGER64
DIM SHARED bitmaskinv(1 TO 64) AS _INTEGER64
DIM SHARED defineextaz(1 TO 27) AS STRING
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
i2&& = 1
FOR i&& = 1 TO 56
FOR i&& = 1 TO 64
bitmask(i&&) = i2&&
bitmaskinv(i&&) = NOT i2&&
i2&& = i2&& + 2 ^ i&&
@ -1683,8 +1683,6 @@ DO
LOOP
InValidLine(linenumber) = 0
ColorPass:
IF LEN(wholeline$) THEN
IF UCASE$(_TRIM$(wholeline$)) = "$NOPREFIX" THEN
@ -3130,12 +3128,18 @@ DO
IF a3u$ = "$DEBUG" THEN
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
END IF
IF a3u$ = "$CHECKING:OFF" THEN
layout$ = SCase$("$Checking:Off")
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
END IF
@ -8781,13 +8785,13 @@ DO
IF firstelement$ = "CHAIN" 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
IF firstelement$ = "RUN" THEN 'RUN
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
l$ = SCase$("Run")
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
c$ = MID$(typ$, INSTR(typ$, " * ") + 3)
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$)
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
bits = 1
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 l > 3 THEN EXIT FUNCTION
n = VAL(RIGHT$(s$, l - 1))
IF n > 56 THEN EXIT FUNCTION
IF n > 64 THEN EXIT FUNCTION
symboltype = n + ISOFFSETINBITS: EXIT FUNCTION
END IF
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 l > 4 THEN EXIT FUNCTION
n = VAL(RIGHT$(s$, l - 2))
IF n > 56 THEN EXIT FUNCTION
IF n > 64 THEN EXIT FUNCTION
symboltype = n + ISOFFSETINBITS + ISUNSIGNED: EXIT FUNCTION
END IF
EXIT FUNCTION
@ -22468,7 +22472,7 @@ FUNCTION typ2ctyp$ (t AS LONG, tstr AS STRING)
IF n$ <> "" THEN
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
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
IF b <= 32 THEN ctyp$ = "int32" ELSE ctyp$ = "int64"
IF unsgn THEN ctyp$ = "u" + ctyp$
@ -22543,7 +22547,7 @@ FUNCTION type2symbol$ (typ$)
IF isuinteger(t$) = 0 THEN Give_Error e$: EXIT FUNCTION
v = VAL(t$)
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
s$ = s$ + str2$(v)
ELSE
@ -22593,7 +22597,7 @@ FUNCTION typname2typ& (t2$)
IF n$ <> "" THEN
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
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
IF unsgn THEN typname2typ& = UBITTYPE + (b - 1) ELSE typname2typ& = BITTYPE + (b - 1)
EXIT FUNCTION
@ -22687,7 +22691,7 @@ FUNCTION typname2typ& (t2$)
n$ = RIGHT$(t$, LEN(t$) - 7)
IF isuinteger(n$) = 0 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
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
typname2typ& = t
EXIT FUNCTION