1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-01 13:50:36 +00:00

Remove previous variables from Watch List if TYPEs change

This commit is contained in:
FellippeHeitor 2021-10-02 03:52:40 -03:00
parent 7c17c987cb
commit 7ab98a5a9e
2 changed files with 23 additions and 8 deletions

View file

@ -510,6 +510,7 @@ FUNCTION ide2 (ignore)
REDIM IdeSkipLines(iden) AS _BYTE REDIM IdeSkipLines(iden) AS _BYTE
variableWatchList$ = "" variableWatchList$ = ""
backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList
backupTypeDefinitions$ = ""
watchpointList$ = "" watchpointList$ = ""
callstacklist$ = "": callStackLength = 0 callstacklist$ = "": callStackLength = 0
ideunsaved = -1 ideunsaved = -1
@ -608,6 +609,7 @@ FUNCTION ide2 (ignore)
REDIM IdeSkipLines(iden) AS _BYTE REDIM IdeSkipLines(iden) AS _BYTE
variableWatchList$ = "" variableWatchList$ = ""
backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList
backupTypeDefinitions$ = ""
watchpointList$ = "" watchpointList$ = ""
callstacklist$ = "": callStackLength = 0 callstacklist$ = "": callStackLength = 0
IF ideStartAtLine > 0 AND ideStartAtLine <= iden THEN IF ideStartAtLine > 0 AND ideStartAtLine <= iden THEN
@ -6019,6 +6021,8 @@ FUNCTION ide2 (ignore)
REDIM IdeBreakpoints(1) AS _BYTE REDIM IdeBreakpoints(1) AS _BYTE
REDIM IdeSkipLines(1) AS _BYTE REDIM IdeSkipLines(1) AS _BYTE
variableWatchList$ = "" variableWatchList$ = ""
backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList
backupTypeDefinitions$ = ""
watchpointList$ = "" watchpointList$ = ""
callstacklist$ = "": callStackLength = 0 callstacklist$ = "": callStackLength = 0
idet$ = MKL$(0) + MKL$(0): idel = 1: ideli = 1: iden = 1: IdeBmkN = 0 idet$ = MKL$(0) + MKL$(0): idel = 1: ideli = 1: iden = 1: IdeBmkN = 0
@ -6920,6 +6924,7 @@ SUB DebugMode
IF result = 2 THEN IF result = 2 THEN
variableWatchList$ = "" variableWatchList$ = ""
backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList
backupTypeDefinitions$ = ""
FOR i = 1 TO totalVariablesCreated FOR i = 1 TO totalVariablesCreated
usedVariableList(i).watch = 0 usedVariableList(i).watch = 0
NEXT NEXT
@ -8684,6 +8689,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
(IdeDebugMode > 0 AND focus = 7 AND info <> 0) THEN (IdeDebugMode > 0 AND focus = 7 AND info <> 0) THEN
variableWatchList$ = "" variableWatchList$ = ""
backupVariableWatchList$ = "" 'used in case this program is edited in the same session backupVariableWatchList$ = "" 'used in case this program is edited in the same session
backupTypeDefinitions$ = typeDefinitions$ 'store current TYPE definitions for later comparison
longestVarName = 0 longestVarName = 0
nextvWatchDataSlot = 0 nextvWatchDataSlot = 0
totalVisibleVariables = 0 totalVisibleVariables = 0
@ -11928,6 +11934,7 @@ FUNCTION idefiledialog$(programname$, mode AS _BYTE)
REDIM IdeSkipLines(iden) AS _BYTE REDIM IdeSkipLines(iden) AS _BYTE
variableWatchList$ = "" variableWatchList$ = ""
backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList backupVariableWatchList$ = "": REDIM backupUsedVariableList(1000) AS usedVarList
backupTypeDefinitions$ = ""
callstacklist$ = "": callStackLength = 0 callstacklist$ = "": callStackLength = 0
ideerror = 1 ideerror = 1

View file

@ -121,6 +121,7 @@ TYPE usedVarList
END TYPE END TYPE
REDIM SHARED backupUsedVariableList(1000) AS usedVarList REDIM SHARED backupUsedVariableList(1000) AS usedVarList
DIM SHARED typeDefinitions$, backupTypeDefinitions$
DIM SHARED totalVariablesCreated AS LONG, totalMainVariablesCreated AS LONG DIM SHARED totalVariablesCreated AS LONG, totalMainVariablesCreated AS LONG
DIM SHARED bypassNextVariable AS _BYTE DIM SHARED bypassNextVariable AS _BYTE
DIM SHARED totalWarnings AS LONG, warningListItems AS LONG, lastWarningHeader AS STRING DIM SHARED totalWarnings AS LONG, warningListItems AS LONG, lastWarningHeader AS STRING
@ -1464,6 +1465,7 @@ SelectCaseCounter = 0
ExecCounter = 0 ExecCounter = 0
UserDefineCount = 7 UserDefineCount = 7
totalVariablesCreated = 0 totalVariablesCreated = 0
typeDefinitions$ = ""
totalMainVariablesCreated = 0 totalMainVariablesCreated = 0
REDIM SHARED usedVariableList(1000) AS usedVarList REDIM SHARED usedVariableList(1000) AS usedVarList
totalWarnings = 0 totalWarnings = 0
@ -1962,9 +1964,9 @@ DO
IF validname(n$) = 0 THEN a$ = "Invalid name": GOTO errmes IF validname(n$) = 0 THEN a$ = "Invalid name": GOTO errmes
udtename(i2) = n$ udtename(i2) = n$
udtecname(i2) = getelement$(ca$, 1) udtecname(i2) = getelement$(ca$, 1)
NormalTypeBlock: NormalTypeBlock:
typeDefinitions$ = typeDefinitions$ + MKL$(i2) + MKL$(LEN(n$)) + n$
udtetype(i2) = typ udtetype(i2) = typ
udtetypesize(i2) = typsize udtetypesize(i2) = typsize
@ -2092,10 +2094,12 @@ DO
IF firstelement$ = "TYPE" THEN IF firstelement$ = "TYPE" THEN
IF n <> 2 THEN a$ = "Expected TYPE typename": GOTO errmes IF n <> 2 THEN a$ = "Expected TYPE typename": GOTO errmes
lasttype = lasttype + 1 lasttype = lasttype + 1
typeDefinitions$ = typeDefinitions$ + MKL$(-1) + MKL$(lasttype)
definingtype = lasttype definingtype = lasttype
i = definingtype i = definingtype
WHILE i > UBOUND(udtenext): increaseUDTArrays: WEND WHILE i > UBOUND(udtenext): increaseUDTArrays: WEND
IF validname(secondelement$) = 0 THEN a$ = "Invalid name": GOTO errmes IF validname(secondelement$) = 0 THEN a$ = "Invalid name": GOTO errmes
typeDefinitions$ = typeDefinitions$ + MKL$(LEN(secondelement$)) + secondelement$
udtxname(i) = secondelement$ udtxname(i) = secondelement$
udtxcname(i) = getelement(ca$, 2) udtxcname(i) = getelement(ca$, 2)
udtxnext(i) = 0 udtxnext(i) = 0
@ -26155,6 +26159,10 @@ SUB manageVariableList (__name$, __cname$, localIndex AS LONG, action AS _BYTE)
'this variable existed in a previous edit of this program 'this variable existed in a previous edit of this program
'in this same session; let's preselect it. 'in this same session; let's preselect it.
j = CVL(MID$(backupVariableWatchList$, found + LEN(temp$), 4)) j = CVL(MID$(backupVariableWatchList$, found + LEN(temp$), 4))
'if there have been changes in TYPEs, this variable won't be preselected
IF (LEN(backupUsedVariableList(j).elements) > 0 AND backupTypeDefinitions$ = typeDefinitions$) OR _
(LEN(backupUsedVariableList(j).elements) = 0) THEN
usedVariableList(i).watch = backupUsedVariableList(j).watch usedVariableList(i).watch = backupUsedVariableList(j).watch
usedVariableList(i).watchRange = backupUsedVariableList(j).watchRange usedVariableList(i).watchRange = backupUsedVariableList(j).watchRange
usedVariableList(i).indexes = backupUsedVariableList(j).indexes usedVariableList(i).indexes = backupUsedVariableList(j).indexes
@ -26162,7 +26170,7 @@ SUB manageVariableList (__name$, __cname$, localIndex AS LONG, action AS _BYTE)
usedVariableList(i).elementTypes = backupUsedVariableList(j).elementTypes usedVariableList(i).elementTypes = backupUsedVariableList(j).elementTypes
usedVariableList(i).elementOffset = backupUsedVariableList(j).elementOffset usedVariableList(i).elementOffset = backupUsedVariableList(j).elementOffset
END IF END IF
END IF
END IF END IF
CASE ELSE 'find and mark as used CASE ELSE 'find and mark as used
IF found THEN IF found THEN