diff --git a/compiler/lineinfos.nim b/compiler/lineinfos.nim index f3aba49b40e0..908c5f5ed851 100644 --- a/compiler/lineinfos.nim +++ b/compiler/lineinfos.nim @@ -33,7 +33,7 @@ type warnFieldXNotSupported, warnCommentXIgnored, warnTypelessParam, warnUseBase, warnWriteToForeignHeap, warnUnsafeCode, - warnEachIdentIsTuple, warnShadowIdent, + warnEachIdentIsTuple, warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2, warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed, warnInconsistentSpacing, warnUser, @@ -79,7 +79,6 @@ const warnWriteToForeignHeap: "write to foreign heap", warnUnsafeCode: "unsafe code: '$1'", warnEachIdentIsTuple: "each identifier is a tuple", - warnShadowIdent: "shadowed identifier: '$1'", warnProveInit: "Cannot prove that '$1' is initialized. This will become a compile time error in the future.", warnProveField: "cannot prove that field '$1' is accessible", warnProveIndex: "cannot prove index '$1' is valid", @@ -132,7 +131,7 @@ const "LanguageXNotSupported", "FieldXNotSupported", "CommentXIgnored", "TypelessParam", "UseBase", "WriteToForeignHeap", - "UnsafeCode", "EachIdentIsTuple", "ShadowIdent", + "UnsafeCode", "EachIdentIsTuple", "ProveInit", "ProveField", "ProveIndex", "GcUnsafe", "GcUnsafe2", "Uninit", "GcMem", "Destructor", "LockLevel", "ResultShadowed", "Spacing", "User"] @@ -167,7 +166,7 @@ type proc computeNotesVerbosity(): array[0..3, TNoteKinds] = result[3] = {low(TNoteKind)..high(TNoteKind)} - {} result[2] = result[3] - {hintStackTrace, warnUninit, hintExtendedContext} - result[1] = result[2] - {warnShadowIdent, warnProveField, warnProveIndex, + result[1] = result[2] - {warnProveField, warnProveIndex, warnGcUnsafe, hintPath, hintDependency, hintCodeBegin, hintCodeEnd, hintSource, hintGlobalVar, hintGCStats} result[0] = result[1] - {hintSuccessX, hintSuccess, hintConf, diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index fe43c0c36270..067b3bc9c5cc 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -524,10 +524,6 @@ proc semVarOrLet(c: PContext, n: PNode, symkind: TSymKind): PNode = shadowed.flags.incl(sfShadowed) if shadowed.kind == skResult and sfGenSym notin v.flags: message(c.config, a.info, warnResultShadowed) - # a shadowed variable is an error unless it appears on the right - # side of the '=': - if warnShadowIdent in c.config.notes and not identWithin(def, v.name): - message(c.config, a.info, warnShadowIdent, v.name.s) if a.kind != nkVarTuple: if def.kind != nkEmpty: if sfThread in v.flags: localError(c.config, def.info, errThreadvarCannotInit) @@ -651,14 +647,6 @@ proc semConst(c: PContext, n: PNode): PNode = include semfields -proc addForVarDecl(c: PContext, v: PSym) = - if warnShadowIdent in c.config.notes: - let shadowed = findShadowedVar(c, v) - if shadowed != nil: - # XXX should we do this here? - #shadowed.flags.incl(sfShadowed) - message(c.config, v.info, warnShadowIdent, v.name.s) - addDecl(c, v) proc symForVar(c: PContext, n: PNode): PSym = let m = if n.kind == nkPragmaExpr: n.sons[0] else: n @@ -693,7 +681,7 @@ proc semForVars(c: PContext, n: PNode; flags: TExprFlags): PNode = else: v.typ = iter.sons[i] n.sons[0][i] = newSymNode(v) - if sfGenSym notin v.flags: addForVarDecl(c, v) + if sfGenSym notin v.flags: addDecl(c, v) elif v.owner == nil: v.owner = getCurrOwner(c) else: var v = symForVar(c, n.sons[0]) @@ -703,7 +691,7 @@ proc semForVars(c: PContext, n: PNode; flags: TExprFlags): PNode = # for an example: v.typ = iterBase n.sons[0] = newSymNode(v) - if sfGenSym notin v.flags: addForVarDecl(c, v) + if sfGenSym notin v.flags: addDecl(c, v) elif v.owner == nil: v.owner = getCurrOwner(c) else: localError(c.config, n.info, errWrongNumberOfVariables) @@ -727,7 +715,7 @@ proc semForVars(c: PContext, n: PNode; flags: TExprFlags): PNode = else: v.typ = iter[i][j] n.sons[i][j] = newSymNode(v) - if not isDiscardUnderscore(v): addForVarDecl(c, v) + if not isDiscardUnderscore(v): addDecl(c, v) elif v.owner == nil: v.owner = getCurrOwner(c) else: var v = symForVar(c, n.sons[i]) @@ -735,7 +723,7 @@ proc semForVars(c: PContext, n: PNode; flags: TExprFlags): PNode = v.typ = iter.sons[i] n.sons[i] = newSymNode(v) if sfGenSym notin v.flags: - if not isDiscardUnderscore(v): addForVarDecl(c, v) + if not isDiscardUnderscore(v): addDecl(c, v) elif v.owner == nil: v.owner = getCurrOwner(c) inc(c.p.nestedLoopCounter) openScope(c) diff --git a/doc/nimc.rst b/doc/nimc.rst index 4ea2337a88c4..d291992ff132 100644 --- a/doc/nimc.rst +++ b/doc/nimc.rst @@ -62,8 +62,6 @@ SmallLshouldNotBeUsed The letter 'l' should not be used as an identifier. EachIdentIsTuple The code contains a confusing ``var`` declaration. -ShadowIdent A local variable shadows another local - variable of an outer scope. User Some user defined warning. ========================== ============================================ diff --git a/tests/ccgbugs/twrong_setconstr.nim b/tests/ccgbugs/twrong_setconstr.nim index f03ffd928aad..8be0b82b5214 100644 --- a/tests/ccgbugs/twrong_setconstr.nim +++ b/tests/ccgbugs/twrong_setconstr.nim @@ -109,7 +109,7 @@ type warnFieldXNotSupported, warnCommentXIgnored, warnNilStatement, warnTypelessParam, warnDifferentHeaps, warnWriteToForeignHeap, warnUnsafeCode, - warnEachIdentIsTuple, warnShadowIdent, + warnEachIdentIsTuple warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2, warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed, warnUser, diff --git a/tests/sets/tsets.nim b/tests/sets/tsets.nim index bde25cf81b6e..e68007d32d8a 100644 --- a/tests/sets/tsets.nim +++ b/tests/sets/tsets.nim @@ -169,7 +169,7 @@ type warnFieldXNotSupported, warnCommentXIgnored, warnNilStatement, warnTypelessParam, warnDifferentHeaps, warnWriteToForeignHeap, warnUnsafeCode, - warnEachIdentIsTuple, warnShadowIdent, + warnEachIdentIsTuple, warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2, warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed, warnUser, @@ -196,8 +196,7 @@ type var gNotes*: TNoteKinds = {low(TNoteKind)..high(TNoteKind)} - - {warnShadowIdent, warnUninit, - warnProveField, warnProveIndex, warnGcUnsafe} + {warnUninit, warnProveField, warnProveIndex, warnGcUnsafe} #import compiler.msgs