Skip to content

Commit

Permalink
Fix function-map for PDOStatement pass-by-reference functions
Browse files Browse the repository at this point in the history
  • Loading branch information
jaylinski authored and ondrejmirtes committed Mar 20, 2021
1 parent a53fc5e commit 1991bc7
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
6 changes: 3 additions & 3 deletions resources/functionMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -8476,9 +8476,9 @@
'PDOException::getTraceAsString' => [''],
'PDOStatement::__sleep' => ['array'],
'PDOStatement::__wakeup' => ['void'],
'PDOStatement::bindColumn' => ['bool', 'column'=>'mixed', '&rw_param'=>'mixed', 'type='=>'int', 'maxlen='=>'int', 'driverdata='=>'mixed'],
'PDOStatement::bindParam' => ['bool', 'paramno'=>'mixed', '&rw_param'=>'mixed', 'type='=>'int', 'maxlen='=>'int', 'driverdata='=>'mixed'],
'PDOStatement::bindValue' => ['bool', 'paramno'=>'mixed', 'param'=>'mixed', 'type='=>'int'],
'PDOStatement::bindColumn' => ['bool', 'column'=>'mixed', '&w_param'=>'mixed', 'type='=>'int', 'maxlen='=>'int', 'driverdata='=>'mixed'],
'PDOStatement::bindParam' => ['bool', 'parameter'=>'mixed', '&w_variable'=>'mixed', 'data_type='=>'int', 'length='=>'int', 'driver_options='=>'mixed'],
'PDOStatement::bindValue' => ['bool', 'parameter'=>'mixed', 'value'=>'mixed', 'data_type='=>'int'],
'PDOStatement::closeCursor' => ['bool'],
'PDOStatement::columnCount' => ['int'],
'PDOStatement::debugDumpParams' => ['void'],
Expand Down
6 changes: 6 additions & 0 deletions tests/PHPStan/Analyser/NodeScopeResolverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5700,6 +5700,11 @@ public function dataBug4545(): array
return $this->gatherAssertTypes(__DIR__ . '/data/bug-4545.php');
}

public function dataBug4714(): array
{
return $this->gatherAssertTypes(__DIR__ . '/data/bug-4714.php');
}

/**
* @dataProvider dataArrayFunctions
* @param string $description
Expand Down Expand Up @@ -11323,6 +11328,7 @@ private function gatherAssertTypes(string $file): array
* @dataProvider dataBug4657
* @dataProvider dataBug4707
* @dataProvider dataBug4545
* @dataProvider dataBug4714
* @param string $assertType
* @param string $file
* @param mixed ...$args
Expand Down
24 changes: 24 additions & 0 deletions tests/PHPStan/Analyser/data/bug-4714.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace Bug4714;

use PHPStan\TrinaryLogic;
use function PHPStan\Analyser\assertVariableCertainty;

class Foo
{
public function bar(\PDO $database): void
{
$statement = $database->prepare('SELECT `col` FROM `foo` WHERE `param` = :param');
$statement->bindParam(':param', $param);

assertVariableCertainty(TrinaryLogic::createYes(), $param);

$param = 1;

$statement->execute();
$statement->bindColumn('col', $col);

assertVariableCertainty(TrinaryLogic::createYes(), $col);
}
}

0 comments on commit 1991bc7

Please sign in to comment.