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;
}
public IEnumerable<Span> Flatten()
public virtual IEnumerable<Span> Flatten()
{
// Create an enumerable that flattens the tree for use by syntax highlighters, etc.
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 />
public override string ToString()
{

View File

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

View File

@ -6,6 +6,8 @@ using System.Threading;
using System.Web.WebPages.TestUtils;
using Microsoft.AspNet.Razor.Editor;
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.Generator;
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));
}
[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]
public void TreesAreDifferentReturnsTrueIfTreeStructureIsDifferent()
{

View File

@ -3,6 +3,8 @@
using System.Collections.Generic;
using Microsoft.AspNet.Razor.Parser.SyntaxTree;
using Microsoft.AspNet.Razor.Parser.TagHelpers;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
namespace Microsoft.AspNet.Razor.Test.Framework
{
@ -55,5 +57,27 @@ namespace Microsoft.AspNet.Razor.Test.Framework
_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();
WriteLiteral("2000 + ");
#line 6 "BasicTagHelpers.cshtml"
Write(ViewBag.DefaultInterval);
Write(ViewBag.DefaultInterval);
#line default
#line hidden

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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