diff options
-rw-r--r-- | compiler/layouter.nim | 6 | ||||
-rw-r--r-- | nimpretty/tests/exhaustive.nim | 15 | ||||
-rw-r--r-- | nimpretty/tests/expected/exhaustive.nim | 15 |
3 files changed, 33 insertions, 3 deletions
diff --git a/compiler/layouter.nim b/compiler/layouter.nim index 3ac907f1d..057bad5ba 100644 --- a/compiler/layouter.nim +++ b/compiler/layouter.nim @@ -346,7 +346,7 @@ proc emitTok*(em: var Emitter; L: TLexer; tok: TToken) = if endsInAlpha(em): wrSpace em elif not em.inquote and not endsInWhite(em) and - em.lastTok notin openPars and not em.lastTokWasTerse: + em.lastTok notin (openPars+{tkOpr, tkDotDot}) and not em.lastTokWasTerse: #and tok.tokType in oprSet wrSpace em @@ -392,8 +392,8 @@ proc emitTok*(em: var Emitter; L: TLexer; tok: TToken) = wr(em, TokTypeToStr[tok.tokType], ltOther) if not em.inquote: wrSpace(em) of tkOpr, tkDotDot: - if ((tok.strongSpaceA == 0 and tok.strongSpaceB == 0) or em.inquote) and - tok.ident.s notin ["<", ">", "<=", ">=", "==", "!="]: + if em.inquote or ((tok.strongSpaceA == 0 and tok.strongSpaceB == 0) and + tok.ident.s notin ["<", ">", "<=", ">=", "==", "!="]): # bug #9504: remember to not spacify a keyword: lastTokWasTerse = true # if not surrounded by whitespace, don't produce any whitespace either: diff --git a/nimpretty/tests/exhaustive.nim b/nimpretty/tests/exhaustive.nim index e8458d123..8280420c5 100644 --- a/nimpretty/tests/exhaustive.nim +++ b/nimpretty/tests/exhaustive.nim @@ -417,3 +417,18 @@ proc isValid1*[A](s: HashSet[A]): bool {.deprecated: ## <#initHashSet,int>`_ or `init proc <#init,HashSet[A],int>`_). result = s.data.len > 0 # bug #11468 + +assert $type(a) == "Option[system.int]" +foo(a, $type(b), c) +foo(type(b), c) # this is ok + +proc `<`*[A](s, t: A): bool = discard +proc `==`*[A](s, t: HashSet[A]): bool = discard +proc `<=`*[A](s, t: HashSet[A]): bool = discard + +# these are ok: +proc `$`*[A](s: HashSet[A]): string = discard +proc `*`*[A](s1, s2: HashSet[A]): HashSet[A] {.inline.} = discard +proc `-+-`*[A](s1, s2: HashSet[A]): HashSet[A] {.inline.} = discard + +# bug #11470 diff --git a/nimpretty/tests/expected/exhaustive.nim b/nimpretty/tests/expected/exhaustive.nim index 6089c34c6..4e90faa25 100644 --- a/nimpretty/tests/expected/exhaustive.nim +++ b/nimpretty/tests/expected/exhaustive.nim @@ -427,3 +427,18 @@ proc isValid1*[A](s: HashSet[A]): bool {.deprecated: ## <#initHashSet,int>`_ or `init proc <#init,HashSet[A],int>`_). result = s.data.len > 0 # bug #11468 + +assert $type(a) == "Option[system.int]" +foo(a, $type(b), c) +foo(type(b), c) # this is ok + +proc `<`*[A](s, t: A): bool = discard +proc `==`*[A](s, t: HashSet[A]): bool = discard +proc `<=`*[A](s, t: HashSet[A]): bool = discard + +# these are ok: +proc `$`*[A](s: HashSet[A]): string = discard +proc `*`*[A](s1, s2: HashSet[A]): HashSet[A] {.inline.} = discard +proc `-+-`*[A](s1, s2: HashSet[A]): HashSet[A] {.inline.} = discard + +# bug #11470 |