public function getDiagnosticForNode()

in src/Node/Statement/BreakOrContinueStatement.php [36:72]


    public function getDiagnosticForNode() {
        if ($this->breakoutLevel === null) {
            return null;
        }

        $breakoutLevel = $this->breakoutLevel;
        while ($breakoutLevel instanceof Node\Expression\ParenthesizedExpression) {
            $breakoutLevel = $breakoutLevel->expression;
        }

        if (
            $breakoutLevel instanceof Node\NumericLiteral
            && $breakoutLevel->children->kind === TokenKind::IntegerLiteralToken
        ) {
            $literalString = $breakoutLevel->getText();
            $firstTwoChars = \substr($literalString, 0, 2);

            if ($firstTwoChars === '0b' || $firstTwoChars === '0B') {
                if (\bindec(\substr($literalString, 2)) > 0) {
                    return null;
                }
            }
            else if (\intval($literalString, 0) > 0) {
                return null;
            }
        }

        $start = $breakoutLevel->getStartPosition();
        $end = $breakoutLevel->getEndPosition();

        return new Diagnostic(
            DiagnosticKind::Error,
            "Positive integer literal expected.",
            $start,
            $end - $start
        );
    }