diff --git a/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.Expressions.cs b/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.Expressions.cs
index 07d56c3a8a..b677dd15ad 100644
--- a/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.Expressions.cs
+++ b/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.Expressions.cs
@@ -9,7 +9,7 @@ namespace Microsoft.AspNet.Razor.Parser
{
private void SetUpExpressions()
{
- MapKeywords(AwaitExpression, CSharpKeyword.Await);
+ MapExpressionKeyword(AwaitExpression, CSharpKeyword.Await);
}
private void AwaitExpression(bool topLevel)
@@ -23,11 +23,6 @@ namespace Microsoft.AspNet.Razor.Parser
// Accept 1 or more spaces between the await and the following code.
AcceptWhile(IsSpacingToken(includeNewLines: false, includeComments: true));
- // Accept a single code piece to await. This will accept up until a method "call" signature.
- // Ex: "@await |Foo|()" Inbetween the pipes is what is accepted. The Statement/ImplicitExpression
- // handling capture method calls and the parameters passed in.
- AcceptWhile(CSharpSymbolType.Identifier);
-
// Top level basically indicates if we're within an expression or statement.
// Ex: topLevel true = @await Foo() | topLevel false = @{ await Foo(); }
// Note that in this case @{ @await Foo() } top level is true for await.
diff --git a/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.cs b/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.cs
index d17d0ffb93..c1684adfb5 100644
--- a/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.cs
+++ b/src/Microsoft.AspNet.Razor/Parser/CSharpCodeParser.cs
@@ -19,7 +19,6 @@ namespace Microsoft.AspNet.Razor.Parser
internal static ISet DefaultKeywords = new HashSet()
{
- "await",
"if",
"do",
"try",
@@ -78,6 +77,13 @@ namespace Microsoft.AspNet.Razor.Parser
return _directiveParsers.TryGetValue(directive, out handler);
}
+ private void MapExpressionKeyword(Action handler, CSharpKeyword keyword)
+ {
+ _keywordParsers.Add(keyword, handler);
+
+ // Expression keywords don't belong in the regular keyword list
+ }
+
private void MapKeywords(Action handler, params CSharpKeyword[] keywords)
{
MapKeywords(handler, topLevel: true, keywords: keywords);