mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-03 03:32:32 +00:00
fixes 'unused module' feature for 32 bit builds of Nim for good [nobackport]
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user