summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2012-10-12 18:40:24 +0200
committerAraq <rumpf_a@web.de>2012-10-12 18:40:24 +0200
commit8cadc60e08d3664ee28615e4cb80bd3fea968dc7 (patch)
tree36ac77135c8c7f1ddb7ad9860043619d4cc34e93
parent9bbf56bdbbaeac269a94ece1dbd611e1eb57dda8 (diff)
downloadNim-8cadc60e08d3664ee28615e4cb80bd3fea968dc7.tar.gz
bugfix: fixed broken expr proc bodies
-rwxr-xr-xcompiler/semstmts.nim8
-rwxr-xr-xtodo.txt1
2 files changed, 6 insertions, 3 deletions
diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim
index 0a2275229..5c0060e20 100755
--- a/compiler/semstmts.nim
+++ b/compiler/semstmts.nim
@@ -903,9 +903,9 @@ proc semStaticStmt(c: PContext, n: PNode): PNode =
     result.sons[0] = emptyNode
 
 # special marker values that indicates that we are
-# 1) AnalyzingDestructor: currenlty analyzing the type for destructor 
+# 1) AnalyzingDestructor: currently analyzing the type for destructor 
 # generation (needed for recursive types)
-# 2) DestructorIsTrivial: completed the anlysis before and determined
+# 2) DestructorIsTrivial: completed the analysis before and determined
 # that the type has a trivial destructor
 var AnalyzingDestructor, DestructorIsTrivial: PSym
 new(AnalyzingDestructor)
@@ -1131,6 +1131,10 @@ proc semStmtList(c: PContext, n: PNode): PNode =
           of nkPragma, nkCommentStmt, nkNilLit, nkEmpty: nil
           else: localError(n.sons[j].info, errStmtInvalidAfterReturn)
       else: nil
+  
+  # a statement list (s; e) has the type 'e':
+  if result.kind == nkStmtList and result.len > 0:
+    result.typ = lastSon(result).typ
 
 proc SemStmt(c: PContext, n: PNode): PNode = 
   # now: simply an alias:
diff --git a/todo.txt b/todo.txt
index b5afff4f9..d61dddf25 100755
--- a/todo.txt
+++ b/todo.txt
@@ -6,7 +6,6 @@ version 0.9.2
 - implement the compiler as a service
 - implement for loop transformation for first class iterators
 - ``=`` should be overloadable; requires specialization for ``=``
-- fix broken expr/stmt handling for proc bodies
 - make 'bind' default for templates and introduce 'mixin'
 - implicit deref for parameter matching; overloading based on 'var T'
 - optimize genericAssign in the code generator