From 4137a4dbf386f19b0ce4f5de5b0a8ab05a3b2b8b Mon Sep 17 00:00:00 2001 From: Araq <rumpf_a@web.de> Date: Wed, 17 Jul 2019 22:36:23 +0200 Subject: [feature] detect unused imports --- compiler/suggest.nim | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'compiler/suggest.nim') diff --git a/compiler/suggest.nim b/compiler/suggest.nim index 9e738e8a6..1fd12d750 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -528,7 +528,21 @@ proc userError(conf: ConfigRef; info: TLineInfo; s: PSym) = return localError(conf, info, "usage of '$1' is a user-defined error" % s.name.s) -proc markUsed(conf: ConfigRef; info: TLineInfo; s: PSym; usageSym: var PSym) = +proc markOwnerModuleAsUsed(c: PContext; s: PSym) = + var module = s + while module != nil and module.kind != skModule: + module = module.owner + if module != nil and module != c.module: + var i = 0 + while i <= high(c.unusedImports): + if c.unusedImports[i][0] == module: + # mark it as used: + c.unusedImports.del(i) + else: + inc i + +proc markUsed(c: PContext; info: TLineInfo; s: PSym; usageSym: var PSym) = + let conf = c.config incl(s.flags, sfUsed) if s.kind == skEnumField and s.owner != nil: incl(s.owner.flags, sfUsed) @@ -541,6 +555,7 @@ proc markUsed(conf: ConfigRef; info: TLineInfo; s: PSym; usageSym: var PSym) = suggestSym(conf, info, s, usageSym, false) if {optStyleHint, optStyleError} * conf.globalOptions != {}: styleCheckUse(conf, info, s) + markOwnerModuleAsUsed(c, s) proc safeSemExpr*(c: PContext, n: PNode): PNode = # use only for idetools support! -- cgit 1.4.1-2-gfad0