public function visitDim(Node $node) : Context
{
// Make the right type a generic (i.e. int -> int[])
$right_type = $this->right_type->asGenericArrayTypes();
if ($node->children['expr']->kind == \ast\AST_VAR) {
$variable_name = (new ContextNode($this->code_base, $this->context, $node))->getVariableName();
if (Variable::isSuperglobalVariableWithName($variable_name)) {
return $this->analyzeSuperglobalDim($node, $variable_name);
}
}
// Recurse into whatever we're []'ing
$context = (new AssignmentVisitor($this->code_base, $this->context, $node, $right_type, true))($node->children['expr']);
return $context;
}