fixes 'unused module' feature for 32 bit builds of Nim for good [nobackport]

This commit is contained in:
Araq
2019-08-09 16:38:10 +02:00
parent da37177ac2
commit 0e4a8bfb28
3 changed files with 6 additions and 8 deletions

View File

@@ -11,7 +11,7 @@
import
intsets, ast, astalgo, msgs, options, idents, lookups,
semdata, modulepaths, sigmatch, lineinfos
semdata, modulepaths, sigmatch, lineinfos, sets
proc readExceptSet*(c: PContext, n: PNode): IntSet =
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 hasPattern(s): addPattern(c, s)
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) =
let ident = lookups.considerQuotedIdent(c, n)

View File

@@ -11,7 +11,7 @@
import
intsets, options, ast, astalgo, msgs, idents, renderer,
magicsys, vmdef, modulegraphs, lineinfos
magicsys, vmdef, modulegraphs, lineinfos, sets
type
TOptionEntry* = object # entries to put on a stack for pragma parsing
@@ -138,9 +138,7 @@ type
# tests/destructor/topttree.nim for an example that
# would otherwise fail.
unusedImports*: seq[(PSym, TLineInfo)]
exportIndirections*: IntSet
template idPairToInt*(a, b: int): int = a * 1_000_000 + b
exportIndirections*: HashSet[(int, int)]
template config*(c: PContext): ConfigRef = c.graph.config

View File

@@ -32,7 +32,7 @@
# 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
when defined(nimsuggest):
@@ -536,7 +536,7 @@ proc markOwnerModuleAsUsed(c: PContext; s: PSym) =
var i = 0
while i <= high(c.unusedImports):
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:
c.unusedImports.del(i)
else: