Remove Redirect writers
This commit is contained in:
parent
d3e37f20ce
commit
b44d59ca36
|
|
@ -1,212 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|
||||||
{
|
|
||||||
internal class RedirectedRuntimeBasicWriter : RuntimeBasicWriter
|
|
||||||
{
|
|
||||||
private readonly string _textWriter;
|
|
||||||
|
|
||||||
public RedirectedRuntimeBasicWriter(string textWriter)
|
|
||||||
{
|
|
||||||
_textWriter = textWriter;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string WriteCSharpExpressionMethod { get; set; } = "WriteTo";
|
|
||||||
|
|
||||||
public override string WriteHtmlContentMethod { get; set; } = "WriteLiteralTo";
|
|
||||||
|
|
||||||
public override string BeginWriteAttributeMethod { get; set; } = "BeginWriteAttributeTo";
|
|
||||||
|
|
||||||
public override string EndWriteAttributeMethod { get; set; } = "EndWriteAttributeTo";
|
|
||||||
|
|
||||||
public override string WriteAttributeValueMethod { get; set; } = "WriteAttributeValueTo";
|
|
||||||
|
|
||||||
public override void WriteCSharpExpression(CSharpRenderingContext context, CSharpExpressionIRNode node)
|
|
||||||
{
|
|
||||||
IDisposable linePragmaScope = null;
|
|
||||||
if (node.Source != null)
|
|
||||||
{
|
|
||||||
linePragmaScope = context.Writer.BuildLinePragma(node.Source.Value);
|
|
||||||
|
|
||||||
var offset = WriteCSharpExpressionMethod.Length + "(".Length + _textWriter.Length + ", ".Length;
|
|
||||||
context.Writer.WritePadding(offset, node.Source, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Writer.WriteStartMethodInvocation(WriteCSharpExpressionMethod);
|
|
||||||
context.Writer.Write(_textWriter);
|
|
||||||
context.Writer.WriteParameterSeparator();
|
|
||||||
|
|
||||||
for (var i = 0; i < node.Children.Count; i++)
|
|
||||||
{
|
|
||||||
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
|
|
||||||
{
|
|
||||||
context.Writer.Write(token.Content);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// There may be something else inside the expression like a Template or another extension node.
|
|
||||||
context.RenderNode(node.Children[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Writer.WriteEndMethodInvocation();
|
|
||||||
|
|
||||||
linePragmaScope?.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIRNode node)
|
|
||||||
{
|
|
||||||
const int MaxStringLiteralLength = 1024;
|
|
||||||
|
|
||||||
var builder = new StringBuilder();
|
|
||||||
for (var i = 0; i < node.Children.Count; i++)
|
|
||||||
{
|
|
||||||
if (node.Children[i] is RazorIRToken token && token.IsHtml)
|
|
||||||
{
|
|
||||||
builder.Append(token.Content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var content = builder.ToString();
|
|
||||||
|
|
||||||
var charactersConsumed = 0;
|
|
||||||
|
|
||||||
// Render the string in pieces to avoid Roslyn OOM exceptions at compile time: https://github.com/aspnet/External/issues/54
|
|
||||||
while (charactersConsumed < content.Length)
|
|
||||||
{
|
|
||||||
string textToRender;
|
|
||||||
if (content.Length <= MaxStringLiteralLength)
|
|
||||||
{
|
|
||||||
textToRender = content;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var charactersToSubstring = Math.Min(MaxStringLiteralLength, content.Length - charactersConsumed);
|
|
||||||
textToRender = content.Substring(charactersConsumed, charactersToSubstring);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Writer
|
|
||||||
.WriteStartMethodInvocation(WriteHtmlContentMethod)
|
|
||||||
.Write(_textWriter)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(textToRender)
|
|
||||||
.WriteEndMethodInvocation();
|
|
||||||
|
|
||||||
charactersConsumed += textToRender.Length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void WriteHtmlAttribute(CSharpRenderingContext context, HtmlAttributeIRNode node)
|
|
||||||
{
|
|
||||||
var valuePieceCount = node
|
|
||||||
.Children
|
|
||||||
.Count(child => child is HtmlAttributeValueIRNode || child is CSharpAttributeValueIRNode);
|
|
||||||
var prefixLocation = node.Source.Value.AbsoluteIndex;
|
|
||||||
var suffixLocation = node.Source.Value.AbsoluteIndex + node.Source.Value.Length - node.Suffix.Length;
|
|
||||||
context.Writer
|
|
||||||
.WriteStartMethodInvocation(BeginWriteAttributeMethod)
|
|
||||||
.Write(_textWriter)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(node.Name)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(node.Prefix)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(prefixLocation.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(node.Suffix)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(suffixLocation.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(valuePieceCount.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteEndMethodInvocation();
|
|
||||||
|
|
||||||
context.RenderChildren(node);
|
|
||||||
|
|
||||||
context.Writer
|
|
||||||
.WriteStartMethodInvocation(EndWriteAttributeMethod)
|
|
||||||
.Write(_textWriter)
|
|
||||||
.WriteEndMethodInvocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIRNode node)
|
|
||||||
{
|
|
||||||
var prefixLocation = node.Source.Value.AbsoluteIndex;
|
|
||||||
var valueLocation = node.Source.Value.AbsoluteIndex + node.Prefix.Length;
|
|
||||||
var valueLength = node.Source.Value.Length;
|
|
||||||
context.Writer
|
|
||||||
.WriteStartMethodInvocation(WriteAttributeValueMethod)
|
|
||||||
.Write(_textWriter)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(node.Prefix)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(prefixLocation.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(node.Content)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(valueLocation.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(valueLength.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteBooleanLiteral(true)
|
|
||||||
.WriteEndMethodInvocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void WriteCSharpAttributeValue(CSharpRenderingContext context, CSharpAttributeValueIRNode node)
|
|
||||||
{
|
|
||||||
const string ValueWriterName = "__razor_attribute_value_writer";
|
|
||||||
|
|
||||||
var expressionValue = node.Children.FirstOrDefault() as CSharpExpressionIRNode;
|
|
||||||
var linePragma = expressionValue != null ? context.Writer.BuildLinePragma(node.Source.Value) : null;
|
|
||||||
var prefixLocation = node.Source.Value.AbsoluteIndex;
|
|
||||||
var valueLocation = node.Source.Value.AbsoluteIndex + node.Prefix.Length;
|
|
||||||
var valueLength = node.Source.Value.Length - node.Prefix.Length;
|
|
||||||
context.Writer
|
|
||||||
.WriteStartMethodInvocation(WriteAttributeValueMethod)
|
|
||||||
.Write(_textWriter)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteStringLiteral(node.Prefix)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(prefixLocation.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator();
|
|
||||||
|
|
||||||
if (expressionValue != null)
|
|
||||||
{
|
|
||||||
Debug.Assert(node.Children.Count == 1);
|
|
||||||
|
|
||||||
RenderExpressionInline(context, expressionValue);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Not an expression; need to buffer the result.
|
|
||||||
context.Writer.WriteStartNewObject(TemplateTypeName);
|
|
||||||
|
|
||||||
using (context.Push(new RedirectedRuntimeBasicWriter(ValueWriterName)))
|
|
||||||
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: ValueWriterName))
|
|
||||||
{
|
|
||||||
context.RenderChildren(node);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Writer.WriteEndMethodInvocation(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Writer
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(valueLocation.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(valueLength.ToString(CultureInfo.InvariantCulture))
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.WriteBooleanLiteral(false)
|
|
||||||
.WriteEndMethodInvocation();
|
|
||||||
|
|
||||||
linePragma?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|
||||||
{
|
|
||||||
internal class RedirectedRuntimeTagHelperWriter : RuntimeTagHelperWriter
|
|
||||||
{
|
|
||||||
private readonly string _textWriter;
|
|
||||||
|
|
||||||
public RedirectedRuntimeTagHelperWriter(string textWriter)
|
|
||||||
{
|
|
||||||
_textWriter = textWriter;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string WriteTagHelperOutputMethod { get; set; } = "WriteTo";
|
|
||||||
|
|
||||||
public override void WriteExecuteTagHelpers(CSharpRenderingContext context, ExecuteTagHelpersIRNode node)
|
|
||||||
{
|
|
||||||
context.Writer
|
|
||||||
.Write("await ")
|
|
||||||
.WriteStartInstanceMethodInvocation(
|
|
||||||
RunnerVariableName,
|
|
||||||
RunnerRunAsyncMethodName)
|
|
||||||
.Write(ExecutionContextVariableName)
|
|
||||||
.WriteEndMethodInvocation();
|
|
||||||
|
|
||||||
var tagHelperOutputAccessor = $"{ExecutionContextVariableName}.{ExecutionContextOutputPropertyName}";
|
|
||||||
|
|
||||||
context.Writer
|
|
||||||
.Write("if (!")
|
|
||||||
.Write(tagHelperOutputAccessor)
|
|
||||||
.Write(".")
|
|
||||||
.Write(TagHelperOutputIsContentModifiedPropertyName)
|
|
||||||
.WriteLine(")");
|
|
||||||
|
|
||||||
using (context.Writer.BuildScope())
|
|
||||||
{
|
|
||||||
context.Writer
|
|
||||||
.Write("await ")
|
|
||||||
.WriteInstanceMethodInvocation(
|
|
||||||
ExecutionContextVariableName,
|
|
||||||
ExecutionContextSetOutputContentAsyncMethodName);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Writer
|
|
||||||
.WriteStartMethodInvocation(WriteTagHelperOutputMethod)
|
|
||||||
.Write(_textWriter)
|
|
||||||
.WriteParameterSeparator()
|
|
||||||
.Write(tagHelperOutputAccessor)
|
|
||||||
.WriteEndMethodInvocation()
|
|
||||||
.WriteStartAssignment(ExecutionContextVariableName)
|
|
||||||
.WriteInstanceMethodInvocation(
|
|
||||||
ScopeManagerVariableName,
|
|
||||||
ScopeManagerEndMethodName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -22,6 +22,10 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
|
|
||||||
public virtual string WriteAttributeValueMethod { get; set; } = "WriteAttributeValue";
|
public virtual string WriteAttributeValueMethod { get; set; } = "WriteAttributeValue";
|
||||||
|
|
||||||
|
public virtual string PushWriterMethod { get; set; } = "PushWriter";
|
||||||
|
|
||||||
|
public virtual string PopWriterMethod { get; set; } = "PopWriter";
|
||||||
|
|
||||||
public string TemplateTypeName { get; set; } = "Microsoft.AspNetCore.Mvc.Razor.HelperResult";
|
public string TemplateTypeName { get; set; } = "Microsoft.AspNetCore.Mvc.Razor.HelperResult";
|
||||||
|
|
||||||
public override void WriteChecksum(CSharpRenderingContext context, ChecksumIRNode node)
|
public override void WriteChecksum(CSharpRenderingContext context, ChecksumIRNode node)
|
||||||
|
|
@ -216,10 +220,13 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
// Not an expression; need to buffer the result.
|
// Not an expression; need to buffer the result.
|
||||||
context.Writer.WriteStartNewObject(TemplateTypeName);
|
context.Writer.WriteStartNewObject(TemplateTypeName);
|
||||||
|
|
||||||
using (context.Push(new RedirectedRuntimeBasicWriter(ValueWriterName)))
|
|
||||||
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: ValueWriterName))
|
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: ValueWriterName))
|
||||||
{
|
{
|
||||||
|
context.Writer.WriteMethodInvocation(PushWriterMethod, ValueWriterName);
|
||||||
|
|
||||||
context.RenderChildren(node);
|
context.RenderChildren(node);
|
||||||
|
|
||||||
|
context.Writer.WriteMethodInvocation(PopWriterMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
context.Writer.WriteEndMethodInvocation(false);
|
context.Writer.WriteEndMethodInvocation(false);
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,15 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
internal class TemplateTargetExtension : ITemplateTargetExtension
|
internal class TemplateTargetExtension : ITemplateTargetExtension
|
||||||
{
|
{
|
||||||
public static readonly string DefaultTemplateTypeName = "Microsoft.AspNetCore.Mvc.Razor.HelperResult";
|
public static readonly string DefaultTemplateTypeName = "Microsoft.AspNetCore.Mvc.Razor.HelperResult";
|
||||||
|
public static readonly string DefaultPushWriterMethod = "PushWriter";
|
||||||
|
public static readonly string DefaultPopWriterMethod = "PopWriter";
|
||||||
|
|
||||||
public string TemplateTypeName { get; set; } = DefaultTemplateTypeName;
|
public string TemplateTypeName { get; set; } = DefaultTemplateTypeName;
|
||||||
|
|
||||||
|
public string PushWriterMethod { get; set; } = DefaultPushWriterMethod;
|
||||||
|
|
||||||
|
public string PopWriterMethod { get; set; } = DefaultPopWriterMethod;
|
||||||
|
|
||||||
public void WriteTemplate(CSharpRenderingContext context, TemplateIRNode node)
|
public void WriteTemplate(CSharpRenderingContext context, TemplateIRNode node)
|
||||||
{
|
{
|
||||||
const string ItemParameterName = "item";
|
const string ItemParameterName = "item";
|
||||||
|
|
@ -21,21 +27,20 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
.Write(ItemParameterName).Write(" => ")
|
.Write(ItemParameterName).Write(" => ")
|
||||||
.WriteStartNewObject(TemplateTypeName);
|
.WriteStartNewObject(TemplateTypeName);
|
||||||
|
|
||||||
IDisposable basicWriterScope = null;
|
|
||||||
IDisposable tagHelperWriterScope = null;
|
|
||||||
if (!context.Options.DesignTimeMode)
|
|
||||||
{
|
|
||||||
basicWriterScope = context.Push(new RedirectedRuntimeBasicWriter(TemplateWriterName));
|
|
||||||
tagHelperWriterScope = context.Push(new RedirectedRuntimeTagHelperWriter(TemplateWriterName));
|
|
||||||
}
|
|
||||||
|
|
||||||
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: TemplateWriterName))
|
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: TemplateWriterName))
|
||||||
{
|
{
|
||||||
context.RenderChildren(node);
|
if (!context.Options.DesignTimeMode)
|
||||||
}
|
{
|
||||||
|
context.Writer.WriteMethodInvocation(PushWriterMethod, TemplateWriterName);
|
||||||
|
}
|
||||||
|
|
||||||
basicWriterScope?.Dispose();
|
context.RenderChildren(node);
|
||||||
tagHelperWriterScope?.Dispose();
|
|
||||||
|
if (!context.Options.DesignTimeMode)
|
||||||
|
{
|
||||||
|
context.Writer.WriteMethodInvocation(PopWriterMethod);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
context.Writer.WriteEndMethodInvocation(endLine: false);
|
context.Writer.WriteEndMethodInvocation(endLine: false);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,414 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|
||||||
{
|
|
||||||
public class RedirectedRuntimeBasicWriterTest
|
|
||||||
{
|
|
||||||
[Fact]
|
|
||||||
public void WriteCSharpExpression_Runtime_SkipsLinePragma_WithoutSource()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer")
|
|
||||||
{
|
|
||||||
WriteCSharpExpressionMethod = "Test",
|
|
||||||
};
|
|
||||||
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new CSharpExpressionIRNode();
|
|
||||||
var builder = RazorIRBuilder.Create(node);
|
|
||||||
builder.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "i++",
|
|
||||||
Kind = RazorIRToken.TokenKind.CSharp,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteCSharpExpression(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"Test(test_writer, i++);
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteCSharpExpression_Runtime_WritesLinePragma_WithSource()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer")
|
|
||||||
{
|
|
||||||
WriteCSharpExpressionMethod = "Test",
|
|
||||||
};
|
|
||||||
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new CSharpExpressionIRNode()
|
|
||||||
{
|
|
||||||
Source = new SourceSpan("test.cshtml", 0, 0, 0, 3),
|
|
||||||
};
|
|
||||||
var builder = RazorIRBuilder.Create(node);
|
|
||||||
builder.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "i++",
|
|
||||||
Kind = RazorIRToken.TokenKind.CSharp,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteCSharpExpression(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"#line 1 ""test.cshtml""
|
|
||||||
Test(test_writer, i++);
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteCSharpExpression_Runtime_WithExtensionNode_WritesPadding()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer")
|
|
||||||
{
|
|
||||||
WriteCSharpExpressionMethod = "Test",
|
|
||||||
};
|
|
||||||
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new CSharpExpressionIRNode();
|
|
||||||
var builder = RazorIRBuilder.Create(node);
|
|
||||||
builder.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "i",
|
|
||||||
Kind = RazorIRToken.TokenKind.CSharp,
|
|
||||||
});
|
|
||||||
builder.Add(new MyExtensionIRNode());
|
|
||||||
builder.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "++",
|
|
||||||
Kind = RazorIRToken.TokenKind.CSharp,
|
|
||||||
});
|
|
||||||
|
|
||||||
context.RenderNode = (n) => Assert.IsType<MyExtensionIRNode>(n);
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteCSharpExpression(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"Test(test_writer, i++);
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteCSharpExpression_Runtime_WithSource_WritesPadding()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer")
|
|
||||||
{
|
|
||||||
WriteCSharpExpressionMethod = "Test",
|
|
||||||
};
|
|
||||||
var sourceDocument = TestRazorSourceDocument.Create(" @i++");
|
|
||||||
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
CodeDocument = RazorCodeDocument.Create(sourceDocument),
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new CSharpExpressionIRNode()
|
|
||||||
{
|
|
||||||
Source = new SourceSpan("test.cshtml", 24, 0, 24, 3),
|
|
||||||
};
|
|
||||||
var builder = RazorIRBuilder.Create(node);
|
|
||||||
builder.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "i",
|
|
||||||
Kind = RazorIRToken.TokenKind.CSharp,
|
|
||||||
});
|
|
||||||
builder.Add(new MyExtensionIRNode());
|
|
||||||
builder.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "++",
|
|
||||||
Kind = RazorIRToken.TokenKind.CSharp,
|
|
||||||
});
|
|
||||||
|
|
||||||
context.RenderNode = (n) => Assert.IsType<MyExtensionIRNode>(n);
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteCSharpExpression(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"#line 1 ""test.cshtml""
|
|
||||||
Test(test_writer, i++);
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteHtmlContent_RendersContentCorrectly()
|
|
||||||
{
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer");
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new HtmlContentIRNode();
|
|
||||||
node.Children.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = "SomeContent",
|
|
||||||
Kind = RazorIRToken.TokenKind.Html,
|
|
||||||
Parent = node
|
|
||||||
});
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteHtmlContent(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"WriteLiteralTo(test_writer, ""SomeContent"");
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteHtmlContent_LargeStringLiteral_UsesMultipleWrites()
|
|
||||||
{
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer");
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new HtmlContentIRNode();
|
|
||||||
node.Children.Add(new RazorIRToken()
|
|
||||||
{
|
|
||||||
Content = new string('*', 2000),
|
|
||||||
Kind = RazorIRToken.TokenKind.Html,
|
|
||||||
Parent = node
|
|
||||||
});
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteHtmlContent(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(string.Format(
|
|
||||||
@"WriteLiteralTo(test_writer, @""{0}"");
|
|
||||||
WriteLiteralTo(test_writer, @""{1}"");
|
|
||||||
", new string('*', 1024), new string('*', 976)),
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteHtmlAttribute_RendersCorrectly()
|
|
||||||
{
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer");
|
|
||||||
var context = GetCSharpRenderingContext(writer);
|
|
||||||
|
|
||||||
var content = "<input checked=\"hello-world @false\" />";
|
|
||||||
var sourceDocument = TestRazorSourceDocument.Create(content);
|
|
||||||
var codeDocument = RazorCodeDocument.Create(sourceDocument);
|
|
||||||
var irDocument = Lower(codeDocument);
|
|
||||||
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteHtmlAttribute(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"BeginWriteAttributeTo(test_writer, ""checked"", "" checked=\"""", 6, ""\"""", 34, 2);
|
|
||||||
Render Children
|
|
||||||
EndWriteAttributeTo(test_writer);
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteHtmlAttributeValue_RendersCorrectly()
|
|
||||||
{
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer");
|
|
||||||
var context = GetCSharpRenderingContext(writer);
|
|
||||||
|
|
||||||
var content = "<input checked=\"hello-world @false\" />";
|
|
||||||
var sourceDocument = TestRazorSourceDocument.Create(content);
|
|
||||||
var codeDocument = RazorCodeDocument.Create(sourceDocument);
|
|
||||||
var irDocument = Lower(codeDocument);
|
|
||||||
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[0] as HtmlAttributeValueIRNode;
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteHtmlAttributeValue(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"WriteAttributeValueTo(test_writer, """", 16, ""hello-world"", 16, 11, true);
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteCSharpAttributeValue_RendersCorrectly()
|
|
||||||
{
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer");
|
|
||||||
var context = GetCSharpRenderingContext(writer);
|
|
||||||
|
|
||||||
var content = "<input checked=\"hello-world @false\" />";
|
|
||||||
var sourceDocument = TestRazorSourceDocument.Create(content);
|
|
||||||
var codeDocument = RazorCodeDocument.Create(sourceDocument);
|
|
||||||
var irDocument = Lower(codeDocument);
|
|
||||||
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpAttributeValueIRNode;
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteCSharpAttributeValue(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"#line 1 ""test.cshtml""
|
|
||||||
WriteAttributeValueTo(test_writer, "" "", 27, false, 28, 6, false);
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void WriteCSharpAttributeValue_NonExpression_BuffersResult()
|
|
||||||
{
|
|
||||||
var writer = new RedirectedRuntimeBasicWriter("test_writer");
|
|
||||||
var context = GetCSharpRenderingContext(writer);
|
|
||||||
|
|
||||||
var content = "<input checked=\"hello-world @if(@true){ }\" />";
|
|
||||||
var sourceDocument = TestRazorSourceDocument.Create(content);
|
|
||||||
var codeDocument = RazorCodeDocument.Create(sourceDocument);
|
|
||||||
var irDocument = Lower(codeDocument);
|
|
||||||
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpAttributeValueIRNode;
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteCSharpAttributeValue(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"WriteAttributeValueTo(test_writer, "" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
|
||||||
Render Children
|
|
||||||
}
|
|
||||||
), 28, 13, false);
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static CSharpRenderingContext GetCSharpRenderingContext(BasicWriter writer)
|
|
||||||
{
|
|
||||||
var options = RazorParserOptions.CreateDefaultOptions();
|
|
||||||
var codeWriter = new Legacy.CSharpCodeWriter();
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Writer = codeWriter,
|
|
||||||
Options = options,
|
|
||||||
BasicWriter = writer,
|
|
||||||
RenderChildren = n =>
|
|
||||||
{
|
|
||||||
codeWriter.WriteLine("Render Children");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return context;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static DocumentIRNode Lower(RazorCodeDocument codeDocument)
|
|
||||||
{
|
|
||||||
var engine = RazorEngine.Create();
|
|
||||||
|
|
||||||
return Lower(codeDocument, engine);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static DocumentIRNode Lower(RazorCodeDocument codeDocument, RazorEngine engine)
|
|
||||||
{
|
|
||||||
for (var i = 0; i < engine.Phases.Count; i++)
|
|
||||||
{
|
|
||||||
var phase = engine.Phases[i];
|
|
||||||
phase.Execute(codeDocument);
|
|
||||||
|
|
||||||
if (phase is IRazorIRLoweringPhase)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var irDocument = codeDocument.GetIRDocument();
|
|
||||||
Assert.NotNull(irDocument);
|
|
||||||
|
|
||||||
return irDocument;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class MyExtensionIRNode : ExtensionIRNode
|
|
||||||
{
|
|
||||||
public override IList<RazorIRNode> Children => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public override RazorIRNode Parent { get; set; }
|
|
||||||
public override SourceSpan? Source { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
|
|
||||||
|
|
||||||
public override void Accept(RazorIRNodeVisitor visitor)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void WriteNode(RuntimeTarget target, CSharpRenderingContext context)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
|
||||||
{
|
|
||||||
public class RedirectedRuntimeTagHelperWriterTest
|
|
||||||
{
|
|
||||||
[Fact]
|
|
||||||
public void WriteExecuteTagHelpers_Runtime_RendersWithRedirectWriter()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var writer = new RedirectedRuntimeTagHelperWriter("test_writer")
|
|
||||||
{
|
|
||||||
WriteTagHelperOutputMethod = "Test",
|
|
||||||
};
|
|
||||||
|
|
||||||
var context = new CSharpRenderingContext()
|
|
||||||
{
|
|
||||||
Options = RazorParserOptions.CreateDefaultOptions(),
|
|
||||||
Writer = new Legacy.CSharpCodeWriter(),
|
|
||||||
};
|
|
||||||
|
|
||||||
var node = new ExecuteTagHelpersIRNode();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
writer.WriteExecuteTagHelpers(context, node);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var csharp = context.Writer.Builder.ToString();
|
|
||||||
Assert.Equal(
|
|
||||||
@"await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
|
||||||
if (!__tagHelperExecutionContext.Output.IsContentModified)
|
|
||||||
{
|
|
||||||
await __tagHelperExecutionContext.SetOutputContentAsync();
|
|
||||||
}
|
|
||||||
Test(test_writer, __tagHelperExecutionContext.Output);
|
|
||||||
__tagHelperExecutionContext = __tagHelperScopeManager.End();
|
|
||||||
",
|
|
||||||
csharp,
|
|
||||||
ignoreLineEndingDifferences: true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -589,7 +589,9 @@ WriteAttributeValue("" "", 27, false, 28, 6, false);
|
||||||
var csharp = context.Writer.Builder.ToString();
|
var csharp = context.Writer.Builder.ToString();
|
||||||
Assert.Equal(
|
Assert.Equal(
|
||||||
@"WriteAttributeValue("" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
@"WriteAttributeValue("" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
Render Children
|
Render Children
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 28, 13, false);
|
), 28, 13, false);
|
||||||
",
|
",
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,9 @@ AddHtmlAttributeValue("" "", 27, false, 28, 6, false);
|
||||||
var csharp = context.Writer.Builder.ToString();
|
var csharp = context.Writer.Builder.ToString();
|
||||||
Assert.Equal(
|
Assert.Equal(
|
||||||
@"AddHtmlAttributeValue("" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
@"AddHtmlAttributeValue("" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
Render Children
|
Render Children
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 28, 13, false);
|
), 28, 13, false);
|
||||||
",
|
",
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
var extension = new TemplateTargetExtension()
|
var extension = new TemplateTargetExtension()
|
||||||
{
|
{
|
||||||
TemplateTypeName = "global::TestTemplate",
|
TemplateTypeName = "global::TestTemplate",
|
||||||
|
PushWriterMethod = "TestPushWriter",
|
||||||
|
PopWriterMethod = "TestPopWriter"
|
||||||
};
|
};
|
||||||
|
|
||||||
var context = new CSharpRenderingContext()
|
var context = new CSharpRenderingContext()
|
||||||
|
|
@ -31,10 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
context.RenderChildren = (n) =>
|
context.RenderChildren = (n) =>
|
||||||
{
|
{
|
||||||
Assert.Same(node, n);
|
Assert.Same(node, n);
|
||||||
|
context.Writer.WriteLine(" var s = \"Inside\"");
|
||||||
Assert.IsType<RedirectedRuntimeBasicWriter>(context.BasicWriter);
|
|
||||||
|
|
||||||
context.Writer.Write(" var s = \"Inside\"");
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -42,7 +41,9 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
var expected = @"item => new global::TestTemplate(async(__razor_template_writer) => {
|
var expected = @"item => new global::TestTemplate(async(__razor_template_writer) => {
|
||||||
|
TestPushWriter(__razor_template_writer);
|
||||||
var s = ""Inside""
|
var s = ""Inside""
|
||||||
|
TestPopWriter();
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,6 +408,7 @@ __TestNamespace_PTagHelper.Age = ("My age is this long.".Length);
|
||||||
WriteLiteral("\r\n ");
|
WriteLiteral("\r\n ");
|
||||||
#line 34 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ComplexTagHelpers.cshtml"
|
#line 34 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ComplexTagHelpers.cshtml"
|
||||||
Write(someMethod(item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
Write(someMethod(item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
|
PushWriter(__razor_template_writer);
|
||||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("p", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "test", async() => {
|
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("p", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "test", async() => {
|
||||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("input", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.SelfClosing, "test", async() => {
|
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("input", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.SelfClosing, "test", async() => {
|
||||||
}
|
}
|
||||||
|
|
@ -445,8 +446,9 @@ __TestNamespace_PTagHelper.Age = 123;
|
||||||
{
|
{
|
||||||
await __tagHelperExecutionContext.SetOutputContentAsync();
|
await __tagHelperExecutionContext.SetOutputContentAsync();
|
||||||
}
|
}
|
||||||
WriteTo(__razor_template_writer, __tagHelperExecutionContext.Output);
|
Write(__tagHelperExecutionContext.Output);
|
||||||
__tagHelperExecutionContext = __tagHelperScopeManager.End();
|
__tagHelperExecutionContext = __tagHelperScopeManager.End();
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,13 +62,14 @@ WriteAttributeValue(" ", 232, ch, 233, 3, false);
|
||||||
WriteLiteral(" />\r\n <p");
|
WriteLiteral(" />\r\n <p");
|
||||||
BeginWriteAttribute("class", " class=\"", 248, "\"", 281, 1);
|
BeginWriteAttribute("class", " class=\"", 248, "\"", 281, 1);
|
||||||
WriteAttributeValue("", 256, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
WriteAttributeValue("", 256, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ConditionalAttributes.cshtml"
|
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ConditionalAttributes.cshtml"
|
||||||
if(cls != null) {
|
if(cls != null) {
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ConditionalAttributes.cshtml"
|
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ConditionalAttributes.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, cls);
|
Write(cls);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -77,6 +78,7 @@ WriteTo(__razor_attribute_value_writer, cls);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 256, 25, false);
|
), 256, 25, false);
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
|
|
|
||||||
|
|
@ -57,13 +57,14 @@ AddHtmlAttributeValue(" ", 57, DateTime.Now, 58, 13, false);
|
||||||
__tagHelperExecutionContext.Add(__TestNamespace_InputTagHelper);
|
__tagHelperExecutionContext.Add(__TestNamespace_InputTagHelper);
|
||||||
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 2, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 2, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
|
||||||
AddHtmlAttributeValue("", 95, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue("", 95, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
#line 5 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 5 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
if (true) {
|
if (true) {
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 5 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 5 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, string.Empty);
|
Write(string.Empty);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -73,7 +74,7 @@ WriteTo(__razor_attribute_value_writer, string.Empty);
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 5 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 5 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, false);
|
Write(false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -82,6 +83,7 @@ WriteTo(__razor_attribute_value_writer, string.Empty);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 95, 44, false);
|
), 95, 44, false);
|
||||||
AddHtmlAttributeValue(" ", 139, "suffix", 140, 7, true);
|
AddHtmlAttributeValue(" ", 139, "suffix", 140, 7, true);
|
||||||
|
|
@ -180,13 +182,14 @@ AddHtmlAttributeValue("", 347, long.MinValue, 347, 14, false);
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
AddHtmlAttributeValue(" ", 361, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue(" ", 361, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
if (true) {
|
if (true) {
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, string.Empty);
|
Write(string.Empty);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -196,7 +199,7 @@ AddHtmlAttributeValue("", 347, long.MinValue, 347, 14, false);
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, false);
|
Write(false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -205,6 +208,7 @@ AddHtmlAttributeValue("", 347, long.MinValue, 347, 14, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 362, 44, false);
|
), 362, 44, false);
|
||||||
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 10 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
|
|
@ -260,13 +264,14 @@ AddHtmlAttributeValue(" ", 490, int.MaxValue, 491, 13, false);
|
||||||
__tagHelperExecutionContext.Add(__TestNamespace_InputTagHelper);
|
__tagHelperExecutionContext.Add(__TestNamespace_InputTagHelper);
|
||||||
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 1, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 1, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
|
||||||
AddHtmlAttributeValue("", 528, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue("", 528, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
#line 14 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 14 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
if (true) {
|
if (true) {
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 14 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 14 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, string.Empty);
|
Write(string.Empty);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -276,7 +281,7 @@ WriteTo(__razor_attribute_value_writer, string.Empty);
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 14 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
#line 14 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/DynamicAttributeTagHelpers.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, false);
|
Write(false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -285,6 +290,7 @@ WriteTo(__razor_attribute_value_writer, string.Empty);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 528, 44, false);
|
), 528, 44, false);
|
||||||
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
WriteLiteral("<div>");
|
WriteLiteral("<div>");
|
||||||
#line 1 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml"
|
#line 1 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml"
|
||||||
Write(item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
Write(item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "</div>");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral("</div>");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,14 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
WriteLiteral("(string link) {\r\n <a");
|
WriteLiteral("(string link) {\r\n <a");
|
||||||
BeginWriteAttribute("href", " href=\"", 36, "\"", 93, 1);
|
BeginWriteAttribute("href", " href=\"", 36, "\"", 93, 1);
|
||||||
WriteAttributeValue("", 43, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
WriteAttributeValue("", 43, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
|
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
|
||||||
if(link != null) {
|
if(link != null) {
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
|
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
|
||||||
WriteTo(__razor_attribute_value_writer, link);
|
Write(link);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
@ -29,12 +30,13 @@ WriteTo(__razor_attribute_value_writer, link);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_attribute_value_writer, "#");
|
WriteLiteral("#");
|
||||||
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
|
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 43, 50, false);
|
), 43, 50, false);
|
||||||
EndWriteAttribute();
|
EndWriteAttribute();
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "<p>Bar</p>");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral("<p>Bar</p>");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#line 3 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Instrumented.cshtml"
|
#line 3 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Instrumented.cshtml"
|
||||||
|
|
|
||||||
|
|
@ -41,13 +41,15 @@ WriteAttributeValue(" ", 121, thing, 122, 6, false);
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "<span>");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral("<span>");
|
||||||
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Sections.cshtml"
|
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Sections.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, "</span>");
|
WriteLiteral("</span>");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Sections.cshtml"
|
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Sections.cshtml"
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
|
PushWriter(__razor_template_writer);
|
||||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("div", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "test", async() => {
|
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("div", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "test", async() => {
|
||||||
WriteLiteral("<h3>");
|
WriteLiteral("<h3>");
|
||||||
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TagHelpersWithTemplate.cshtml"
|
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TagHelpersWithTemplate.cshtml"
|
||||||
|
|
@ -77,8 +78,9 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
{
|
{
|
||||||
await __tagHelperExecutionContext.SetOutputContentAsync();
|
await __tagHelperExecutionContext.SetOutputContentAsync();
|
||||||
}
|
}
|
||||||
WriteTo(__razor_template_writer, __tagHelperExecutionContext.Output);
|
Write(__tagHelperExecutionContext.Output);
|
||||||
__tagHelperExecutionContext = __tagHelperScopeManager.End();
|
__tagHelperExecutionContext = __tagHelperScopeManager.End();
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TagHelpersWithTemplate.cshtml"
|
#line 16 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TagHelpersWithTemplate.cshtml"
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,15 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "This works ");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral("This works ");
|
||||||
#line 12 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 12 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, "!");
|
WriteLiteral("!");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#line 12 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 12 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
|
|
@ -45,15 +47,17 @@ Write(foo(""));
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "<p");
|
PushWriter(__razor_template_writer);
|
||||||
BeginWriteAttributeTo(__razor_template_writer, "class", " class=\"", 411, "\"", 424, 1);
|
WriteLiteral("<p");
|
||||||
|
BeginWriteAttribute("class", " class=\"", 411, "\"", 424, 1);
|
||||||
#line 17 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 17 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteAttributeValueTo(__razor_template_writer, "", 419, item, 419, 5, false);
|
WriteAttributeValue("", 419, item, 419, 5, false);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
EndWriteAttributeTo(__razor_template_writer);
|
EndWriteAttribute();
|
||||||
WriteLiteralTo(__razor_template_writer, ">Hello</p>");
|
WriteLiteral(">Hello</p>");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#line 17 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 17 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
|
|
@ -70,13 +74,15 @@ Write(bar("myclass"));
|
||||||
WriteLiteral("\r\n<ul>\r\n");
|
WriteLiteral("\r\n<ul>\r\n");
|
||||||
#line 22 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 22 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
Write(Repeat(10, item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
Write(Repeat(10, item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "<li>Item #");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral("<li>Item #");
|
||||||
#line 22 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 22 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, "</li>");
|
WriteLiteral("</li>");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
@ -86,13 +92,15 @@ WriteTo(__razor_template_writer, item);
|
||||||
#line 26 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 26 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
Write(Repeat(10,
|
Write(Repeat(10,
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, " This is line#");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral(" This is line#");
|
||||||
#line 27 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 27 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, " of markup<br/>\r\n");
|
WriteLiteral(" of markup<br/>\r\n");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
@ -102,13 +110,15 @@ WriteTo(__razor_template_writer, item);
|
||||||
#line 32 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 32 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
Write(Repeat(10,
|
Write(Repeat(10,
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, ": This is line#");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral(": This is line#");
|
||||||
#line 33 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 33 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, " of markup<br />\r\n");
|
WriteLiteral(" of markup<br />\r\n");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
@ -118,13 +128,15 @@ WriteTo(__razor_template_writer, item);
|
||||||
#line 38 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 38 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
Write(Repeat(10,
|
Write(Repeat(10,
|
||||||
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, ":: This is line#");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral(":: This is line#");
|
||||||
#line 39 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 39 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, " of markup<br />\r\n");
|
WriteLiteral(" of markup<br />\r\n");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
@ -133,20 +145,22 @@ WriteTo(__razor_template_writer, item);
|
||||||
WriteLiteral("\r\n</p>\r\n\r\n\r\n<ul>\r\n ");
|
WriteLiteral("\r\n</p>\r\n\r\n\r\n<ul>\r\n ");
|
||||||
#line 45 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 45 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
Write(Repeat(10, item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
Write(Repeat(10, item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "<li>\r\n Item #");
|
PushWriter(__razor_template_writer);
|
||||||
|
WriteLiteral("<li>\r\n Item #");
|
||||||
#line 46 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 46 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
WriteTo(__razor_template_writer, item);
|
Write(item);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, "\r\n");
|
WriteLiteral("\r\n");
|
||||||
#line 47 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
#line 47 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Templates.cshtml"
|
||||||
var parent = item;
|
var parent = item;
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteralTo(__razor_template_writer, " <ul>\r\n <li>Child Items... ?</li>\r\n");
|
WriteLiteral(" <ul>\r\n <li>Child Items... ?</li>\r\n");
|
||||||
WriteLiteralTo(__razor_template_writer, " </ul>\r\n </li>");
|
WriteLiteral(" </ul>\r\n </li>");
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,8 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
|
||||||
__tagHelperExecutionContext.Add(__TestNamespace_PTagHelper);
|
__tagHelperExecutionContext.Add(__TestNamespace_PTagHelper);
|
||||||
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "class", 1, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "class", 1, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
|
||||||
AddHtmlAttributeValue("", 109, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue("", 109, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
|
||||||
|
PushWriter(__razor_attribute_value_writer);
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
), 109, 6, false);
|
), 109, 6, false);
|
||||||
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
|
|
|
||||||
|
|
@ -98,9 +98,11 @@ __InputTagHelper.BarProp = DateTime.Now;
|
||||||
BeginContext(217, 29, false);
|
BeginContext(217, 29, false);
|
||||||
#line 9 "TestFiles/IntegrationTests/InstrumentationPassIntegrationTest/BasicTest.cshtml"
|
#line 9 "TestFiles/IntegrationTests/InstrumentationPassIntegrationTest/BasicTest.cshtml"
|
||||||
Write(Foo(item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
Write(Foo(item => new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_template_writer) => {
|
||||||
|
PushWriter(__razor_template_writer);
|
||||||
BeginContext(222, 24, true);
|
BeginContext(222, 24, true);
|
||||||
WriteLiteralTo(__razor_template_writer, "<span>Hello world</span>");
|
WriteLiteral("<span>Hello world</span>");
|
||||||
EndContext();
|
EndContext();
|
||||||
|
PopWriter();
|
||||||
}
|
}
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue