PHPSA\Analyzer\Pass\Expression\ArrayIllegalOffsetType::analyzeExpression PHP Method

analyzeExpression() private method

private analyzeExpression ( PhpParser\Node\Expr $expr, Context $context ) : boolean
$expr PhpParser\Node\Expr
$context PHPSA\Context
return boolean
    private function analyzeExpression(Expr $expr, Context $context)
    {
        $compiledKey = $context->getExpressionCompiler()->compile($expr);
        if (!$compiledKey->isTypeKnown() || $compiledKey->isScalar()) {
            return false;
        }
        $keyType = $compiledKey->getTypeName();
        if ($compiledKey->isObject() && $compiledKey->getValue()) {
            $keyType = get_class($compiledKey->getValue());
        }
        if ($expr instanceof Expr\Variable) {
            $message = sprintf('Illegal array offset type %s for key %s.', $keyType, '$' . $expr->name);
        } else {
            $message = sprintf('Illegal array offset type %s.', $keyType);
        }
        $context->notice('array.illegal_offset_type', $message, $expr);
        return true;
    }