fixes 'unused module' feature for 32 bit builds of Nim for good [nobackport]
This commit is contained in:
parent
da37177ac2
commit
0e4a8bfb28
3 changed files with 6 additions and 8 deletions
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
import
|
import
|
||||||
intsets, ast, astalgo, msgs, options, idents, lookups,
|
intsets, ast, astalgo, msgs, options, idents, lookups,
|
||||||
semdata, modulepaths, sigmatch, lineinfos
|
semdata, modulepaths, sigmatch, lineinfos, sets
|
||||||
|
|
||||||
proc readExceptSet*(c: PContext, n: PNode): IntSet =
|
proc readExceptSet*(c: PContext, n: PNode): IntSet =
|
||||||
assert n.kind in {nkImportExceptStmt, nkExportExceptStmt}
|
assert n.kind in {nkImportExceptStmt, nkExportExceptStmt}
|
||||||
|
|
@ -70,7 +70,7 @@ proc rawImportSymbol(c: PContext, s, origin: PSym) =
|
||||||
if s.kind == skConverter: addConverter(c, s)
|
if s.kind == skConverter: addConverter(c, s)
|
||||||
if hasPattern(s): addPattern(c, s)
|
if hasPattern(s): addPattern(c, s)
|
||||||
if s.owner != origin:
|
if s.owner != origin:
|
||||||
c.exportIndirections.incl(idPairToInt(origin.id, s.id))
|
c.exportIndirections.incl((origin.id, s.id))
|
||||||
|
|
||||||
proc importSymbol(c: PContext, n: PNode, fromMod: PSym) =
|
proc importSymbol(c: PContext, n: PNode, fromMod: PSym) =
|
||||||
let ident = lookups.considerQuotedIdent(c, n)
|
let ident = lookups.considerQuotedIdent(c, n)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
import
|
import
|
||||||
intsets, options, ast, astalgo, msgs, idents, renderer,
|
intsets, options, ast, astalgo, msgs, idents, renderer,
|
||||||
magicsys, vmdef, modulegraphs, lineinfos
|
magicsys, vmdef, modulegraphs, lineinfos, sets
|
||||||
|
|
||||||
type
|
type
|
||||||
TOptionEntry* = object # entries to put on a stack for pragma parsing
|
TOptionEntry* = object # entries to put on a stack for pragma parsing
|
||||||
|
|
@ -138,9 +138,7 @@ type
|
||||||
# tests/destructor/topttree.nim for an example that
|
# tests/destructor/topttree.nim for an example that
|
||||||
# would otherwise fail.
|
# would otherwise fail.
|
||||||
unusedImports*: seq[(PSym, TLineInfo)]
|
unusedImports*: seq[(PSym, TLineInfo)]
|
||||||
exportIndirections*: IntSet
|
exportIndirections*: HashSet[(int, int)]
|
||||||
|
|
||||||
template idPairToInt*(a, b: int): int = a * 1_000_000 + b
|
|
||||||
|
|
||||||
template config*(c: PContext): ConfigRef = c.graph.config
|
template config*(c: PContext): ConfigRef = c.graph.config
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
# included from sigmatch.nim
|
# included from sigmatch.nim
|
||||||
|
|
||||||
import algorithm, prefixmatches, lineinfos, parseutils, linter
|
import algorithm, sets, prefixmatches, lineinfos, parseutils, linter
|
||||||
from wordrecg import wDeprecated, wError, wAddr, wYield, specialWords
|
from wordrecg import wDeprecated, wError, wAddr, wYield, specialWords
|
||||||
|
|
||||||
when defined(nimsuggest):
|
when defined(nimsuggest):
|
||||||
|
|
@ -536,7 +536,7 @@ proc markOwnerModuleAsUsed(c: PContext; s: PSym) =
|
||||||
var i = 0
|
var i = 0
|
||||||
while i <= high(c.unusedImports):
|
while i <= high(c.unusedImports):
|
||||||
let candidate = c.unusedImports[i][0]
|
let candidate = c.unusedImports[i][0]
|
||||||
if candidate == module or c.exportIndirections.contains(idPairToInt(candidate.id, s.id)):
|
if candidate == module or c.exportIndirections.contains((candidate.id, s.id)):
|
||||||
# mark it as used:
|
# mark it as used:
|
||||||
c.unusedImports.del(i)
|
c.unusedImports.del(i)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue