mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-07 20:20:25 +00:00
Improves detection of used variables; Arrays still to be worked on.
This commit is contained in:
parent
b1ddfd06c7
commit
0724910a2e
|
@ -18555,33 +18555,6 @@ FUNCTION findid& (n2$)
|
||||||
id = ids(i)
|
id = ids(i)
|
||||||
|
|
||||||
t = id.t
|
t = id.t
|
||||||
IF id.subfunc = 0 THEN
|
|
||||||
IF t = 0 THEN
|
|
||||||
t = id.arraytype
|
|
||||||
IF t AND ISUDT THEN
|
|
||||||
manageVariableList "", scope$ + "ARRAY_UDT_" + RTRIM$(id.n), 1
|
|
||||||
ELSE
|
|
||||||
n$ = id2shorttypename$
|
|
||||||
IF LEFT$(n$, 1) = "_" THEN
|
|
||||||
manageVariableList "", scope$ + "ARRAY" + n$ + "_" + RTRIM$(id.n), 2
|
|
||||||
ELSE
|
|
||||||
manageVariableList "", scope$ + "ARRAY_" + n$ + "_" + RTRIM$(id.n), 3
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
ELSE
|
|
||||||
IF t AND ISUDT THEN
|
|
||||||
manageVariableList "", scope$ + "UDT_" + RTRIM$(id.n), 4
|
|
||||||
ELSE
|
|
||||||
n$ = id2shorttypename$
|
|
||||||
IF LEFT$(n$, 1) = "_" THEN
|
|
||||||
'manageVariableList "", scope$ + MID$(n$, 2) + "_" + RTRIM$(id.n), 5
|
|
||||||
ELSE
|
|
||||||
manageVariableList "", scope$ + n$ + "_" + RTRIM$(id.n), 6
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
END IF
|
|
||||||
|
|
||||||
currentid = i
|
currentid = i
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
|
|
||||||
|
@ -20906,6 +20879,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
n$ = "UDT_" + RTRIM$(id.n)
|
n$ = "UDT_" + RTRIM$(id.n)
|
||||||
IF id.t = 0 THEN n$ = "ARRAY_" + n$
|
IF id.t = 0 THEN n$ = "ARRAY_" + n$
|
||||||
n$ = scope$ + n$
|
n$ = scope$ + n$
|
||||||
|
manageVariableList "", n$, 1
|
||||||
refer$ = n$
|
refer$ = n$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
|
@ -20938,6 +20912,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
'print "REFER:"+r$+","+str2$(typ)
|
'print "REFER:"+r$+","+str2$(typ)
|
||||||
|
manageVariableList "", r$, 2
|
||||||
refer$ = r$
|
refer$ = r$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
|
@ -20949,6 +20924,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
n$ = RTRIM$(id.callname)
|
n$ = RTRIM$(id.callname)
|
||||||
IF method = 1 THEN
|
IF method = 1 THEN
|
||||||
refer$ = n$
|
refer$ = n$
|
||||||
|
manageVariableList "", n$, 3
|
||||||
typ = typbak
|
typ = typbak
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
|
@ -20962,6 +20938,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
r$ = "((qbs*)(((uint64*)(" + n$ + "[0]))[" + a$ + "]))"
|
r$ = "((qbs*)(((uint64*)(" + n$ + "[0]))[" + a$ + "]))"
|
||||||
END IF
|
END IF
|
||||||
stringprocessinghappened = 1
|
stringprocessinghappened = 1
|
||||||
|
manageVariableList "", r$, 4
|
||||||
refer$ = r$
|
refer$ = r$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
|
@ -20973,6 +20950,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
r$ = r$ + "(" + str2(typ AND 511) + ","
|
r$ = r$ + "(" + str2(typ AND 511) + ","
|
||||||
r$ = r$ + "(uint8*)(" + n$ + "[0])" + ","
|
r$ = r$ + "(uint8*)(" + n$ + "[0])" + ","
|
||||||
r$ = r$ + a$ + ")"
|
r$ = r$ + a$ + ")"
|
||||||
|
manageVariableList "", r$, 5
|
||||||
refer$ = r$
|
refer$ = r$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -20999,6 +20977,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
END IF
|
END IF
|
||||||
IF t$ = "" THEN Give_Error "Cannot find C type to return array data": EXIT FUNCTION
|
IF t$ = "" THEN Give_Error "Cannot find C type to return array data": EXIT FUNCTION
|
||||||
r$ = "((" + t$ + "*)(" + n$ + "[0]))[" + a$ + "]"
|
r$ = "((" + t$ + "*)(" + n$ + "[0]))[" + a$ + "]"
|
||||||
|
manageVariableList "", r$, 6
|
||||||
refer$ = r$
|
refer$ = r$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF 'array
|
END IF 'array
|
||||||
|
@ -21046,6 +21025,7 @@ FUNCTION refer$ (a2$, typ AS LONG, method AS LONG)
|
||||||
IF LEFT$(r$, 1) = "*" THEN r$ = RIGHT$(r$, LEN(r$) - 1)
|
IF LEFT$(r$, 1) = "*" THEN r$ = RIGHT$(r$, LEN(r$) - 1)
|
||||||
typ = typbak
|
typ = typbak
|
||||||
END IF
|
END IF
|
||||||
|
manageVariableList "", r$, 7
|
||||||
refer$ = r$
|
refer$ = r$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF 'variable
|
END IF 'variable
|
||||||
|
@ -22114,10 +22094,11 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
'we have now established we have 2 pointers to similar data types!
|
'we have now established we have 2 pointers to similar data types!
|
||||||
'ASSUME BYTE TYPE!!!
|
'ASSUME BYTE TYPE!!!
|
||||||
src$ = "((char*)" + scope$ + n2$ + ")+(" + o2$ + ")"
|
src$ = "((char*)" + scope$ + n2$ + ")+(" + o2$ + ")"
|
||||||
|
manageVariableList "", scope$ + n2$, 8
|
||||||
directudt:
|
directudt:
|
||||||
IF u <> u2 OR e2 <> 0 THEN Give_Error "Expected = similar user defined type": EXIT SUB
|
IF u <> u2 OR e2 <> 0 THEN Give_Error "Expected = similar user defined type": EXIT SUB
|
||||||
dst$ = "((char*)" + lhsscope$ + n$ + ")+(" + o$ + ")"
|
dst$ = "((char*)" + lhsscope$ + n$ + ")+(" + o$ + ")"
|
||||||
|
manageVariableList "", lhsscope$ + n$, 9
|
||||||
copy_full_udt dst$, src$, 12, 0, u
|
copy_full_udt dst$, src$, 12, 0, u
|
||||||
|
|
||||||
'print "setFULLUDTrefer!"
|
'print "setFULLUDTrefer!"
|
||||||
|
@ -22154,7 +22135,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
'print "setUDTrefer:"+r$,e$
|
'print "setUDTrefer:"+r$,e$
|
||||||
tlayout$ = tl$
|
tlayout$ = tl$
|
||||||
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
||||||
manageVariableList "", scope$ + n$, 7
|
manageVariableList "", r$, 10
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -22189,7 +22170,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
PRINT #12, cleanupstringprocessingcall$ + "0);"
|
PRINT #12, cleanupstringprocessingcall$ + "0);"
|
||||||
tlayout$ = tl$
|
tlayout$ = tl$
|
||||||
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
||||||
manageVariableList "", r$, 8
|
manageVariableList "", r$, 11
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -22236,6 +22217,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
IF Error_Happened THEN EXIT SUB
|
IF Error_Happened THEN EXIT SUB
|
||||||
ELSE
|
ELSE
|
||||||
l$ = "if (!new_error) ((" + t$ + "*)(" + n$ + "[0]))[tmp_long]=" + e$ + ";"
|
l$ = "if (!new_error) ((" + t$ + "*)(" + n$ + "[0]))[tmp_long]=" + e$ + ";"
|
||||||
|
manageVariableList "", e$, 12
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
PRINT #12, l$
|
PRINT #12, l$
|
||||||
|
@ -22265,7 +22247,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
IF arrayprocessinghappened THEN arrayprocessinghappened = 0
|
IF arrayprocessinghappened THEN arrayprocessinghappened = 0
|
||||||
tlayout$ = tl$
|
tlayout$ = tl$
|
||||||
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
||||||
manageVariableList "", r$, 9
|
manageVariableList "", r$, 13
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -22297,7 +22279,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
IF arrayprocessinghappened THEN arrayprocessinghappened = 0
|
IF arrayprocessinghappened THEN arrayprocessinghappened = 0
|
||||||
tlayout$ = tl$
|
tlayout$ = tl$
|
||||||
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
||||||
manageVariableList "", r$, 10
|
manageVariableList "", r$, 14
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -22326,8 +22308,7 @@ SUB setrefer (a2$, typ2 AS LONG, e2$, method AS LONG)
|
||||||
tlayout$ = tl$
|
tlayout$ = tl$
|
||||||
|
|
||||||
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
IF LEFT$(r$, 1) = "*" THEN r$ = MID$(r$, 2)
|
||||||
manageVariableList "", r$, 11
|
manageVariableList "", r$, 15
|
||||||
|
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF 'variable
|
END IF 'variable
|
||||||
|
|
||||||
|
@ -25878,8 +25859,9 @@ SUB dump_udts
|
||||||
CLOSE #f
|
CLOSE #f
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
SUB manageVariableList (name$, __cname$, action AS _BYTE)
|
SUB manageVariableList (__name$, __cname$, action AS _BYTE)
|
||||||
DIM findItem AS LONG, cname$, i AS LONG
|
DIM findItem AS LONG, cname$, i AS LONG, name$
|
||||||
|
name$ = __name$
|
||||||
cname$ = __cname$
|
cname$ = __cname$
|
||||||
|
|
||||||
IF LEN(cname$) = 0 THEN EXIT SUB
|
IF LEN(cname$) = 0 THEN EXIT SUB
|
||||||
|
@ -25914,6 +25896,7 @@ SUB manageVariableList (name$, __cname$, action AS _BYTE)
|
||||||
END IF
|
END IF
|
||||||
usedVariableList(i).scope = subfuncn
|
usedVariableList(i).scope = subfuncn
|
||||||
usedVariableList(i).cname = cname$
|
usedVariableList(i).cname = cname$
|
||||||
|
IF LEN(RTRIM$(id.musthave)) > 0 THEN name$ = name$ + RTRIM$(id.musthave)
|
||||||
usedVariableList(i).name = name$
|
usedVariableList(i).name = name$
|
||||||
totalVariablesCreated = totalVariablesCreated + 1
|
totalVariablesCreated = totalVariablesCreated + 1
|
||||||
END IF
|
END IF
|
||||||
|
|
Loading…
Reference in a new issue