diff --git a/compiler/importer.nim b/compiler/importer.nim index 7296f8f070..23814ae50f 100644 --- a/compiler/importer.nim +++ b/compiler/importer.nim @@ -231,7 +231,7 @@ proc importForwarded(c: PContext, n: PNode, exceptSet: IntSet; fromMod: PSym; im for i in 0..n.safeLen-1: importForwarded(c, n[i], exceptSet, fromMod, importSet) -proc importModuleAs(c: PContext; n: PNode, realModule: PSym, importHidden: bool): PSym = +proc importModuleAs(c: PContext; n: PNode, realModule: PSym, importHidden, trackUnusedImport: bool): PSym = result = realModule template createModuleAliasImpl(ident): untyped = createModuleAlias(realModule, c.idgen, ident, n.info, c.config.options) @@ -248,7 +248,8 @@ proc importModuleAs(c: PContext; n: PNode, realModule: PSym, importHidden: bool) result.options.incl optImportHidden let moduleIdent = if n.kind in {nkInfix, nkImportAs}: n[^1] else: n result.info = moduleIdent.info - c.unusedImports.add((result, result.info)) + if trackUnusedImport: + c.unusedImports.add((result, result.info)) c.importModuleMap[result.id] = realModule.id c.importModuleLookup.mgetOrPut(result.name.id, @[]).addUnique realModule.id @@ -289,10 +290,11 @@ proc myImportModule(c: PContext, n: var PNode, importStmtResult: PNode): PSym = toFullPath(c.config, c.graph.importStack[i+1]) c.recursiveDep = err + let trackUnusedImport = warnUnusedImportX in c.config.notes var realModule: PSym discard pushOptionEntry(c) realModule = c.graph.importModuleCallback(c.graph, c.module, f) - result = importModuleAs(c, n, realModule, transf.importHidden) + result = importModuleAs(c, n, realModule, transf.importHidden, trackUnusedImport) popOptionEntry(c) #echo "set back to ", L diff --git a/tests/import/tpushunusedwarning.nim b/tests/import/tpushunusedwarning.nim new file mode 100644 index 0000000000..67a182ef54 --- /dev/null +++ b/tests/import/tpushunusedwarning.nim @@ -0,0 +1,16 @@ +discard """ + action: compile + matrix: "--hints:off" + nimoutFull: true + nimout: ''' +''' +""" + +# issue #24552 + +{.push warning[UnusedImport]: off.} +import tables +{.pop.} + +proc test*(a: float): float = + a