diff options
-rw-r--r-- | compiler/layouter.nim | 13 | ||||
-rw-r--r-- | nimpretty/tests/exhaustive.nim | 5 | ||||
-rw-r--r-- | nimpretty/tests/expected/exhaustive.nim | 5 |
3 files changed, 20 insertions, 3 deletions
diff --git a/compiler/layouter.nim b/compiler/layouter.nim index b4321463c..9f9b6fc8e 100644 --- a/compiler/layouter.nim +++ b/compiler/layouter.nim @@ -28,7 +28,7 @@ type config: ConfigRef fid: FileIndex lastTok: TTokType - inquote: bool + inquote, lastTokWasTerse: bool semicolons: SemicolonKind col, lastLineNumber, lineSpan, indentLevel, indWidth: int keepIndents*: int @@ -192,12 +192,13 @@ proc emitTok*(em: var Emitter; L: TLexer; tok: TToken) = wr(" ") em.fixedUntil = em.content.high + var lastTokWasTerse = false case tok.tokType of tokKeywordLow..tokKeywordHigh: if endsInAlpha(em): wr(" ") elif not em.inquote and not endsInWhite(em) and - em.lastTok notin openPars: + em.lastTok notin openPars and not em.lastTokWasTerse: #and tok.tokType in oprSet wr(" ") @@ -233,7 +234,10 @@ proc emitTok*(em: var Emitter; L: TLexer; tok: TToken) = tkBracketDotRi, tkCurlyDotRi, tkParDotRi, - tkColonColon, tkDot: + tkColonColon: + wr(TokTypeToStr[tok.tokType]) + of tkDot: + lastTokWasTerse = true wr(TokTypeToStr[tok.tokType]) of tkEquals: if not em.inquote and not em.endsInWhite: wr(" ") @@ -241,6 +245,8 @@ proc emitTok*(em: var Emitter; L: TLexer; tok: TToken) = if not em.inquote: wr(" ") of tkOpr, tkDotDot: if tok.strongSpaceA == 0 and tok.strongSpaceB == 0: + # bug #9504: remember to not spacify a keyword: + lastTokWasTerse = true # if not surrounded by whitespace, don't produce any whitespace either: wr(tok.ident.s) else: @@ -274,6 +280,7 @@ proc emitTok*(em: var Emitter; L: TLexer; tok: TToken) = wr lit em.lastTok = tok.tokType + em.lastTokWasTerse = lastTokWasTerse em.lastLineNumber = tok.line + em.lineSpan em.lineSpan = 0 diff --git a/nimpretty/tests/exhaustive.nim b/nimpretty/tests/exhaustive.nim index ab58b7da4..c02f69668 100644 --- a/nimpretty/tests/exhaustive.nim +++ b/nimpretty/tests/exhaustive.nim @@ -329,3 +329,8 @@ proc getKeyAndData(cursor: int, op: int): #!nimpretty on const test = r"C:\Users\-\Desktop\test.txt" + +proc abcdef*[T:not (tuple|object|string|cstring|char|ref|ptr|array|seq|distinct)]() = + # bug #9504 + type T2 = a.type + discard diff --git a/nimpretty/tests/expected/exhaustive.nim b/nimpretty/tests/expected/exhaustive.nim index b114e9b8c..03c4eb929 100644 --- a/nimpretty/tests/expected/exhaustive.nim +++ b/nimpretty/tests/expected/exhaustive.nim @@ -338,3 +338,8 @@ proc getKeyAndData(cursor: int; op: int): #!nimpretty on const test = r"C:\Users\-\Desktop\test.txt" + +proc abcdef*[T: not (tuple|object|string|cstring|char|ref|ptr|array|seq|distinct)]() = + # bug #9504 + type T2 = a.type + discard |