ShaderTools.Hlsl.Parser.DirectiveParser.ParseElseDirective C# (CSharp) Method

ParseElseDirective() private method

private ParseElseDirective ( SyntaxToken hash, SyntaxToken keyword, bool isActive, bool endIsActive ) : DirectiveTriviaSyntax
hash SyntaxToken
keyword SyntaxToken
isActive bool
endIsActive bool
return DirectiveTriviaSyntax
        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}'");
        }