diff options
-rw-r--r-- | compiler/semtypes.nim | 11 | ||||
-rw-r--r-- | web/news.txt | 3 |
2 files changed, 13 insertions, 1 deletions
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 13cf44426..658b3507f 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -182,7 +182,16 @@ proc semArray(c: PContext, n: PNode, prev: PType): PType = if sonsLen(n) == 3: # 3 = length(array indx base) if isRange(n[1]): indx = semRangeAux(c, n[1], nil) - else: indx = semTypeNode(c, n.sons[1], nil) + else: + let e = semExprWithType(c, n.sons[1], {efDetermineType}) + if e.kind in {nkIntLit..nkUInt64Lit}: + indx = newTypeS(tyRange, c) + indx.n = newNodeI(nkRange, n.info) + addSon(indx.n, newIntTypeNode(e.kind, 0, e.typ)) + addSon(indx.n, newIntTypeNode(e.kind, e.intVal-1, e.typ)) + addSonSkipIntLit(indx, e.typ) + else: + indx = e.typ.skipTypes({tyTypeDesc}) addSonSkipIntLit(result, indx) if indx.kind == tyGenericInst: indx = lastSon(indx) if indx.kind != tyGenericParam: diff --git a/web/news.txt b/web/news.txt index 0b707678e..5d79d8271 100644 --- a/web/news.txt +++ b/web/news.txt @@ -26,6 +26,9 @@ Compiler Additions Language Additions ------------------ +- Arrays can now be declared with a single integer literal ``N`` instead of a + range; the range is then ``0..N-1``. + 2013-05-20 New website design! |