From f7a1cc693cfe1b67480fd8e3bf62f8274b47d1f8 Mon Sep 17 00:00:00 2001 From: Christian N Date: Fri, 1 Jul 2022 21:51:34 +0200 Subject: [PATCH] fix --- CHANGELOG.md | 2 +- extension.neon | 4 ++ .../AppEnvironmentReturnTypeExtension.php | 39 +++++++++++++++++++ tests/Type/GeneralTypeTest.php | 1 + tests/Type/data/blank-helper.php | 12 ++++++ 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/Types/AppEnvironmentReturnTypeExtension.php create mode 100644 tests/Type/data/blank-helper.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f41d81820..758c1d4caf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] * fix: Resolve correct model factory instance when application namespace is empty - +* fix: fix return types for App::environment() [#1303](https://github.com/nunomaduro/larastan/pull/1303) ### Fixed * fix: Remove stubs for `having()` and `orHaving()` QueryBuilder methods by @Maxoulak in [#1258](https://github.com/nunomaduro/larastan/pull/1258) diff --git a/extension.neon b/extension.neon index cb3c337f43..7bb365bb78 100644 --- a/extension.neon +++ b/extension.neon @@ -372,6 +372,10 @@ services: class: NunoMaduro\Larastan\Types\GenericEloquentBuilderTypeNodeResolverExtension tags: - phpstan.phpDoc.typeNodeResolverExtension + - + class: NunoMaduro\Larastan\Types\AppEnvironmentReturnTypeExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension - class: NunoMaduro\Larastan\Types\ModelProperty\ModelPropertyTypeNodeResolverExtension diff --git a/src/Types/AppEnvironmentReturnTypeExtension.php b/src/Types/AppEnvironmentReturnTypeExtension.php new file mode 100644 index 0000000000..5b3b61ba0d --- /dev/null +++ b/src/Types/AppEnvironmentReturnTypeExtension.php @@ -0,0 +1,39 @@ +getName() === 'environment'; + } + + public function getTypeFromMethodCall( + MethodReflection $methodReflection, + MethodCall $methodCall, + Scope $scope + ): Type { + if (count($methodCall->getArgs()) === 0) { + return new StringType(); + } + + return new BooleanType(); + } +} diff --git a/tests/Type/GeneralTypeTest.php b/tests/Type/GeneralTypeTest.php index 65593fadc3..6ecb6b722c 100644 --- a/tests/Type/GeneralTypeTest.php +++ b/tests/Type/GeneralTypeTest.php @@ -20,6 +20,7 @@ public function dataFileAsserts(): iterable yield from $this->gatherAssertTypes(__DIR__.'/data/model-properties-relations.php'); yield from $this->gatherAssertTypes(__DIR__.'/data/route.php'); yield from $this->gatherAssertTypes(__DIR__.'/data/conditionable.php'); + yield from $this->gatherAssertTypes(__DIR__.'/data/blank-helper.php'); } /** diff --git a/tests/Type/data/blank-helper.php b/tests/Type/data/blank-helper.php new file mode 100644 index 0000000000..66269db802 --- /dev/null +++ b/tests/Type/data/blank-helper.php @@ -0,0 +1,12 @@ +environment()); +assertType('bool', app()->environment('local')); +assertType('bool', app()->environment(['local', 'production']));