diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-05-28 17:12:44 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-05-28 17:12:51 +0200 |
commit | 0b84ee167b766ef3ecb2ba6374e32725ea1b2794 (patch) | |
tree | 013ff616ec63aaced584a1e7d44d3affacc4b5a9 /compiler | |
parent | b479c947217409027ccb6bbdae738c8637161ff2 (diff) | |
download | Nim-0b84ee167b766ef3ecb2ba6374e32725ea1b2794.tar.gz |
fixes #2159
Hints and warnings are only emitted for the main package that is compiled
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/ast.nim | 3 | ||||
-rw-r--r-- | compiler/modules.nim | 6 | ||||
-rw-r--r-- | compiler/msgs.nim | 4 | ||||
-rw-r--r-- | compiler/sem.nim | 6 |
4 files changed, 18 insertions, 1 deletions
diff --git a/compiler/ast.nim b/compiler/ast.nim index fecbefd7e..acd72479d 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -961,6 +961,9 @@ const skMethod, skConverter} var ggDebug* {.deprecated.}: bool ## convenience switch for trying out things +var + gMainPackageId*: int + gMainPackageNotes*: TNoteKinds proc isCallExpr*(n: PNode): bool = result = n.kind in nkCallKinds diff --git a/compiler/modules.nim b/compiler/modules.nim index ef727e200..8ac964321 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -156,6 +156,9 @@ proc compileModule*(fileIdx: int32, flags: TSymFlags): PSym = #var rd = handleSymbolFile(result) var rd: PRodReader result.flags = result.flags + flags + if sfMainModule in result.flags: + gMainPackageId = result.owner.id + if gCmd in {cmdCompileToC, cmdCompileToCpp, cmdCheck, cmdIdeTools}: rd = handleSymbolFile(result) if result.id < 0: @@ -183,6 +186,9 @@ proc importModule*(s: PSym, fileIdx: int32): PSym {.procvar.} = if optCaasEnabled in gGlobalOptions: addDep(s, fileIdx) if sfSystemModule in result.flags: localError(result.info, errAttemptToRedefine, result.name.s) + # restore the notes for outer module: + gNotes = if s.owner.id == gMainPackageId: gMainPackageNotes + else: ForeignPackageNotes proc includeModule*(s: PSym, fileIdx: int32): PNode {.procvar.} = result = syntaxes.parseFile(fileIdx) diff --git a/compiler/msgs.nim b/compiler/msgs.nim index a556ad0c5..668d43bb3 100644 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -500,12 +500,14 @@ type ESuggestDone* = object of Exception const + ForeignPackageNotes*: TNoteKinds = {hintProcessing, warnUnknownMagic, + hintQuitCalled} NotesVerbosity*: array[0..3, TNoteKinds] = [ {low(TNoteKind)..high(TNoteKind)} - {warnShadowIdent, warnUninit, warnProveField, warnProveIndex, warnGcUnsafe, hintSuccessX, hintPath, hintConf, - hintProcessing, + hintProcessing, hintPattern, hintDependency, hintExecuting, hintLinking, hintCodeBegin, hintCodeEnd, diff --git a/compiler/sem.nim b/compiler/sem.nim index 74fa09a57..a8ec2229f 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -413,6 +413,12 @@ proc myOpen(module: PSym): PPassContext = c.importTable.addSym magicsys.systemModule # import the "System" identifier importAllSymbols(c, magicsys.systemModule) c.topLevelScope = openScope(c) + # don't be verbose unless the module belongs to the main package: + if module.owner.id == gMainPackageId: + gNotes = gMainPackageNotes + else: + if gMainPackageNotes == {}: gMainPackageNotes = gNotes + gNotes = ForeignPackageNotes result = c proc myOpenCached(module: PSym, rd: PRodReader): PPassContext = |