nimpretty: fixes #9504

This commit is contained in:
Araq
2018-10-25 11:18:03 +02:00
parent eb2e494a52
commit 0afca3dd6b
3 changed files with 20 additions and 3 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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