summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semtypes.nim11
-rw-r--r--web/news.txt3
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!