diff --git a/src/Psalm/Checker/FunctionLikeChecker.php b/src/Psalm/Checker/FunctionLikeChecker.php
index <HASH>..<HASH> 100644
--- a/src/Psalm/Checker/FunctionLikeChecker.php
+++ b/src/Psalm/Checker/FunctionLikeChecker.php
@@ -853,6 +853,16 @@ abstract class FunctionLikeChecker extends SourceChecker implements StatementsSo
 
         if (!$return_type) {
             if ($inferred_return_type && !$inferred_return_type->isMixed()) {
+                $inferred_return_type = TypeChecker::simplifyUnionType(
+                    ExpressionChecker::fleshOutTypes(
+                        $inferred_return_type,
+                        [],
+                        $this->source->getFQCLN(),
+                        ''
+                    ),
+                    $this->getFileChecker()
+                );
+
                 FileChecker::addDocblockReturnType(
                     $this->source->getFileName(),
                     $this->function->getLine(),
@@ -935,6 +945,8 @@ abstract class FunctionLikeChecker extends SourceChecker implements StatementsSo
                 $this->getFileChecker()
             );
 
+            var_dump($inferred_return_type);
+
             $return_types_different = false;
 
             if (!TypeChecker::isContainedBy($inferred_return_type, $declared_return_type, $this->getFileChecker())) {
Make brand-new return types more accurate