Rely on Razors MalformedDirective identification for @page.

aspnet/Razor#1448
This commit is contained in:
N. Taylor Mullen 2017-07-05 14:33:06 -07:00
parent b9541be20d
commit 7454c53047
1 changed files with 5 additions and 22 deletions

View File

@ -50,20 +50,16 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
var documentIRNode = codeDocument.GetDocumentIntermediateNode();
if (PageDirective.TryGetPageDirective(documentIRNode, out var pageDirective))
{
if (pageDirective.DirectiveNode is MalformedDirectiveIntermediateNode malformedNode)
{
logger.MalformedPageDirective(sourceDocument.FilePath, malformedNode.Diagnostics);
}
template = pageDirective.RouteTemplate;
return true;
}
template = null;
var visitor = new Visitor();
visitor.Visit(documentIRNode);
if (visitor.MalformedPageDirective != null)
{
logger.MalformedPageDirective(sourceDocument.FilePath, visitor.MalformedPageDirective.Diagnostics);
return true;
}
return false;
}
@ -76,18 +72,5 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
options.ParseOnlyLeadingDirectives = true;
}
}
private class Visitor : IntermediateNodeWalker
{
public MalformedDirectiveIntermediateNode MalformedPageDirective { get; private set; }
public override void VisitMalformedDirective(MalformedDirectiveIntermediateNode node)
{
if (node.Descriptor == PageDirective.Directive)
{
MalformedPageDirective = node;
}
}
}
}
}