Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Fixed bugs found by psalm #40610

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 1, 2021
Merged

Fixed bugs found by psalm #40610

merged 1 commit into from
Apr 1, 2021

Conversation

Nyholm
Copy link
Member

@Nyholm Nyholm commented Mar 28, 2021

Q A
Branch? 4.4
Bug fix? yes
New feature? no
Deprecations? no
Tickets
License MIT
Doc PR

When running psalm for branch 4.4, we get around 1500 errors. I browsed though them all and here is a small PR with the actual bugs I think should be fixed.

I'll make review comments about them below.

@@ -226,7 +226,7 @@ private function displayJson(OutputInterface $output, array $filesInfo)
return min($errors, 1);
}

private function renderException(OutputInterface $output, string $template, Error $exception, string $file = null)
private function renderException(SymfonyStyle $output, string $template, Error $exception, string $file = null)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a minor. We pass a SymfonyStyle and we use the $object as a SymfonyStyle.

@@ -182,7 +182,7 @@ public function getBcc(): array
*/
public function setPriority(int $priority): self
{
$this->message->setPriority($priority);
$this->message->priority($priority);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no function called setPriority. However, the Email::priority() exists.

Im not sure if I should rename WrappedTemplatedEmail::setPriority() to priority() too.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the class is internal, no need to care about renaming, it won't improve anything

@@ -1564,7 +1564,7 @@ public function getContent($asResource = false)
*/
public function getETags()
{
return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, \PREG_SPLIT_NO_EMPTY);
return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), -1, \PREG_SPLIT_NO_EMPTY);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

preg_split's third argument supports null in PHP 7. However, in PHP 8 it is required to be an int.

From PHPStorm's stubs:

If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1, 0 or NULL means "no limit" and, as is standard across PHP, you can use NULL to skip to the flags parameter.

From the docs (PHP 8 ready):

If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1 or 0 means "no limit".

@@ -95,5 +95,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$this->server->listen(function (Data $data, array $context, int $clientId) use ($descriptor, $io) {
$descriptor->describe($io, $data, $context, $clientId);
});

return 0;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a command that does not return an int.

@@ -82,7 +82,7 @@ public static function prepare($values, $objectsPool, &$refsPool, &$objectsCount
}

if (!\is_array($properties = $value->__serialize())) {
throw new \Typerror($class.'::__serialize() must return an array');
throw new \TypeError($class.'::__serialize() must return an array');
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo

@@ -43,7 +43,7 @@ public static function getSubscribedServices(): array
}

if (self::class === $method->getDeclaringClass()->name && ($returnType = $method->getReturnType()) && !$returnType->isBuiltin()) {
$services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $type);
$services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The variable $type is never defined in this class. I assume we mean $returnType.

@@ -102,7 +102,7 @@ public function setChanges(array $changes)
/**
* Sets a factory.
*
* @param string|array|Reference $factory A PHP function, reference or an array containing a class/Reference and a method to call
* @param string|array|Reference|null $factory A PHP function, reference or an array containing a class/Reference and a method to call
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also a minor.

The SessionPass is passing "null" as parameter to this method to reset the factory.

@@ -59,7 +59,7 @@ public function copy($originFile, $targetFile, $overwriteNewerFiles = false)
}

// Stream context created to allow files overwrite when using FTP stream wrapper - disabled by default
if (false === $target = @fopen($targetFile, 'w', null, stream_context_create(['ftp' => ['overwrite' => true]]))) {
if (false === $target = @fopen($targetFile, 'w', false, stream_context_create(['ftp' => ['overwrite' => true]]))) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Third parameter to fopen bust be a boolean. Default is `false´.

From the docs:

The optional third use_include_path parameter can be set to '1' or true if you want to search for the file in the include_path, too.

Please very this extra carefully.

@Nyholm Nyholm added the Ready label Mar 30, 2021
@nicolas-grekas
Copy link
Member

Thank you @Nyholm.

@nicolas-grekas nicolas-grekas merged commit f651ce6 into symfony:4.4 Apr 1, 2021
This was referenced May 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants