diff -r 48b0c2edb0df -r d8379f5d5a1d src/Parser.cpp --- a/src/Parser.cpp Sun Jul 29 18:02:13 2012 -0700 +++ b/src/Parser.cpp Sun Jul 29 18:19:12 2012 -0700 @@ -922,6 +922,10 @@ Statement * Parser::function(TokenKind token) { + Local returnTag(zone_); + if (matchName(returnTag.ref(), TOK_LABEL) && !returnTag) + return NULL; + Local name(zone_, expectName()); if (!name) return NULL; @@ -1039,7 +1043,8 @@ } scope_ = scope_->enclosing(); - return new (pool_) FunctionStatement(pos, scope, fun, body, parameters, encounteredReturn_); + return new (pool_) FunctionStatement(pos, scope, fun, body, parameters, returnTag, + encounteredReturn_); } ParseTree *