mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-07 04:14:19 +00:00
parser change: 'not' is always a unary operator; fixes #9574
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
|
||||
- The `unchecked` pragma was removed, instead use `system.UncheckedArray`.
|
||||
- The undocumented ``#? strongSpaces`` parsing mode has been removed.
|
||||
- The `not` operator is now always a unary operator, this means that code like
|
||||
``assert not isFalse(3)`` compiles.
|
||||
|
||||
|
||||
#### Breaking changes in the standard library
|
||||
|
||||
@@ -966,7 +966,7 @@ proc getPrecedence*(tok: TToken, strongSpaces: bool): int =
|
||||
of '?': result = 2
|
||||
else: considerAsgn(2)
|
||||
of tkDiv, tkMod, tkShl, tkShr: result = 9
|
||||
of tkIn, tkNotin, tkIs, tkIsnot, tkNot, tkOf, tkAs: result = 5
|
||||
of tkIn, tkNotin, tkIs, tkIsnot, tkOf, tkAs: result = 5
|
||||
of tkDotDot: result = 6
|
||||
of tkAnd: result = 4
|
||||
of tkOr, tkXor, tkPtr, tkRef: result = 3
|
||||
|
||||
@@ -514,6 +514,9 @@ are used for other notational purposes.
|
||||
``*:`` is as a special case treated as the two tokens `*`:tok: and `:`:tok:
|
||||
(to support ``var v*: T``).
|
||||
|
||||
The ``not`` keyword is always a unary operator, ``a not b`` is parsed
|
||||
as ``a(not b)``, not as ``(a) not (b)``.
|
||||
|
||||
|
||||
Other tokens
|
||||
------------
|
||||
|
||||
@@ -19,3 +19,8 @@ proc foo[S, T](x: S, y: T): T = x & y
|
||||
proc bar[T](x: T): T = x
|
||||
|
||||
echo "def".foo[:string, string]("abc"), " ", 4.bar[:int]
|
||||
|
||||
# bug #9574
|
||||
proc isFalse(a: int): bool = false
|
||||
|
||||
assert not isFalse(3)
|
||||
|
||||
Reference in New Issue
Block a user