[ ' [ '$a' => 'mixed', ], 'error_levels' => ['MixedAssignment'], ], 'nullCoalesce' => [ ' [ '$a' => 'mixed', ], 'error_levels' => ['MixedAssignment'], ], 'nullCoalesceWithGoodVariable' => [ ' 5 ? "hello" : null; $a = $b ?? null;', 'assertions' => [ '$a' => 'string|null', ], ], 'issetKeyedOffset' => [ ' [ '$foo[\'a\']' => 'mixed', ], 'error_levels' => [], 'scope_vars' => [ '$foo' => \Psalm\Type::getArray(), ], ], 'issetKeyedOffsetORFalse' => [ ' "bar"] : false; if (isset($bar["foo"])) { takesString($bar["foo"]); }', 'assertions' => [], 'error_levels' => ['PossiblyInvalidArrayAccess'], 'scope_vars' => [ '$foo' => \Psalm\Type::getArray(), ], ], 'nullCoalesceKeyedOffset' => [ ' [ '$foo[\'a\']' => 'mixed', ], 'error_levels' => ['MixedAssignment'], 'scope_vars' => [ '$foo' => \Psalm\Type::getArray(), ], ], 'noRedundantConditionOnMixed' => [ ' [], 'error_levels' => ['MixedAssignment', 'MixedArrayAccess'], ], 'testUnset' => [ ' [ ' [ "foo" => "bar", ], "groups" => [ "foo" => "bar", "hide" => rand() % 2 > 0, ], ]; foreach ($arr as $item) { if (!isset($item["hide"]) || !$item["hide"]) {} }', ], ]; } /** * @return array */ public function providerFileCheckerInvalidCodeParse() { return [ 'complainAboutBadCallInIsset' => [ ' 'UndefinedMethod', ], ]; } }