Index: lib/Parse/ParseExprCXX.cpp
===================================================================
--- lib/Parse/ParseExprCXX.cpp	(revision 162690)
+++ lib/Parse/ParseExprCXX.cpp	(working copy)
@@ -801,6 +801,8 @@
     if (Tok.is(tok::arrow)) {
       SourceRange Range;
       TrailingReturnType = ParseTrailingReturnType(Range);
+      if (TrailingReturnType.isInvalid())
+        return ExprError();
       if (Range.getEnd().isValid())
         DeclEndLoc = Range.getEnd();
     }
@@ -847,6 +849,8 @@
     if (Tok.is(tok::arrow)) {
       SourceRange Range;
       TrailingReturnType = ParseTrailingReturnType(Range);
+      if (TrailingReturnType.isInvalid())
+        return ExprError();
       if (Range.getEnd().isValid())
         DeclEndLoc = Range.getEnd();      
     }
Index: test/Parser/cxx0x-lambda-expressions.cpp
===================================================================
--- test/Parser/cxx0x-lambda-expressions.cpp	(revision 162690)
+++ test/Parser/cxx0x-lambda-expressions.cpp	(working copy)
@@ -26,6 +26,7 @@
 
     [] -> int { return 0; }; // expected-error{{lambda requires '()' before return type}}
     [] mutable -> int { return 0; }; // expected-error{{lambda requires '()' before 'mutable'}}
+    [](int) -> {}; // expected-error {{expected a type}}
     return 1;
   }
 
