Example #1
0
        public override void EnterExprCaseClause(GoParser.ExprCaseClauseContext context)
        {
            // exprSwitchStmt
            //     : 'switch'(simpleStmt ';') ? expression ? '{' exprCaseClause * '}'

            // exprCaseClause
            //     : exprSwitchCase ':' statementList

            // exprSwitchCase
            //     : 'case' expressionList | 'default'

            ExprSwitchStatement exprSwitchStatement = m_exprSwitchStatements.Peek();

            if (context.exprSwitchCase().expressionList() is null)
            {
                // Handle default case
                exprSwitchStatement.defaultCase = new ExprCaseStatement
                {
                    leftComments = CheckForCommentsLeft(context.statementList(), 1)
                };
            }
            else
            {
                // Handle new case
                exprSwitchStatement.caseStatements.Add(context, new ExprCaseStatement
                {
                    leftComments = CheckForCommentsLeft(context.statementList(), 1)
                });
            }

            IndentLevel++;

            PushBlock();
        }
Example #2
0
        public override void ExitExprCaseClause(GoParser.ExprCaseClauseContext context)
        {
            // exprSwitchStmt
            //     : 'switch'(simpleStmt ';') ? expression ? '{' exprCaseClause * '}'

            // exprCaseClause
            //     : exprSwitchCase ':' statementList

            // exprSwitchCase
            //     : 'case' expressionList | 'default'

            IndentLevel--;

            ExprSwitchStatement exprSwitchStatement = m_exprSwitchStatements.Peek();

            GoParser.ExpressionListContext expressionList = context.exprSwitchCase().expressionList();

            if (expressionList is null)
            {
                exprSwitchStatement.defaultCase.block = PopBlock(false);
            }
            else
            {
                if (!ExpressionLists.TryGetValue(expressionList, out ExpressionInfo[] expressions))