private DirectiveTriviaSyntax ParseElseDirective(SyntaxToken hash, SyntaxToken keyword, bool isActive, bool endIsActive)
{
var eod = ParseEndOfDirective(false);
if (_directiveStack.HasPreviousIfOrElif())
{
var branchTaken = endIsActive && !_directiveStack.PreviousBranchTaken();
return new ElseDirectiveTriviaSyntax(
hash,
keyword,
eod,
endIsActive, branchTaken);
}
if (_directiveStack.HasUnfinishedIf())
return WithDiagnostic(new BadDirectiveTriviaSyntax(hash, keyword, eod, isActive), DiagnosticId.EndIfDirectiveExpected, $"Expected #endif directive");
return WithDiagnostic(new BadDirectiveTriviaSyntax(hash, keyword, eod, isActive), DiagnosticId.UnexpectedDirective, $"Unexpected directive: '{keyword}'");
}