Enable `TagHelper`s to properly flatten to enable partial parsing.

- `TagHelper`s used to not flatten correctly resulting in inconsistent start locations for `SyntaxTreeNode`s following/within `TagHelper`s.
- This change indirectly corrected bad indentation that existed in generated C#.
- Added a test to validate `TreesAreDifferent` returns expected behavior when modifying content inside of `TagHelper`.
- Added `TagHelperBlock` `Flatten` test.

#553
This commit is contained in:
N. Taylor Mullen 2015-10-15 15:24:59 -07:00
parent 2d4092ca32
commit deaf2dc828
24 changed files with 439 additions and 252 deletions

View File

@ -137,7 +137,7 @@ namespace Microsoft.AspNet.Razor.Parser.SyntaxTree
return hashCodeCombiner; return hashCodeCombiner;
} }
public IEnumerable<Span> Flatten() public virtual IEnumerable<Span> Flatten()
{ {
// Create an enumerable that flattens the tree for use by syntax highlighters, etc. // Create an enumerable that flattens the tree for use by syntax highlighters, etc.
foreach (SyntaxTreeNode element in Children) foreach (SyntaxTreeNode element in Children)

View File

@ -99,6 +99,30 @@ namespace Microsoft.AspNet.Razor.Parser.TagHelpers
} }
} }
public override IEnumerable<Span> Flatten()
{
if (SourceStartTag != null)
{
foreach (var childSpan in SourceStartTag.Flatten())
{
yield return childSpan;
}
}
foreach (var childSpan in base.Flatten())
{
yield return childSpan;
}
if (SourceEndTag != null)
{
foreach (var childSpan in SourceEndTag.Flatten())
{
yield return childSpan;
}
}
}
/// <inheritdoc /> /// <inheritdoc />
public override string ToString() public override string ToString()
{ {

View File

@ -134,6 +134,6 @@ namespace Microsoft.AspNet.Razor.Parser.TagHelpers
/// <summary> /// <summary>
/// The starting <see cref="SourceLocation"/> of the tag helper. /// The starting <see cref="SourceLocation"/> of the tag helper.
/// </summary> /// </summary>
public SourceLocation Start { get; private set; } public SourceLocation Start { get; set; }
} }
} }

View File

@ -535,15 +535,14 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 202, documentAbsoluteIndex: 202,
documentLineIndex: 5, documentLineIndex: 5,
documentCharacterOffsetIndex: 38, generatedAbsoluteIndex: 1226,
generatedAbsoluteIndex: 1194,
generatedLineIndex: 38, generatedLineIndex: 38,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 38,
contentLength: 23), contentLength: 23),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 285, documentAbsoluteIndex: 285,
documentLineIndex: 6, documentLineIndex: 6,
generatedAbsoluteIndex: 1677, generatedAbsoluteIndex: 1709,
generatedLineIndex: 49, generatedLineIndex: 49,
characterOffsetIndex: 40, characterOffsetIndex: 40,
contentLength: 4), contentLength: 4),
@ -624,92 +623,89 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 446, documentAbsoluteIndex: 446,
documentLineIndex: 15, documentLineIndex: 15,
documentCharacterOffsetIndex: 46, generatedAbsoluteIndex: 1913,
generatedAbsoluteIndex: 1873,
generatedLineIndex: 72, generatedLineIndex: 72,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 46,
contentLength: 8), contentLength: 8),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 463, documentAbsoluteIndex: 463,
documentLineIndex: 15, documentLineIndex: 15,
generatedAbsoluteIndex: 2127, generatedAbsoluteIndex: 2167,
generatedLineIndex: 79, generatedLineIndex: 79,
characterOffsetIndex: 63, characterOffsetIndex: 63,
contentLength: 4), contentLength: 4),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 507, documentAbsoluteIndex: 507,
documentLineIndex: 16, documentLineIndex: 16,
documentCharacterOffsetIndex: 31, generatedAbsoluteIndex: 2468,
generatedAbsoluteIndex: 2403,
generatedLineIndex: 87, generatedLineIndex: 87,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 31,
contentLength: 30), contentLength: 30),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 574, documentAbsoluteIndex: 574,
documentLineIndex: 17, documentLineIndex: 17,
documentCharacterOffsetIndex: 30, documentCharacterOffsetIndex: 30,
generatedAbsoluteIndex: 2752, generatedAbsoluteIndex: 2846,
generatedLineIndex: 96, generatedLineIndex: 96,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 29,
contentLength: 10), contentLength: 10),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 606, documentAbsoluteIndex: 606,
documentLineIndex: 17, documentLineIndex: 17,
documentCharacterOffsetIndex: 62, documentCharacterOffsetIndex: 62,
generatedAbsoluteIndex: 2834, generatedAbsoluteIndex: 2989,
generatedLineIndex: 102, generatedLineIndex: 102,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 61,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 607, documentAbsoluteIndex: 607,
documentLineIndex: 17, documentLineIndex: 17,
documentCharacterOffsetIndex: 63, documentCharacterOffsetIndex: 63,
generatedAbsoluteIndex: 2907, generatedAbsoluteIndex: 3124,
generatedLineIndex: 108, generatedLineIndex: 108,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 62,
contentLength: 8), contentLength: 8),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 637, documentAbsoluteIndex: 637,
documentLineIndex: 17, documentLineIndex: 17,
documentCharacterOffsetIndex: 93, documentCharacterOffsetIndex: 93,
generatedAbsoluteIndex: 2987, generatedAbsoluteIndex: 3295,
generatedLineIndex: 114, generatedLineIndex: 114,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 91,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 638, documentAbsoluteIndex: 638,
documentLineIndex: 17, documentLineIndex: 17,
documentCharacterOffsetIndex: 94, documentCharacterOffsetIndex: 94,
generatedAbsoluteIndex: 3060, generatedAbsoluteIndex: 3460,
generatedLineIndex: 120, generatedLineIndex: 120,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 92,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 643, documentAbsoluteIndex: 643,
documentLineIndex: 18, documentLineIndex: 18,
generatedAbsoluteIndex: 3245, generatedAbsoluteIndex: 3645,
generatedLineIndex: 128, generatedLineIndex: 128,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 15), contentLength: 15),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 163, documentAbsoluteIndex: 163,
documentLineIndex: 7, documentLineIndex: 7,
documentCharacterOffsetIndex: 32, generatedAbsoluteIndex: 3820,
generatedAbsoluteIndex: 3394,
generatedLineIndex: 135, generatedLineIndex: 135,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 32,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 769, documentAbsoluteIndex: 769,
documentLineIndex: 21, documentLineIndex: 21,
generatedAbsoluteIndex: 3477, generatedAbsoluteIndex: 3903,
generatedLineIndex: 140, generatedLineIndex: 140,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 783, documentAbsoluteIndex: 783,
documentLineIndex: 21, documentLineIndex: 21,
generatedAbsoluteIndex: 3575, generatedAbsoluteIndex: 4001,
generatedLineIndex: 146, generatedLineIndex: 146,
characterOffsetIndex: 14, characterOffsetIndex: 14,
contentLength: 21), contentLength: 21),
@ -717,7 +713,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 836, documentAbsoluteIndex: 836,
documentLineIndex: 22, documentLineIndex: 22,
documentCharacterOffsetIndex: 29, documentCharacterOffsetIndex: 29,
generatedAbsoluteIndex: 3832, generatedAbsoluteIndex: 4258,
generatedLineIndex: 154, generatedLineIndex: 154,
generatedCharacterOffsetIndex: 28, generatedCharacterOffsetIndex: 28,
contentLength: 1), contentLength: 1),
@ -725,7 +721,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 837, documentAbsoluteIndex: 837,
documentLineIndex: 22, documentLineIndex: 22,
documentCharacterOffsetIndex: 30, documentCharacterOffsetIndex: 30,
generatedAbsoluteIndex: 3833, generatedAbsoluteIndex: 4259,
generatedLineIndex: 154, generatedLineIndex: 154,
generatedCharacterOffsetIndex: 29, generatedCharacterOffsetIndex: 29,
contentLength: 7), contentLength: 7),
@ -733,7 +729,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 844, documentAbsoluteIndex: 844,
documentLineIndex: 22, documentLineIndex: 22,
documentCharacterOffsetIndex: 37, documentCharacterOffsetIndex: 37,
generatedAbsoluteIndex: 3840, generatedAbsoluteIndex: 4266,
generatedLineIndex: 154, generatedLineIndex: 154,
generatedCharacterOffsetIndex: 36, generatedCharacterOffsetIndex: 36,
contentLength: 1), contentLength: 1),
@ -741,7 +737,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 711, documentAbsoluteIndex: 711,
documentLineIndex: 20, documentLineIndex: 20,
documentCharacterOffsetIndex: 39, documentCharacterOffsetIndex: 39,
generatedAbsoluteIndex: 4009, generatedAbsoluteIndex: 4435,
generatedLineIndex: 160, generatedLineIndex: 160,
generatedCharacterOffsetIndex: 38, generatedCharacterOffsetIndex: 38,
contentLength: 23), contentLength: 23),
@ -749,7 +745,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 734, documentAbsoluteIndex: 734,
documentLineIndex: 20, documentLineIndex: 20,
documentCharacterOffsetIndex: 62, documentCharacterOffsetIndex: 62,
generatedAbsoluteIndex: 4032, generatedAbsoluteIndex: 4458,
generatedLineIndex: 160, generatedLineIndex: 160,
generatedCharacterOffsetIndex: 61, generatedCharacterOffsetIndex: 61,
contentLength: 7), contentLength: 7),
@ -757,7 +753,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 976, documentAbsoluteIndex: 976,
documentLineIndex: 25, documentLineIndex: 25,
documentCharacterOffsetIndex: 61, documentCharacterOffsetIndex: 61,
generatedAbsoluteIndex: 4306, generatedAbsoluteIndex: 4732,
generatedLineIndex: 167, generatedLineIndex: 167,
generatedCharacterOffsetIndex: 60, generatedCharacterOffsetIndex: 60,
contentLength: 1), contentLength: 1),
@ -765,7 +761,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 977, documentAbsoluteIndex: 977,
documentLineIndex: 25, documentLineIndex: 25,
documentCharacterOffsetIndex: 62, documentCharacterOffsetIndex: 62,
generatedAbsoluteIndex: 4307, generatedAbsoluteIndex: 4733,
generatedLineIndex: 167, generatedLineIndex: 167,
generatedCharacterOffsetIndex: 61, generatedCharacterOffsetIndex: 61,
contentLength: 30), contentLength: 30),
@ -773,7 +769,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 1007, documentAbsoluteIndex: 1007,
documentLineIndex: 25, documentLineIndex: 25,
documentCharacterOffsetIndex: 92, documentCharacterOffsetIndex: 92,
generatedAbsoluteIndex: 4337, generatedAbsoluteIndex: 4763,
generatedLineIndex: 167, generatedLineIndex: 167,
generatedCharacterOffsetIndex: 91, generatedCharacterOffsetIndex: 91,
contentLength: 1), contentLength: 1),
@ -781,7 +777,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 879, documentAbsoluteIndex: 879,
documentLineIndex: 24, documentLineIndex: 24,
documentCharacterOffsetIndex: 16, documentCharacterOffsetIndex: 16,
generatedAbsoluteIndex: 4487, generatedAbsoluteIndex: 4913,
generatedLineIndex: 173, generatedLineIndex: 173,
generatedCharacterOffsetIndex: 19, generatedCharacterOffsetIndex: 19,
contentLength: 8), contentLength: 8),
@ -789,7 +785,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 887, documentAbsoluteIndex: 887,
documentLineIndex: 24, documentLineIndex: 24,
documentCharacterOffsetIndex: 24, documentCharacterOffsetIndex: 24,
generatedAbsoluteIndex: 4495, generatedAbsoluteIndex: 4921,
generatedLineIndex: 173, generatedLineIndex: 173,
generatedCharacterOffsetIndex: 27, generatedCharacterOffsetIndex: 27,
contentLength: 1), contentLength: 1),
@ -797,14 +793,14 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 888, documentAbsoluteIndex: 888,
documentLineIndex: 24, documentLineIndex: 24,
documentCharacterOffsetIndex: 25, documentCharacterOffsetIndex: 25,
generatedAbsoluteIndex: 4496, generatedAbsoluteIndex: 4922,
generatedLineIndex: 173, generatedLineIndex: 173,
generatedCharacterOffsetIndex: 28, generatedCharacterOffsetIndex: 28,
contentLength: 23), contentLength: 23),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1106, documentAbsoluteIndex: 1106,
documentLineIndex: 28, documentLineIndex: 28,
generatedAbsoluteIndex: 4754, generatedAbsoluteIndex: 5180,
generatedLineIndex: 180, generatedLineIndex: 180,
characterOffsetIndex: 28, characterOffsetIndex: 28,
contentLength: 30), contentLength: 30),
@ -812,42 +808,42 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 1044, documentAbsoluteIndex: 1044,
documentLineIndex: 27, documentLineIndex: 27,
documentCharacterOffsetIndex: 16, documentCharacterOffsetIndex: 16,
generatedAbsoluteIndex: 4933, generatedAbsoluteIndex: 5359,
generatedLineIndex: 186, generatedLineIndex: 186,
generatedCharacterOffsetIndex: 19, generatedCharacterOffsetIndex: 19,
contentLength: 30), contentLength: 30),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1234, documentAbsoluteIndex: 1234,
documentLineIndex: 31, documentLineIndex: 31,
generatedAbsoluteIndex: 5198, generatedAbsoluteIndex: 5624,
generatedLineIndex: 193, generatedLineIndex: 193,
characterOffsetIndex: 28, characterOffsetIndex: 28,
contentLength: 3), contentLength: 3),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1237, documentAbsoluteIndex: 1237,
documentLineIndex: 31, documentLineIndex: 31,
generatedAbsoluteIndex: 5201, generatedAbsoluteIndex: 5627,
generatedLineIndex: 193, generatedLineIndex: 193,
characterOffsetIndex: 31, characterOffsetIndex: 31,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1239, documentAbsoluteIndex: 1239,
documentLineIndex: 31, documentLineIndex: 31,
generatedAbsoluteIndex: 5203, generatedAbsoluteIndex: 5629,
generatedLineIndex: 193, generatedLineIndex: 193,
characterOffsetIndex: 33, characterOffsetIndex: 33,
contentLength: 27), contentLength: 27),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1266, documentAbsoluteIndex: 1266,
documentLineIndex: 31, documentLineIndex: 31,
generatedAbsoluteIndex: 5230, generatedAbsoluteIndex: 5656,
generatedLineIndex: 193, generatedLineIndex: 193,
characterOffsetIndex: 60, characterOffsetIndex: 60,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1267, documentAbsoluteIndex: 1267,
documentLineIndex: 31, documentLineIndex: 31,
generatedAbsoluteIndex: 5231, generatedAbsoluteIndex: 5657,
generatedLineIndex: 193, generatedLineIndex: 193,
characterOffsetIndex: 61, characterOffsetIndex: 61,
contentLength: 10), contentLength: 10),
@ -855,7 +851,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 1171, documentAbsoluteIndex: 1171,
documentLineIndex: 30, documentLineIndex: 30,
documentCharacterOffsetIndex: 17, documentCharacterOffsetIndex: 17,
generatedAbsoluteIndex: 5390, generatedAbsoluteIndex: 5816,
generatedLineIndex: 199, generatedLineIndex: 199,
generatedCharacterOffsetIndex: 19, generatedCharacterOffsetIndex: 19,
contentLength: 1), contentLength: 1),
@ -863,7 +859,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 1172, documentAbsoluteIndex: 1172,
documentLineIndex: 30, documentLineIndex: 30,
documentCharacterOffsetIndex: 18, documentCharacterOffsetIndex: 18,
generatedAbsoluteIndex: 5391, generatedAbsoluteIndex: 5817,
generatedLineIndex: 199, generatedLineIndex: 199,
generatedCharacterOffsetIndex: 20, generatedCharacterOffsetIndex: 20,
contentLength: 29), contentLength: 29),
@ -871,14 +867,14 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 1201, documentAbsoluteIndex: 1201,
documentLineIndex: 30, documentLineIndex: 30,
documentCharacterOffsetIndex: 47, documentCharacterOffsetIndex: 47,
generatedAbsoluteIndex: 5420, generatedAbsoluteIndex: 5846,
generatedLineIndex: 199, generatedLineIndex: 199,
generatedCharacterOffsetIndex: 49, generatedCharacterOffsetIndex: 49,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1306, documentAbsoluteIndex: 1306,
documentLineIndex: 33, documentLineIndex: 33,
generatedAbsoluteIndex: 5501, generatedAbsoluteIndex: 5927,
generatedLineIndex: 204, generatedLineIndex: 204,
characterOffsetIndex: 9, characterOffsetIndex: 9,
contentLength: 11), contentLength: 11),
@ -886,21 +882,21 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 1361, documentAbsoluteIndex: 1361,
documentLineIndex: 33, documentLineIndex: 33,
documentCharacterOffsetIndex: 64, documentCharacterOffsetIndex: 64,
generatedAbsoluteIndex: 5790, generatedAbsoluteIndex: 6216,
generatedLineIndex: 208, generatedLineIndex: 208,
generatedCharacterOffsetIndex: 63, generatedCharacterOffsetIndex: 63,
contentLength: 7), contentLength: 7),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1326, documentAbsoluteIndex: 1326,
documentLineIndex: 33, documentLineIndex: 33,
generatedAbsoluteIndex: 5948, generatedAbsoluteIndex: 6374,
generatedLineIndex: 214, generatedLineIndex: 214,
characterOffsetIndex: 29, characterOffsetIndex: 29,
contentLength: 3), contentLength: 3),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1390, documentAbsoluteIndex: 1390,
documentLineIndex: 35, documentLineIndex: 35,
generatedAbsoluteIndex: 6063, generatedAbsoluteIndex: 6489,
generatedLineIndex: 225, generatedLineIndex: 225,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 1), contentLength: 1),
@ -967,15 +963,14 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 200, documentAbsoluteIndex: 200,
documentLineIndex: 5, documentLineIndex: 5,
documentCharacterOffsetIndex: 51, generatedAbsoluteIndex: 1244,
generatedAbsoluteIndex: 1199,
generatedLineIndex: 41, generatedLineIndex: 41,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 51,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 223, documentAbsoluteIndex: 223,
documentLineIndex: 5, documentLineIndex: 5,
generatedAbsoluteIndex: 1467, generatedAbsoluteIndex: 1512,
generatedLineIndex: 48, generatedLineIndex: 48,
characterOffsetIndex: 74, characterOffsetIndex: 74,
contentLength: 4), contentLength: 4),
@ -1090,16 +1085,15 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 783, documentAbsoluteIndex: 783,
documentLineIndex: 20, documentLineIndex: 20,
documentCharacterOffsetIndex: 42, generatedAbsoluteIndex: 4178,
generatedAbsoluteIndex: 4142,
generatedLineIndex: 107, generatedLineIndex: 107,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 42,
contentLength: 8), contentLength: 8),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 826, documentAbsoluteIndex: 826,
documentLineIndex: 21, documentLineIndex: 21,
documentCharacterOffsetIndex: 29, documentCharacterOffsetIndex: 29,
generatedAbsoluteIndex: 4621, generatedAbsoluteIndex: 4657,
generatedLineIndex: 116, generatedLineIndex: 116,
generatedCharacterOffsetIndex: 51, generatedCharacterOffsetIndex: 51,
contentLength: 2), contentLength: 2),
@ -1151,242 +1145,216 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 59, documentAbsoluteIndex: 59,
documentLineIndex: 2, documentLineIndex: 2,
documentCharacterOffsetIndex: 24, generatedAbsoluteIndex: 1020,
generatedAbsoluteIndex: 1002,
generatedLineIndex: 34, generatedLineIndex: 34,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 24,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 96, documentAbsoluteIndex: 96,
documentLineIndex: 4, documentLineIndex: 4,
documentCharacterOffsetIndex: 17, documentCharacterOffsetIndex: 17,
generatedAbsoluteIndex: 1160, generatedAbsoluteIndex: 1194,
generatedLineIndex: 40, generatedLineIndex: 40,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 16,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 109, documentAbsoluteIndex: 109,
documentLineIndex: 4, documentLineIndex: 4,
documentCharacterOffsetIndex: 30, generatedAbsoluteIndex: 1316,
generatedAbsoluteIndex: 1258,
generatedLineIndex: 46, generatedLineIndex: 46,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 30,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 121, documentAbsoluteIndex: 121,
documentLineIndex: 4, documentLineIndex: 4,
documentCharacterOffsetIndex: 42, generatedAbsoluteIndex: 1449,
generatedAbsoluteIndex: 1349,
generatedLineIndex: 51, generatedLineIndex: 51,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 42,
contentLength: 10), contentLength: 10),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 132, documentAbsoluteIndex: 132,
documentLineIndex: 4, documentLineIndex: 4,
documentCharacterOffsetIndex: 53, generatedAbsoluteIndex: 1592,
generatedAbsoluteIndex: 1445,
generatedLineIndex: 57, generatedLineIndex: 57,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 53,
contentLength: 5), contentLength: 5),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 137, documentAbsoluteIndex: 137,
documentLineIndex: 4, documentLineIndex: 4,
documentCharacterOffsetIndex: 58, generatedAbsoluteIndex: 1734,
generatedAbsoluteIndex: 1529,
generatedLineIndex: 62, generatedLineIndex: 62,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 58,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 176, documentAbsoluteIndex: 176,
documentLineIndex: 6, documentLineIndex: 6,
documentCharacterOffsetIndex: 22, generatedAbsoluteIndex: 1905,
generatedAbsoluteIndex: 1684,
generatedLineIndex: 69, generatedLineIndex: 69,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 22,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 214, documentAbsoluteIndex: 214,
documentLineIndex: 6, documentLineIndex: 6,
documentCharacterOffsetIndex: 60, generatedAbsoluteIndex: 2108,
generatedAbsoluteIndex: 1833,
generatedLineIndex: 75, generatedLineIndex: 75,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 60,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 256, documentAbsoluteIndex: 256,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 15, generatedAbsoluteIndex: 2281,
generatedAbsoluteIndex: 1997,
generatedLineIndex: 81, generatedLineIndex: 81,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 15,
contentLength: 13), contentLength: 13),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 271, documentAbsoluteIndex: 271,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 30, documentCharacterOffsetIndex: 30,
generatedAbsoluteIndex: 2089, generatedAbsoluteIndex: 2402,
generatedLineIndex: 86, generatedLineIndex: 86,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 29,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 284, documentAbsoluteIndex: 284,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 43, generatedAbsoluteIndex: 2537,
generatedAbsoluteIndex: 2187,
generatedLineIndex: 92, generatedLineIndex: 92,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 43,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 296, documentAbsoluteIndex: 296,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 55, generatedAbsoluteIndex: 2683,
generatedAbsoluteIndex: 2278,
generatedLineIndex: 97, generatedLineIndex: 97,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 55,
contentLength: 10), contentLength: 10),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 307, documentAbsoluteIndex: 307,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 66, generatedAbsoluteIndex: 2839,
generatedAbsoluteIndex: 2374,
generatedLineIndex: 103, generatedLineIndex: 103,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 66,
contentLength: 5), contentLength: 5),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 312, documentAbsoluteIndex: 312,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 71, generatedAbsoluteIndex: 2994,
generatedAbsoluteIndex: 2458,
generatedLineIndex: 108, generatedLineIndex: 108,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 71,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 316, documentAbsoluteIndex: 316,
documentLineIndex: 8, documentLineIndex: 8,
documentCharacterOffsetIndex: 75, generatedAbsoluteIndex: 3151,
generatedAbsoluteIndex: 2546,
generatedLineIndex: 114, generatedLineIndex: 114,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 75,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 348, documentAbsoluteIndex: 348,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 17, generatedAbsoluteIndex: 3312,
generatedAbsoluteIndex: 2696,
generatedLineIndex: 120, generatedLineIndex: 120,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 17,
contentLength: 13), contentLength: 13),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 363, documentAbsoluteIndex: 363,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 32, documentCharacterOffsetIndex: 32,
generatedAbsoluteIndex: 2789, generatedAbsoluteIndex: 3436,
generatedLineIndex: 125, generatedLineIndex: 125,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 31,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 376, documentAbsoluteIndex: 376,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 45, generatedAbsoluteIndex: 3574,
generatedAbsoluteIndex: 2888,
generatedLineIndex: 131, generatedLineIndex: 131,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 45,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 388, documentAbsoluteIndex: 388,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 57, generatedAbsoluteIndex: 3723,
generatedAbsoluteIndex: 2980,
generatedLineIndex: 136, generatedLineIndex: 136,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 57,
contentLength: 10), contentLength: 10),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 399, documentAbsoluteIndex: 399,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 68, generatedAbsoluteIndex: 3882,
generatedAbsoluteIndex: 3077,
generatedLineIndex: 142, generatedLineIndex: 142,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 68,
contentLength: 5), contentLength: 5),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 404, documentAbsoluteIndex: 404,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 73, generatedAbsoluteIndex: 4040,
generatedAbsoluteIndex: 3162,
generatedLineIndex: 147, generatedLineIndex: 147,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 73,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 408, documentAbsoluteIndex: 408,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 77, generatedAbsoluteIndex: 4200,
generatedAbsoluteIndex: 3251,
generatedLineIndex: 153, generatedLineIndex: 153,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 77,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 445, documentAbsoluteIndex: 445,
documentLineIndex: 11, documentLineIndex: 11,
documentCharacterOffsetIndex: 17, generatedAbsoluteIndex: 4376,
generatedAbsoluteIndex: 3416,
generatedLineIndex: 159, generatedLineIndex: 159,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 17,
contentLength: 13), contentLength: 13),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 460, documentAbsoluteIndex: 460,
documentLineIndex: 11, documentLineIndex: 11,
documentCharacterOffsetIndex: 32, generatedAbsoluteIndex: 4501,
generatedAbsoluteIndex: 3515,
generatedLineIndex: 164, generatedLineIndex: 164,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 32,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 492, documentAbsoluteIndex: 492,
documentLineIndex: 11, documentLineIndex: 11,
documentCharacterOffsetIndex: 64, generatedAbsoluteIndex: 4657,
generatedAbsoluteIndex: 3613,
generatedLineIndex: 169, generatedLineIndex: 169,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 64,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 529, documentAbsoluteIndex: 529,
documentLineIndex: 13, documentLineIndex: 13,
documentCharacterOffsetIndex: 17, documentCharacterOffsetIndex: 17,
generatedAbsoluteIndex: 3772, generatedAbsoluteIndex: 4832,
generatedLineIndex: 175, generatedLineIndex: 175,
generatedCharacterOffsetIndex: 0, generatedCharacterOffsetIndex: 16,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 542, documentAbsoluteIndex: 542,
documentLineIndex: 13, documentLineIndex: 13,
documentCharacterOffsetIndex: 30, generatedAbsoluteIndex: 4955,
generatedAbsoluteIndex: 3871,
generatedLineIndex: 181, generatedLineIndex: 181,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 30,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 554, documentAbsoluteIndex: 554,
documentLineIndex: 13, documentLineIndex: 13,
documentCharacterOffsetIndex: 42, generatedAbsoluteIndex: 5089,
generatedAbsoluteIndex: 3963,
generatedLineIndex: 186, generatedLineIndex: 186,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 42,
contentLength: 10), contentLength: 10),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 565, documentAbsoluteIndex: 565,
documentLineIndex: 13, documentLineIndex: 13,
documentCharacterOffsetIndex: 53, generatedAbsoluteIndex: 5233,
generatedAbsoluteIndex: 4060,
generatedLineIndex: 192, generatedLineIndex: 192,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 53,
contentLength: 5), contentLength: 5),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 570, documentAbsoluteIndex: 570,
documentLineIndex: 13, documentLineIndex: 13,
documentCharacterOffsetIndex: 58, generatedAbsoluteIndex: 5376,
generatedAbsoluteIndex: 4145,
generatedLineIndex: 197, generatedLineIndex: 197,
generatedCharacterOffsetIndex: 0, characterOffsetIndex: 58,
contentLength: 2), contentLength: 2),
} }
}, },
@ -1420,36 +1388,35 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 157, documentAbsoluteIndex: 157,
documentLineIndex: 7, documentLineIndex: 7,
documentCharacterOffsetIndex: 12, generatedAbsoluteIndex: 1332,
generatedAbsoluteIndex: 1326,
generatedLineIndex: 48, generatedLineIndex: 48,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 12,
contentLength: 6), contentLength: 6),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 171, documentAbsoluteIndex: 171,
documentLineIndex: 7, documentLineIndex: 7,
generatedAbsoluteIndex: 1443, generatedAbsoluteIndex: 1449,
generatedLineIndex: 53, generatedLineIndex: 53,
characterOffsetIndex: 26, characterOffsetIndex: 26,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 202, documentAbsoluteIndex: 202,
documentLineIndex: 8, documentLineIndex: 8,
generatedAbsoluteIndex: 1610, generatedAbsoluteIndex: 1616,
generatedLineIndex: 59, generatedLineIndex: 59,
characterOffsetIndex: 21, characterOffsetIndex: 21,
contentLength: 5), contentLength: 5),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 207, documentAbsoluteIndex: 207,
documentLineIndex: 8, documentLineIndex: 8,
generatedAbsoluteIndex: 1615, generatedAbsoluteIndex: 1621,
generatedLineIndex: 59, generatedLineIndex: 59,
characterOffsetIndex: 26, characterOffsetIndex: 26,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 208, documentAbsoluteIndex: 208,
documentLineIndex: 8, documentLineIndex: 8,
generatedAbsoluteIndex: 1616, generatedAbsoluteIndex: 1622,
generatedLineIndex: 59, generatedLineIndex: 59,
characterOffsetIndex: 27, characterOffsetIndex: 27,
contentLength: 3), contentLength: 3),
@ -1457,7 +1424,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 241, documentAbsoluteIndex: 241,
documentLineIndex: 9, documentLineIndex: 9,
documentCharacterOffsetIndex: 22, documentCharacterOffsetIndex: 22,
generatedAbsoluteIndex: 1785, generatedAbsoluteIndex: 1791,
generatedLineIndex: 65, generatedLineIndex: 65,
generatedCharacterOffsetIndex: 21, generatedCharacterOffsetIndex: 21,
contentLength: 3), contentLength: 3),
@ -1465,7 +1432,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 274, documentAbsoluteIndex: 274,
documentLineIndex: 10, documentLineIndex: 10,
documentCharacterOffsetIndex: 22, documentCharacterOffsetIndex: 22,
generatedAbsoluteIndex: 1954, generatedAbsoluteIndex: 1960,
generatedLineIndex: 71, generatedLineIndex: 71,
generatedCharacterOffsetIndex: 21, generatedCharacterOffsetIndex: 21,
contentLength: 1), contentLength: 1),
@ -1473,7 +1440,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 275, documentAbsoluteIndex: 275,
documentLineIndex: 10, documentLineIndex: 10,
documentCharacterOffsetIndex: 23, documentCharacterOffsetIndex: 23,
generatedAbsoluteIndex: 1955, generatedAbsoluteIndex: 1961,
generatedLineIndex: 71, generatedLineIndex: 71,
generatedCharacterOffsetIndex: 22, generatedCharacterOffsetIndex: 22,
contentLength: 4), contentLength: 4),
@ -1481,43 +1448,42 @@ namespace Microsoft.AspNet.Razor.Test.Generator
documentAbsoluteIndex: 279, documentAbsoluteIndex: 279,
documentLineIndex: 10, documentLineIndex: 10,
documentCharacterOffsetIndex: 27, documentCharacterOffsetIndex: 27,
generatedAbsoluteIndex: 1959, generatedAbsoluteIndex: 1965,
generatedLineIndex: 71, generatedLineIndex: 71,
generatedCharacterOffsetIndex: 26, generatedCharacterOffsetIndex: 26,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 307, documentAbsoluteIndex: 307,
documentLineIndex: 11, documentLineIndex: 11,
documentCharacterOffsetIndex: 19, generatedAbsoluteIndex: 2130,
generatedAbsoluteIndex: 2111,
generatedLineIndex: 77, generatedLineIndex: 77,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 19,
contentLength: 6), contentLength: 6),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 321, documentAbsoluteIndex: 321,
documentLineIndex: 11, documentLineIndex: 11,
generatedAbsoluteIndex: 2236, generatedAbsoluteIndex: 2255,
generatedLineIndex: 82, generatedLineIndex: 82,
characterOffsetIndex: 33, characterOffsetIndex: 33,
contentLength: 4), contentLength: 4),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 325, documentAbsoluteIndex: 325,
documentLineIndex: 11, documentLineIndex: 11,
generatedAbsoluteIndex: 2240, generatedAbsoluteIndex: 2259,
generatedLineIndex: 82, generatedLineIndex: 82,
characterOffsetIndex: 37, characterOffsetIndex: 37,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 327, documentAbsoluteIndex: 327,
documentLineIndex: 11, documentLineIndex: 11,
generatedAbsoluteIndex: 2242, generatedAbsoluteIndex: 2261,
generatedLineIndex: 82, generatedLineIndex: 82,
characterOffsetIndex: 39, characterOffsetIndex: 39,
contentLength: 8), contentLength: 8),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 335, documentAbsoluteIndex: 335,
documentLineIndex: 11, documentLineIndex: 11,
generatedAbsoluteIndex: 2250, generatedAbsoluteIndex: 2269,
generatedLineIndex: 82, generatedLineIndex: 82,
characterOffsetIndex: 47, characterOffsetIndex: 47,
contentLength: 1), contentLength: 1),
@ -1554,22 +1520,21 @@ namespace Microsoft.AspNet.Razor.Test.Generator
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 339, documentAbsoluteIndex: 339,
documentLineIndex: 7, documentLineIndex: 7,
documentCharacterOffsetIndex: 50, generatedAbsoluteIndex: 1429,
generatedAbsoluteIndex: 1385,
generatedLineIndex: 49, generatedLineIndex: 49,
generatedCharacterOffsetIndex: 6, characterOffsetIndex: 50,
contentLength: 23), contentLength: 23),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 389, documentAbsoluteIndex: 389,
documentLineIndex: 7, documentLineIndex: 7,
generatedAbsoluteIndex: 1692, generatedAbsoluteIndex: 1736,
generatedLineIndex: 56, generatedLineIndex: 56,
characterOffsetIndex: 100, characterOffsetIndex: 100,
contentLength: 4), contentLength: 4),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 424, documentAbsoluteIndex: 424,
documentLineIndex: 9, documentLineIndex: 9,
generatedAbsoluteIndex: 1775, generatedAbsoluteIndex: 1819,
generatedLineIndex: 61, generatedLineIndex: 61,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 15), contentLength: 15),

View File

@ -6,6 +6,8 @@ using System.Threading;
using System.Web.WebPages.TestUtils; using System.Web.WebPages.TestUtils;
using Microsoft.AspNet.Razor.Editor; using Microsoft.AspNet.Razor.Editor;
using Microsoft.AspNet.Razor.Parser; using Microsoft.AspNet.Razor.Parser;
using Microsoft.AspNet.Razor.Parser.SyntaxTree;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Microsoft.AspNet.Razor.Test.Framework; using Microsoft.AspNet.Razor.Test.Framework;
using Microsoft.AspNet.Razor.Test.Generator; using Microsoft.AspNet.Razor.Test.Generator;
using Microsoft.AspNet.Razor.Test.Utils; using Microsoft.AspNet.Razor.Test.Utils;
@ -33,6 +35,70 @@ namespace Microsoft.AspNet.Razor.Test.Editor
Assert.Throws<ArgumentException>("sourceFileName", () => new RazorEditorParser(CreateHost(), string.Empty)); Assert.Throws<ArgumentException>("sourceFileName", () => new RazorEditorParser(CreateHost(), string.Empty));
} }
[Theory]
[InlineData(" ")]
[InlineData("\r\n")]
[InlineData("abcdefg")]
[InlineData("\f\r\n abcd \t")]
public void TreesAreDifferentReturnsFalseForAddedContent(string content)
{
// Arrange
var factory = SpanFactory.CreateCsHtml();
var blockFactory = new BlockFactory(factory);
var original = new MarkupBlock(
blockFactory.MarkupTagBlock("<p>"),
blockFactory.TagHelperBlock(
tagName: "div",
tagMode: TagMode.StartTagAndEndTag,
start: new SourceLocation(3, 0, 3),
startTag: blockFactory.MarkupTagBlock("<div>"),
children: new SyntaxTreeNode[]
{
factory.Markup($"{Environment.NewLine}{Environment.NewLine}")
},
endTag: blockFactory.MarkupTagBlock("</div>")),
blockFactory.MarkupTagBlock("</p>"));
factory.Reset();
var modified = new MarkupBlock(
blockFactory.MarkupTagBlock("<p>"),
blockFactory.TagHelperBlock(
tagName: "div",
tagMode: TagMode.StartTagAndEndTag,
start: new SourceLocation(3, 0, 3),
startTag: blockFactory.MarkupTagBlock("<div>"),
children: new SyntaxTreeNode[]
{
factory.Markup($"{Environment.NewLine}{content}{Environment.NewLine}")
},
endTag: blockFactory.MarkupTagBlock("</div>")),
blockFactory.MarkupTagBlock("</p>"));
original.LinkNodes();
modified.LinkNodes();
var oldBuffer = new StringTextBuffer($"<p><div>{Environment.NewLine}{Environment.NewLine}</div></p>");
var newBuffer = new StringTextBuffer(
$"<p><div>{Environment.NewLine}{content}{Environment.NewLine}</div></p>");
// Act
var treesAreDifferent = BackgroundParser.TreesAreDifferent(
original,
modified,
new[]
{
new TextChange(
position: 8 + Environment.NewLine.Length,
oldLength: 0,
oldBuffer: oldBuffer,
newLength: content.Length,
newBuffer: newBuffer)
});
// Assert
Assert.False(treesAreDifferent);
}
[Fact] [Fact]
public void TreesAreDifferentReturnsTrueIfTreeStructureIsDifferent() public void TreesAreDifferentReturnsTrueIfTreeStructureIsDifferent()
{ {

View File

@ -3,6 +3,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.AspNet.Razor.Parser.SyntaxTree; using Microsoft.AspNet.Razor.Parser.SyntaxTree;
using Microsoft.AspNet.Razor.Parser.TagHelpers;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
namespace Microsoft.AspNet.Razor.Test.Framework namespace Microsoft.AspNet.Razor.Test.Framework
{ {
@ -55,5 +57,27 @@ namespace Microsoft.AspNet.Razor.Test.Framework
_factory.Markup(content).Accepts(acceptedCharacters) _factory.Markup(content).Accepts(acceptedCharacters)
); );
} }
public Block TagHelperBlock(
string tagName,
TagMode tagMode,
SourceLocation start,
Block startTag,
SyntaxTreeNode[] children,
Block endTag)
{
var builder = new TagHelperBlockBuilder(
tagName,
tagMode,
attributes: new List<KeyValuePair<string, SyntaxTreeNode>>(),
children: children)
{
Start = start,
SourceStartTag = startTag,
SourceEndTag = endTag
};
return builder.Build();
}
} }
} }

View File

@ -0,0 +1,108 @@
// 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.AspNet.Razor.Parser.SyntaxTree;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Microsoft.AspNet.Razor.Test.Framework;
using Xunit;
namespace Microsoft.AspNet.Razor.Parser.TagHelpers
{
public class TagHelperBlockTest
{
[Fact]
public void FlattenFlattensSelfClosingTagHelpers()
{
// Arrange
var spanFactory = SpanFactory.CreateCsHtml();
var blockFactory = new BlockFactory(spanFactory);
var tagHelper = (TagHelperBlock)blockFactory.TagHelperBlock(
tagName: "input",
tagMode: TagMode.SelfClosing,
start: SourceLocation.Zero,
startTag: blockFactory.MarkupTagBlock("<input />"),
children: new SyntaxTreeNode[0],
endTag: null);
spanFactory.Reset();
var expectedNode = spanFactory.Markup("<input />");
// Act
var flattenedNodes = tagHelper.Flatten();
// Assert
var node = Assert.Single(flattenedNodes);
Assert.True(node.EquivalentTo(expectedNode));
}
[Fact]
public void FlattenFlattensStartAndEndTagTagHelpers()
{
// Arrange
var spanFactory = SpanFactory.CreateCsHtml();
var blockFactory = new BlockFactory(spanFactory);
var tagHelper = (TagHelperBlock)blockFactory.TagHelperBlock(
tagName: "div",
tagMode: TagMode.StartTagAndEndTag,
start: SourceLocation.Zero,
startTag: blockFactory.MarkupTagBlock("<div>"),
children: new SyntaxTreeNode[0],
endTag: blockFactory.MarkupTagBlock("</div>"));
spanFactory.Reset();
var expectedStartTag = spanFactory.Markup("<div>");
var expectedEndTag = spanFactory.Markup("</div>");
// Act
var flattenedNodes = tagHelper.Flatten();
// Assert
Assert.Collection(
flattenedNodes,
first =>
{
Assert.True(first.EquivalentTo(expectedStartTag));
},
second =>
{
Assert.True(second.EquivalentTo(expectedEndTag));
});
}
[Fact]
public void FlattenFlattensStartAndEndTagWithChildrenTagHelpers()
{
// Arrange
var spanFactory = SpanFactory.CreateCsHtml();
var blockFactory = new BlockFactory(spanFactory);
var tagHelper = (TagHelperBlock)blockFactory.TagHelperBlock(
tagName: "div",
tagMode: TagMode.StartTagAndEndTag,
start: SourceLocation.Zero,
startTag: blockFactory.MarkupTagBlock("<div>"),
children: new SyntaxTreeNode[] { spanFactory.Markup("Hello World") },
endTag: blockFactory.MarkupTagBlock("</div>"));
spanFactory.Reset();
var expectedStartTag = spanFactory.Markup("<div>");
var expectedChildren = spanFactory.Markup("Hello World");
var expectedEndTag = spanFactory.Markup("</div>");
// Act
var flattenedNodes = tagHelper.Flatten();
// Assert
Assert.Collection(
flattenedNodes,
first =>
{
Assert.True(first.EquivalentTo(expectedStartTag));
},
second =>
{
Assert.True(second.EquivalentTo(expectedChildren));
},
third =>
{
Assert.True(third.EquivalentTo(expectedEndTag));
});
}
}
}

View File

@ -55,7 +55,7 @@ namespace TestOutput
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("2000 + "); WriteLiteral("2000 + ");
#line 6 "BasicTagHelpers.cshtml" #line 6 "BasicTagHelpers.cshtml"
Write(ViewBag.DefaultInterval); Write(ViewBag.DefaultInterval);
#line default #line default
#line hidden #line hidden

View File

@ -36,7 +36,7 @@ namespace TestOutput
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
__InputTagHelper2 = CreateTagHelper<InputTagHelper2>(); __InputTagHelper2 = CreateTagHelper<InputTagHelper2>();
#line 6 "BasicTagHelpers.cshtml" #line 6 "BasicTagHelpers.cshtml"
__o = ViewBag.DefaultInterval; __o = ViewBag.DefaultInterval;
#line default #line default
#line hidden #line hidden

View File

@ -56,7 +56,7 @@ namespace TestOutput
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("2000 + "); WriteLiteral("2000 + ");
#line 6 "BasicTagHelpers.cshtml" #line 6 "BasicTagHelpers.cshtml"
Write(ViewBag.DefaultInterval); Write(ViewBag.DefaultInterval);
#line default #line default
#line hidden #line hidden

View File

@ -70,7 +70,7 @@ if (true)
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
__InputTagHelper2 = CreateTagHelper<InputTagHelper2>(); __InputTagHelper2 = CreateTagHelper<InputTagHelper2>();
#line 16 "ComplexTagHelpers.cshtml" #line 16 "ComplexTagHelpers.cshtml"
__o = checkbox; __o = checkbox;
#line default #line default
#line hidden #line hidden
@ -85,7 +85,7 @@ __o = checkbox;
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
__InputTagHelper2 = CreateTagHelper<InputTagHelper2>(); __InputTagHelper2 = CreateTagHelper<InputTagHelper2>();
#line 17 "ComplexTagHelpers.cshtml" #line 17 "ComplexTagHelpers.cshtml"
__o = true ? "checkbox" : "anything"; __o = true ? "checkbox" : "anything";
#line default #line default
#line hidden #line hidden
@ -94,31 +94,31 @@ __o = true ? "checkbox" : "anything";
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
__InputTagHelper2 = CreateTagHelper<InputTagHelper2>(); __InputTagHelper2 = CreateTagHelper<InputTagHelper2>();
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
if(true) { if(true) {
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
@ -133,7 +133,7 @@ if(true) {
__PTagHelper = CreateTagHelper<PTagHelper>(); __PTagHelper = CreateTagHelper<PTagHelper>();
#line 8 "ComplexTagHelpers.cshtml" #line 8 "ComplexTagHelpers.cshtml"
__o = DateTime.Now; __o = DateTime.Now;
#line default #line default
#line hidden #line hidden

View File

@ -118,7 +118,7 @@ namespace TestOutput
__tagHelperExecutionContext.Add(__InputTagHelper2); __tagHelperExecutionContext.Add(__InputTagHelper2);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
#line 16 "ComplexTagHelpers.cshtml" #line 16 "ComplexTagHelpers.cshtml"
WriteLiteral(checkbox); WriteLiteral(checkbox);
#line default #line default
#line hidden #line hidden
@ -158,7 +158,7 @@ WriteLiteral(checkbox);
__tagHelperExecutionContext.Add(__InputTagHelper2); __tagHelperExecutionContext.Add(__InputTagHelper2);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
#line 17 "ComplexTagHelpers.cshtml" #line 17 "ComplexTagHelpers.cshtml"
WriteLiteral(true ? "checkbox" : "anything"); WriteLiteral(true ? "checkbox" : "anything");
#line default #line default
#line hidden #line hidden
@ -183,33 +183,33 @@ WriteLiteral(true ? "checkbox" : "anything");
__tagHelperExecutionContext.Add(__InputTagHelper2); __tagHelperExecutionContext.Add(__InputTagHelper2);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
if(true) { if(true) {
#line default #line default
#line hidden #line hidden
WriteLiteral("checkbox"); WriteLiteral("checkbox");
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
WriteLiteral("anything"); WriteLiteral("anything");
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden

View File

@ -32,170 +32,170 @@ namespace TestOutput
{ {
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
#line 3 "DynamicAttributeTagHelpers.cshtml" #line 3 "DynamicAttributeTagHelpers.cshtml"
__o = DateTime.Now; __o = DateTime.Now;
#line default #line default
#line hidden #line hidden
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
__o = string.Empty; __o = string.Empty;
#line default #line default
#line hidden #line hidden
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
__o = false; __o = false;
#line default #line default
#line hidden #line hidden
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
#line 7 "DynamicAttributeTagHelpers.cshtml" #line 7 "DynamicAttributeTagHelpers.cshtml"
__o = DateTime.Now; __o = DateTime.Now;
#line default #line default
#line hidden #line hidden
__InputTagHelper.Bound = string.Empty; __InputTagHelper.Bound = string.Empty;
#line 7 "DynamicAttributeTagHelpers.cshtml" #line 7 "DynamicAttributeTagHelpers.cshtml"
__o = DateTime.Now; __o = DateTime.Now;
#line default #line default
#line hidden #line hidden
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
__o = long.MinValue; __o = long.MinValue;
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
__o = string.Empty; __o = string.Empty;
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
__o = false; __o = false;
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
__o = int.MaxValue; __o = int.MaxValue;
#line default #line default
#line hidden #line hidden
__InputTagHelper.Bound = string.Empty; __InputTagHelper.Bound = string.Empty;
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
__o = long.MinValue; __o = long.MinValue;
#line default #line default
#line hidden #line hidden
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
__o = string.Empty; __o = string.Empty;
#line default #line default
#line hidden #line hidden
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
__o = false; __o = false;
#line default #line default
#line hidden #line hidden
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
__o = int.MaxValue; __o = int.MaxValue;
#line default #line default
#line hidden #line hidden
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
#line 12 "DynamicAttributeTagHelpers.cshtml" #line 12 "DynamicAttributeTagHelpers.cshtml"
__o = long.MinValue; __o = long.MinValue;
#line default #line default
#line hidden #line hidden
#line 12 "DynamicAttributeTagHelpers.cshtml" #line 12 "DynamicAttributeTagHelpers.cshtml"
__o = DateTime.Now; __o = DateTime.Now;
#line default #line default
#line hidden #line hidden
#line 12 "DynamicAttributeTagHelpers.cshtml" #line 12 "DynamicAttributeTagHelpers.cshtml"
__o = int.MaxValue; __o = int.MaxValue;
#line default #line default
#line hidden #line hidden
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
__o = string.Empty; __o = string.Empty;
#line default #line default
#line hidden #line hidden
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
__o = false; __o = false;
#line default #line default
#line hidden #line hidden
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden

View File

@ -56,7 +56,7 @@ AddHtmlAttributeValue(" ", 57, DateTime.Now, 58, 14, false);
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 2); BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 2);
AddHtmlAttributeValue("", 95, new Template((__razor_attribute_value_writer) => { AddHtmlAttributeValue("", 95, new Template((__razor_attribute_value_writer) => {
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
@ -69,20 +69,20 @@ WriteTo(__razor_attribute_value_writer, string.Empty);
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
Instrumentation.BeginContext(132, 5, false); Instrumentation.BeginContext(132, 5, false);
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
WriteTo(__razor_attribute_value_writer, false); WriteTo(__razor_attribute_value_writer, false);
#line default #line default
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 5 "DynamicAttributeTagHelpers.cshtml" #line 5 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
@ -107,7 +107,7 @@ WriteTo(__razor_attribute_value_writer, false);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("prefix "); WriteLiteral("prefix ");
#line 7 "DynamicAttributeTagHelpers.cshtml" #line 7 "DynamicAttributeTagHelpers.cshtml"
WriteLiteral(DateTime.Now); WriteLiteral(DateTime.Now);
#line default #line default
#line hidden #line hidden
@ -139,42 +139,42 @@ AddHtmlAttributeValue(" ", 212, DateTime.Now, 213, 14, false);
__tagHelperExecutionContext.Add(__InputTagHelper); __tagHelperExecutionContext.Add(__InputTagHelper);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
WriteLiteral(long.MinValue); WriteLiteral(long.MinValue);
#line default #line default
#line hidden #line hidden
WriteLiteral(" "); WriteLiteral(" ");
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
WriteLiteral(string.Empty); WriteLiteral(string.Empty);
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
WriteLiteral(false); WriteLiteral(false);
#line default #line default
#line hidden #line hidden
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" "); WriteLiteral(" ");
#line 9 "DynamicAttributeTagHelpers.cshtml" #line 9 "DynamicAttributeTagHelpers.cshtml"
WriteLiteral(int.MaxValue); WriteLiteral(int.MaxValue);
#line default #line default
#line hidden #line hidden
@ -189,33 +189,33 @@ AddHtmlAttributeValue("", 347, long.MinValue, 347, 14, false);
#line hidden #line hidden
AddHtmlAttributeValue(" ", 361, new Template((__razor_attribute_value_writer) => { AddHtmlAttributeValue(" ", 361, new Template((__razor_attribute_value_writer) => {
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
Instrumentation.BeginContext(376, 12, false); Instrumentation.BeginContext(376, 12, false);
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
WriteTo(__razor_attribute_value_writer, string.Empty); WriteTo(__razor_attribute_value_writer, string.Empty);
#line default #line default
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
Instrumentation.BeginContext(399, 5, false); Instrumentation.BeginContext(399, 5, false);
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
WriteTo(__razor_attribute_value_writer, false); WriteTo(__razor_attribute_value_writer, false);
#line default #line default
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 10 "DynamicAttributeTagHelpers.cshtml" #line 10 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden
@ -276,7 +276,7 @@ AddHtmlAttributeValue(" ", 490, int.MaxValue, 491, 14, false);
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 1); BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 1);
AddHtmlAttributeValue("", 528, new Template((__razor_attribute_value_writer) => { AddHtmlAttributeValue("", 528, new Template((__razor_attribute_value_writer) => {
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
if (true) { if (true) {
#line default #line default
#line hidden #line hidden
@ -289,20 +289,20 @@ WriteTo(__razor_attribute_value_writer, string.Empty);
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
} else { } else {
#line default #line default
#line hidden #line hidden
Instrumentation.BeginContext(565, 5, false); Instrumentation.BeginContext(565, 5, false);
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
WriteTo(__razor_attribute_value_writer, false); WriteTo(__razor_attribute_value_writer, false);
#line default #line default
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 14 "DynamicAttributeTagHelpers.cshtml" #line 14 "DynamicAttributeTagHelpers.cshtml"
} }
#line default #line default
#line hidden #line hidden

View File

@ -39,7 +39,7 @@ namespace TestOutput
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
__InputTagHelper2 = CreateTagHelper<InputTagHelper2>(); __InputTagHelper2 = CreateTagHelper<InputTagHelper2>();
#line 6 "EscapedTagHelpers.cshtml" #line 6 "EscapedTagHelpers.cshtml"
__o = DateTime.Now; __o = DateTime.Now;
#line default #line default
#line hidden #line hidden

View File

@ -47,7 +47,7 @@ namespace TestOutput
__tagHelperExecutionContext.Add(__InputTagHelper2); __tagHelperExecutionContext.Add(__InputTagHelper2);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
#line 6 "EscapedTagHelpers.cshtml" #line 6 "EscapedTagHelpers.cshtml"
WriteLiteral(DateTime.Now); WriteLiteral(DateTime.Now);
#line default #line default
#line hidden #line hidden

View File

@ -47,7 +47,7 @@ namespace TestOutput
__InputTagHelper = CreateTagHelper<InputTagHelper>(); __InputTagHelper = CreateTagHelper<InputTagHelper>();
__InputTagHelper2 = CreateTagHelper<InputTagHelper2>(); __InputTagHelper2 = CreateTagHelper<InputTagHelper2>();
#line 8 "NestedScriptTagTagHelpers.cshtml" #line 8 "NestedScriptTagTagHelpers.cshtml"
__o = ViewBag.DefaultInterval; __o = ViewBag.DefaultInterval;
#line default #line default
#line hidden #line hidden

View File

@ -60,7 +60,7 @@ namespace TestOutput
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("2000 + "); WriteLiteral("2000 + ");
#line 8 "NestedScriptTagTagHelpers.cshtml" #line 8 "NestedScriptTagTagHelpers.cshtml"
Write(ViewBag.DefaultInterval); Write(ViewBag.DefaultInterval);
#line default #line default
#line hidden #line hidden

View File

@ -105,7 +105,7 @@ __InputTagHelper1.IntProperty = 42;
__InputTagHelper1.StringDictionaryProperty["paprika"] = "another string"; __InputTagHelper1.StringDictionaryProperty["paprika"] = "another string";
__InputTagHelper2.StringDictionaryProperty["paprika"] = __InputTagHelper1.StringDictionaryProperty["paprika"]; __InputTagHelper2.StringDictionaryProperty["paprika"] = __InputTagHelper1.StringDictionaryProperty["paprika"];
#line 21 "PrefixedAttributeTagHelpers.cshtml" #line 21 "PrefixedAttributeTagHelpers.cshtml"
__o = literate; __o = literate;
#line default #line default
#line hidden #line hidden

View File

@ -176,7 +176,7 @@ __InputTagHelper2.IntDictionaryProperty["grabber"] = 42;
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("literate "); WriteLiteral("literate ");
#line 21 "PrefixedAttributeTagHelpers.cshtml" #line 21 "PrefixedAttributeTagHelpers.cshtml"
WriteLiteral(literate); WriteLiteral(literate);
#line default #line default
#line hidden #line hidden

View File

@ -176,7 +176,7 @@ __InputTagHelper1.IntProperty = 42;
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("literate "); WriteLiteral("literate ");
#line 21 "PrefixedAttributeTagHelpers.cshtml" #line 21 "PrefixedAttributeTagHelpers.cshtml"
WriteLiteral(literate); WriteLiteral(literate);
#line default #line default
#line hidden #line hidden

View File

@ -52,7 +52,7 @@ namespace TestOutput
Instrumentation.EndContext(); Instrumentation.EndContext();
Instrumentation.BeginContext(313, 4, false); Instrumentation.BeginContext(313, 4, false);
#line 11 "TagHelpersInSection.cshtml" #line 11 "TagHelpersInSection.cshtml"
Write(code); Write(code);
#line default #line default
#line hidden #line hidden
@ -76,7 +76,7 @@ namespace TestOutput
StartTagHelperWritingScope(); StartTagHelperWritingScope();
WriteLiteral("Current Time: "); WriteLiteral("Current Time: ");
#line 9 "TagHelpersInSection.cshtml" #line 9 "TagHelpersInSection.cshtml"
WriteLiteral(DateTime.Now); WriteLiteral(DateTime.Now);
#line default #line default
#line hidden #line hidden

View File

@ -46,7 +46,7 @@ namespace TestOutput
__tagHelperExecutionContext.AddTagHelperAttribute("age", __PTagHelper.Age); __tagHelperExecutionContext.AddTagHelperAttribute("age", __PTagHelper.Age);
StartTagHelperWritingScope(); StartTagHelperWritingScope();
#line 7 "TagHelpersWithWeirdlySpacedAttributes.cshtml" #line 7 "TagHelpersWithWeirdlySpacedAttributes.cshtml"
Write(true); Write(true);
#line default #line default
#line hidden #line hidden

View File

@ -46,7 +46,7 @@ namespace TestOutput
#line hidden #line hidden
__PTagHelper = CreateTagHelper<PTagHelper>(); __PTagHelper = CreateTagHelper<PTagHelper>();
#line 8 "TransitionsInTagHelperAttributes.cshtml" #line 8 "TransitionsInTagHelperAttributes.cshtml"
__o = @class; __o = @class;
#line default #line default
#line hidden #line hidden
@ -75,7 +75,7 @@ __o = @class;
#line hidden #line hidden
__PTagHelper = CreateTagHelper<PTagHelper>(); __PTagHelper = CreateTagHelper<PTagHelper>();
#line 12 "TransitionsInTagHelperAttributes.cshtml" #line 12 "TransitionsInTagHelperAttributes.cshtml"
__o = @class; __o = @class;
#line default #line default
#line hidden #line hidden