diff options
author | Araq <rumpf_a@web.de> | 2012-07-26 08:47:54 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-07-26 08:47:54 +0200 |
commit | 2ff8d17369eff133292009acd0866aa32d2912d0 (patch) | |
tree | 9f2ae44d6c74f188778f410172edfd9cddd6a27c /compiler | |
parent | 9222a8a0ebe36ae3086d5a385650778b6c4d1e16 (diff) | |
download | Nim-2ff8d17369eff133292009acd0866aa32d2912d0.tar.gz |
added warning for confusing var declarations
Diffstat (limited to 'compiler')
-rwxr-xr-x | compiler/docgen.nim | 4 | ||||
-rwxr-xr-x | compiler/msgs.nim | 7 | ||||
-rwxr-xr-x | compiler/semstmts.nim | 3 | ||||
-rwxr-xr-x | compiler/transf.nim | 11 |
4 files changed, 19 insertions, 6 deletions
diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 629826339..6fe1d03b1 100755 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -284,8 +284,8 @@ proc genSection(d: PDoc, kind: TSymKind) = ord(kind).toRope, title, toRope(ord(kind) + 50), d.toc[kind]]) proc genOutFile(d: PDoc): PRope = - var - code, content: PRope = nil + var + code, content: PRope title = "" var j = 0 var tmp = "" diff --git a/compiler/msgs.nim b/compiler/msgs.nim index 30066d376..de29a4a40 100755 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -103,7 +103,7 @@ type warnUnknownSubstitutionX, warnLanguageXNotSupported, warnCommentXIgnored, warnXisPassedToProcVar, warnAnalysisLoophole, warnDifferentHeaps, warnWriteToForeignHeap, warnImplicitClosure, - warnUser, + warnEachIdentIsTuple, warnUser, hintSuccess, hintSuccessX, hintLineTooLong, hintXDeclaredButNotUsed, hintConvToBaseNotNeeded, hintConvFromXtoItselfNotNeeded, hintExprAlwaysX, hintQuitCalled, @@ -346,6 +346,7 @@ const warnDifferentHeaps: "possible inconsistency of thread local heaps [DifferentHeaps]", warnWriteToForeignHeap: "write to foreign heap [WriteToForeignHeap]", warnImplicitClosure: "implicit closure convention: '$1' [ImplicitClosure]", + warnEachIdentIsTuple: "each identifier is a tuple [EachIdentIsTuple]", warnUser: "$1 [User]", hintSuccess: "operation successful [Success]", hintSuccessX: "operation successful ($# lines compiled; $# sec total; $#) [SuccessX]", @@ -363,14 +364,14 @@ const hintUser: "$1 [User]"] const - WarningsToStr*: array[0..17, string] = ["CannotOpenFile", "OctalEscape", + WarningsToStr*: array[0..18, string] = ["CannotOpenFile", "OctalEscape", "XIsNeverRead", "XmightNotBeenInit", "Deprecated", "ConfigDeprecated", "SmallLshouldNotBeUsed", "UnknownMagic", "RedefinitionOfLabel", "UnknownSubstitutionX", "LanguageXNotSupported", "CommentXIgnored", "XisPassedToProcVar", "AnalysisLoophole", "DifferentHeaps", "WriteToForeignHeap", - "ImplicitClosure,", "User"] + "ImplicitClosure", "EachIdentIsTuple", "User"] HintsToStr*: array[0..13, string] = ["Success", "SuccessX", "LineTooLong", "XDeclaredButNotUsed", "ConvToBaseNotNeeded", "ConvFromXtoItselfNotNeeded", diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index 0c727b1a5..7b1c6d76a 100755 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -270,6 +270,9 @@ proc semVarOrLet(c: PContext, n: PNode, symkind: TSymKind): PNode = b.sons[length-2] = a.sons[length-2] # keep type desc for doc generator b.sons[length-1] = def addSon(result, b) + elif tup.kind == tyTuple and def.kind == nkPar and + a.kind == nkIdentDefs and a.len > 3: + Message(a.info, warnEachIdentIsTuple) for j in countup(0, length-3): var v = semIdentDef(c, a.sons[j], symkind) addInterfaceDecl(c, v) diff --git a/compiler/transf.nim b/compiler/transf.nim index 4e799a11f..284958e77 100755 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -244,7 +244,16 @@ proc transformConstSection(c: PTransf, v: PNode): PTransNode = result[i] = PTransNode(b) else: result[i] = PTransNode(it) - + +proc trivialBody(s: PSym): PNode = + # a routine's body is trivially inlinable if marked as 'inline' and its + # body consists of only 1 statement. It is important that we perform this + # optimization here as 'distinct strings' may cause string copying otherwise: + # proc xml(s: string): TXmlString = return xmlstring(s) + # We have to generate a ``nkLineTracking`` node though to not lose + # debug information: + # XXX to implement + nil proc hasContinue(n: PNode): bool = case n.kind |