,error_levels?:string[]}> */ public function providerValidCodeParse(): iterable { return [ 'addThrowableInterfaceType' => [ 'getMessage(); }', ], 'rethrowInterfaceExceptionWithoutInvalidThrow' => [ ' [ ' [ '$worked' => 'bool', ], ], 'alwaysReturnsBecauseCatchDoesNothing' => [ ' [ ' [ 'getMessage(); // do nothing here either } finally { return true; } }', ], 'stopAnalysisAfterBadTryIssue' => [ 'bar(); } catch (\TypeError $e) { $foo = false; } if (!$foo) {}', 'assertions' => [], 'error_message' => [ 'UndefinedGlobalVariable' => \Psalm\Config::REPORT_INFO, 'MixedMethodCall' => \Psalm\Config::REPORT_INFO, ], ], 'issetAfterTryCatchWithoutAssignmentInCatch' => [ ' [ ' [ ' [ ' [ ' [ ' [ ' [ ' [ 'getMessage();' ], 'varSetInOnlyCatchWithNull' => [ 'getMessage();' ], 'allowDoubleNestedLoop' => [ ' [ ' [ ' [ ' */ public function providerInvalidCodeParse(): iterable { return [ 'invalidCatchClass' => [ ' 'InvalidCatch', ], 'invalidThrowClass' => [ ' 'InvalidThrow', ], 'theresNoCatch' => [ ' 'InvalidReturnType', ], 'catchDoesNotReturn' => [ ' 'InvalidReturnType', ], 'catchWithNoReturnAndFinallyDoesNotReturn' => [ 'getMessage(); // do nothing here either } finally { } }', 'error_message' => 'InvalidReturnType', ], 'catchWithNoReturnAndNoFinally' => [ 'getMessage(); // do nothing here either } }', 'error_message' => 'InvalidReturnType', ], 'preventPossiblyUndefinedVarInTry' => [ ' 'PossiblyUndefinedGlobalVariable', ], 'possiblyNullReturnInTry' => [ ' 'NullableReturnStatement' ], 'isAlwaysDefinedInFinally' => [ ' 'RedundantCondition' ], ]; } }