Antlr4.Semantics.SymbolChecks.CheckForTypeMismatch C# (CSharp) Method

CheckForTypeMismatch() private method

private CheckForTypeMismatch ( LabelElementPair prevLabelPair, LabelElementPair labelPair ) : void
prevLabelPair Antlr4.Tool.LabelElementPair
labelPair Antlr4.Tool.LabelElementPair
return void
        internal virtual void CheckForTypeMismatch(LabelElementPair prevLabelPair, LabelElementPair labelPair)
        {
            // label already defined; if same type, no problem
            if (prevLabelPair.type != labelPair.type)
            {
                string typeMismatchExpr = labelPair.type + "!=" + prevLabelPair.type;
                errMgr.GrammarError(
                    ErrorType.LABEL_TYPE_CONFLICT,
                    g.fileName,
                    labelPair.label.Token,
                    labelPair.label.Text,
                    typeMismatchExpr);
            }

            if (!prevLabelPair.element.Text.Equals(labelPair.element.Text) &&
                (prevLabelPair.type.Equals(LabelType.RULE_LABEL) || prevLabelPair.type.Equals(LabelType.RULE_LIST_LABEL)) &&
                (labelPair.type.Equals(LabelType.RULE_LABEL) || labelPair.type.Equals(LabelType.RULE_LIST_LABEL)))
            {

                string prevLabelOp = prevLabelPair.type.Equals(LabelType.RULE_LIST_LABEL) ? "+=" : "=";
                string labelOp = labelPair.type.Equals(LabelType.RULE_LIST_LABEL) ? "+=" : "=";
                errMgr.GrammarError(
                        ErrorType.LABEL_TYPE_CONFLICT,
                        g.fileName,
                        labelPair.label.Token,
                        labelPair.label.Text + labelOp + labelPair.element.Text,
                        prevLabelPair.label.Text + prevLabelOp + prevLabelPair.element.Text);
            }
        }