diff -r 48b0c2edb0df -r d8379f5d5a1d src/SemanticAnalysis.cpp --- a/src/SemanticAnalysis.cpp Sun Jul 29 18:02:13 2012 -0700 +++ b/src/SemanticAnalysis.cpp Sun Jul 29 18:19:12 2012 -0700 @@ -717,10 +717,14 @@ } Local returnType(zone_); - if (node->hasExplicitReturn() || node->fun()->isNative()) + if (node->returnTag()) { + Local tag(zone_, node->returnTag()); + returnType = zone_->types()->getPrimitiveForTag(tag); + } else if (node->hasExplicitReturn() || node->fun()->isNative()) { returnType = zone_->types()->getPrimitive(PrimitiveType_Int32); - else + } else { returnType = zone_->types()->getVoid(); + } if (!returnType) return false;