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
commit 0e4a8bfb28
3 changed files with 6 additions and 8 deletions

View file

@ -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)

View file

@ -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

View file

@ -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: