fixes a small bug concerning semicolons for top level statements

This commit is contained in:
Araq
2014-12-23 23:08:37 +01:00
parent ea4160b23f
commit 59e279ba9c
2 changed files with 10 additions and 4 deletions

View File

@@ -1980,15 +1980,17 @@ proc parseTopLevelStmt(p: var TParser): PNode =
## top-level statement or emptyNode if end of stream.
result = ast.emptyNode
while true:
if p.tok.indent != 0:
if p.tok.indent != 0:
if p.firstTok and p.tok.indent < 0: discard
else: parMessage(p, errInvalidIndentation)
elif p.tok.tokType != tkSemiColon:
parMessage(p, errInvalidIndentation)
p.firstTok = false
case p.tok.tokType
of tkSemiColon:
getTok(p)
if p.tok.indent <= 0: discard
else: parMessage(p, errInvalidIndentation)
p.firstTok = true
of tkEof: break
else:
result = complexOrSimpleStmt(p)

View File

@@ -1,11 +1,15 @@
discard """
output: "true"
output: '''holla
true'''
"""
# Test top level semicolon works properly:
import os; echo "holla"
# Test the new predence rules
proc `\+` (x, y: int): int = result = x + y
proc `\*` (x, y: int): int = result = x * y
echo 5 \+ 1 \* 9 == 14
echo 5 \+ 1 \* 9 == 6*9