Merge branch 'devel' of github.com:Araq/Nimrod into devel

This commit is contained in:
Dominik Picheta
2014-04-07 20:31:59 +01:00
4 changed files with 39 additions and 3 deletions

View File

@@ -225,8 +225,16 @@ proc semArray(c: PContext, n: PNode, prev: PType): PType =
# properly filled-out in semtypinst (see how tyStaticExpr
# is handled there).
indx = makeRangeWithStaticExpr(c, e)
else:
elif e.kind == nkIdent:
indx = e.typ.skipTypes({tyTypeDesc})
else:
let x = semConstExpr(c, e)
if x.kind in {nkIntLit..nkUInt64Lit}:
indx = makeRangeType(c, 0, x.intVal-1, n.info,
x.typ.skipTypes({tyTypeDesc}))
else:
indx = x.typ.skipTypes({tyTypeDesc})
#localError(n[1].info, errConstExprExpected)
addSonSkipIntLit(result, indx)
if indx.kind == tyGenericInst: indx = lastSon(indx)
if indx.kind notin {tyGenericParam, tyStatic, tyFromExpr}:

View File

@@ -1501,7 +1501,7 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) =
else:
localError(n.info, errGenerated, "VM is not allowed to 'cast'")
else:
internalError n.info, "too implement " & $n.kind
internalError n.info, "cannot generate VM code for " & n.renderTree
proc removeLastEof(c: PCtx) =
let last = c.code.len-1

View File

@@ -0,0 +1,23 @@
discard """
output: '''7
8 8'''
"""
#bug 1063
const
KeyMax = 227
myconst = int((KeyMax + 31) / 32)
type
FU = array[int((KeyMax + 31) / 32), cuint]
echo FU.high
type
PKeyboard* = ptr object
TKeyboardState* = object
display*: pointer
internal: array[int((KeyMax + 31)/32), cuint]
echo myconst, " ", int((KeyMax + 31) / 32)

View File

@@ -30,7 +30,7 @@ kqueue has not been implemented yet but will be in the future.
The Asynchronous IO API provides both
a callback interface and an interface which allows you to write code as you
would if you were writing synchronous code. The latter is done through
the use of an ``await`` keyword which behaves similar to C#'s await. The
the use of an ``await`` macro which behaves similar to C#'s await. The
following is a very simple chat server demonstrating Nimrod's new async
capabilities.
@@ -59,6 +59,11 @@ capabilities.
serve()
runForever()
Note that this feature has been implemented with Nimrod's macro system and so
``await`` and ``async`` are no keywords.
Library Additions
-----------------