React to CSharpTokenIRNode being removed

This commit is contained in:
Ajay Bhargav Baaskaran 2017-02-17 19:31:33 -08:00
parent 0f5d5ff3b5
commit 11d747fc33
5 changed files with 36 additions and 17 deletions

View File

@ -27,8 +27,9 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var expression = new CSharpExpressionIRNode(); var expression = new CSharpExpressionIRNode();
var builder = RazorIRBuilder.Create(expression); var builder = RazorIRBuilder.Create(expression);
builder.Add(new CSharpTokenIRNode() builder.Add(new RazorIRToken()
{ {
Kind = RazorIRToken.TokenKind.CSharp,
Content = "ModelExpressionProvider.CreateModelExpression(ViewData, __model => ", Content = "ModelExpressionProvider.CreateModelExpression(ViewData, __model => ",
}); });
@ -40,13 +41,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
// https://github.com/aspnet/Razor/issues/963 // https://github.com/aspnet/Razor/issues/963
var original = ((HtmlContentIRNode)node.Children[0]); var original = ((HtmlContentIRNode)node.Children[0]);
builder.Add(new CSharpTokenIRNode() builder.Add(new RazorIRToken()
{ {
Kind = RazorIRToken.TokenKind.CSharp,
Content = "__model." Content = "__model."
}); });
builder.Add(new CSharpTokenIRNode() builder.Add(new RazorIRToken()
{ {
Kind = RazorIRToken.TokenKind.CSharp,
Content = original.Content, Content = original.Content,
Source = original.Source, Source = original.Source,
}); });
@ -60,8 +63,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
{ {
for (var j = 0; j < nestedExpression.Children.Count; j++) for (var j = 0; j < nestedExpression.Children.Count; j++)
{ {
var cSharpToken = nestedExpression.Children[j] as CSharpTokenIRNode; var cSharpToken = nestedExpression.Children[j] as RazorIRToken;
if (cSharpToken != null) if (cSharpToken != null && cSharpToken.Kind == RazorIRToken.TokenKind.CSharp)
{ {
builder.Add(cSharpToken); builder.Add(cSharpToken);
} }
@ -75,8 +78,9 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var html = node.Children[i] as HtmlContentIRNode; var html = node.Children[i] as HtmlContentIRNode;
if (html != null) if (html != null)
{ {
builder.Add(new CSharpTokenIRNode() builder.Add(new RazorIRToken()
{ {
Kind = RazorIRToken.TokenKind.CSharp,
Content = html.Content, Content = html.Content,
Source = html.Source, Source = html.Source,
}); });
@ -84,8 +88,9 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
} }
} }
builder.Add(new CSharpTokenIRNode() builder.Add(new RazorIRToken()
{ {
Kind = RazorIRToken.TokenKind.CSharp,
Content = ")", Content = ")",
}); });

View File

@ -221,8 +221,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var builder = new StringBuilder(); var builder = new StringBuilder();
for (var i = 0; i < node.Children.Count; i++) for (var i = 0; i < node.Children.Count; i++)
{ {
var child = node.Children[i] as CSharpTokenIRNode; var child = node.Children[i] as RazorIRToken;
builder.Append(child.Content); if (child.Kind == RazorIRToken.TokenKind.CSharp)
{
builder.Append(child.Content);
}
} }
return builder.ToString(); return builder.ToString();

View File

@ -204,8 +204,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var builder = new StringBuilder(); var builder = new StringBuilder();
for (var i = 0; i < node.Children.Count; i++) for (var i = 0; i < node.Children.Count; i++)
{ {
var child = node.Children[i] as CSharpTokenIRNode; var child = node.Children[i] as RazorIRToken;
builder.Append(child.Content); if (child.Kind == RazorIRToken.TokenKind.CSharp)
{
builder.Append(child.Content);
}
} }
return builder.ToString(); return builder.ToString();

View File

@ -107,7 +107,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var expression = Assert.IsType<CSharpExpressionIRNode>(Assert.Single(setProperty.Children)); var expression = Assert.IsType<CSharpExpressionIRNode>(Assert.Single(setProperty.Children));
Assert.Equal("ModelExpressionProvider.CreateModelExpression(ViewData, __model => __model.Bar)", GetCSharpContent(expression)); Assert.Equal("ModelExpressionProvider.CreateModelExpression(ViewData, __model => __model.Bar)", GetCSharpContent(expression));
var originalNode = Assert.IsType<CSharpTokenIRNode>(expression.Children[2]); var originalNode = Assert.IsType<RazorIRToken>(expression.Children[2]);
Assert.Equal(RazorIRToken.TokenKind.CSharp, originalNode.Kind);
Assert.Equal("Bar", originalNode.Content); Assert.Equal("Bar", originalNode.Content);
Assert.Equal(new SourceSpan("test.cshtml", 51, 1, 8, 3), originalNode.Source.Value); Assert.Equal(new SourceSpan("test.cshtml", 51, 1, 8, 3), originalNode.Source.Value);
} }
@ -158,7 +159,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var expression = Assert.IsType<CSharpExpressionIRNode>(Assert.Single(setProperty.Children)); var expression = Assert.IsType<CSharpExpressionIRNode>(Assert.Single(setProperty.Children));
Assert.Equal("ModelExpressionProvider.CreateModelExpression(ViewData, __model => Bar)", GetCSharpContent(expression)); Assert.Equal("ModelExpressionProvider.CreateModelExpression(ViewData, __model => Bar)", GetCSharpContent(expression));
var originalNode = Assert.IsType<CSharpTokenIRNode>(expression.Children[1]); var originalNode = Assert.IsType<RazorIRToken>(expression.Children[1]);
Assert.Equal(RazorIRToken.TokenKind.CSharp, originalNode.Kind);
Assert.Equal("Bar", originalNode.Content); Assert.Equal("Bar", originalNode.Content);
Assert.Equal(new SourceSpan("test.cshtml", 52, 1, 9, 3), originalNode.Source.Value); Assert.Equal(new SourceSpan("test.cshtml", 52, 1, 9, 3), originalNode.Source.Value);
} }
@ -212,8 +214,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
var builder = new StringBuilder(); var builder = new StringBuilder();
for (var i = 0; i < node.Children.Count; i++) for (var i = 0; i < node.Children.Count; i++)
{ {
var child = node.Children[i] as CSharpTokenIRNode; var child = node.Children[i] as RazorIRToken;
builder.Append(child.Content); if (child.Kind == RazorIRToken.TokenKind.CSharp)
{
builder.Append(child.Content);
}
} }
return builder.ToString(); return builder.ToString();

View File

@ -366,8 +366,11 @@ public class __Generated__TagCloudViewComponentTagHelper : Microsoft.AspNetCore.
var builder = new StringBuilder(); var builder = new StringBuilder();
for (var i = 0; i < node.Children.Count; i++) for (var i = 0; i < node.Children.Count; i++)
{ {
var child = node.Children[i] as CSharpTokenIRNode; var child = node.Children[i] as RazorIRToken;
builder.Append(child.Content); if (child.Kind == RazorIRToken.TokenKind.CSharp)
{
builder.Append(child.Content);
}
} }
return builder.ToString(); return builder.ToString();