Skip to content

Commit

Permalink
Expand out class constants as early as possible
Browse files Browse the repository at this point in the history
Fixes #3128
  • Loading branch information
muglug committed Apr 13, 2020
1 parent 15df39f commit 73f8f96
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,8 @@ public static function updateArrayType(
}

if ($child_stmt->dim instanceof PhpParser\Node\Scalar\String_
|| ($child_stmt->dim instanceof PhpParser\Node\Expr\ConstFetch
|| (($child_stmt->dim instanceof PhpParser\Node\Expr\ConstFetch
|| $child_stmt->dim instanceof PhpParser\Node\Expr\ClassConstFetch)
&& $child_stmt_dim_type->isSingleStringLiteral())
) {
if ($child_stmt->dim instanceof PhpParser\Node\Scalar\String_) {
Expand All @@ -199,7 +200,8 @@ public static function updateArrayType(
}
$var_id_additions[] = '[\'' . $value . '\']';
} elseif ($child_stmt->dim instanceof PhpParser\Node\Scalar\LNumber
|| ($child_stmt->dim instanceof PhpParser\Node\Expr\ConstFetch
|| (($child_stmt->dim instanceof PhpParser\Node\Expr\ConstFetch
|| $child_stmt->dim instanceof PhpParser\Node\Expr\ClassConstFetch)
&& $child_stmt_dim_type->isSingleIntLiteral())
) {
if ($child_stmt->dim instanceof PhpParser\Node\Scalar\LNumber) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@ public static function analyze(
$statements_analyzer
);

if ($stmt->dim && ExpressionAnalyzer::analyze($statements_analyzer, $stmt->dim, $context) === false) {
return false;
}

$keyed_array_var_id = ExpressionAnalyzer::getArrayVarId(
$stmt,
$statements_analyzer->getFQCLN(),
$statements_analyzer
);

if ($stmt->dim && ExpressionAnalyzer::analyze($statements_analyzer, $stmt->dim, $context) === false) {
return false;
}

$dim_var_id = null;
$new_offset_type = null;

Expand Down
28 changes: 28 additions & 0 deletions tests/TypeReconciliation/IssetTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -916,6 +916,34 @@ function run1(array $arguments): void {
}
}',
],
'issetOnClassConstantOffset' => [
'<?php
final class StudyJwtPayload {
public const STUDY_ID = "studid";
public static function fromClaims(array $claims): string
{
if (!isset($claims["usrid"])) {
throw new \InvalidArgumentException();
}
if (!\is_string($claims["usrid"])) {
throw new \InvalidArgumentException();
}
if (!isset($claims[self::STUDY_ID])) {
throw new \InvalidArgumentException();
}
if (!\is_string($claims[self::STUDY_ID])) {
throw new \InvalidArgumentException();
}
return $claims[self::STUDY_ID];
}
}'
],
];
}

Expand Down

0 comments on commit 73f8f96

Please sign in to comment.