From 223a2eac6c52f0b660978927bbec2eb31593d572 Mon Sep 17 00:00:00 2001 From: Sara Itani Date: Thu, 20 Apr 2017 00:58:26 -0700 Subject: [PATCH] fix return type resolution issue --- src/TolerantParserHelpers.php | 27 +++++++++++---------- validation/frameworks/broken/returnType.php | 13 ++++++++++ 2 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 validation/frameworks/broken/returnType.php diff --git a/src/TolerantParserHelpers.php b/src/TolerantParserHelpers.php index 8990f11..3390202 100644 --- a/src/TolerantParserHelpers.php +++ b/src/TolerantParserHelpers.php @@ -7,27 +7,28 @@ use Microsoft\PhpParser as Tolerant; class TolerantParserHelpers { public static function isConstantFetch(Tolerant\Node $node) : bool { + $parent = $node->parent; return ( $node instanceof Tolerant\Node\QualifiedName && ( // $node->parent instanceof Tolerant\Node\Statement\ExpressionStatement || - $node->parent instanceof Tolerant\Node\Expression || - $node->parent instanceof Tolerant\Node\DelimitedList\ExpressionList || - $node->parent instanceof Tolerant\Node\ArrayElement || - ($node->parent instanceof Tolerant\Node\Parameter && $node->parent->default === $node) || - $node->parent instanceof Tolerant\Node\StatementNode || - $node->parent instanceof Tolerant\Node\CaseStatementNode + $parent instanceof Tolerant\Node\Expression || + $parent instanceof Tolerant\Node\DelimitedList\ExpressionList || + $parent instanceof Tolerant\Node\ArrayElement || + ($parent instanceof Tolerant\Node\Parameter && $node->parent->default === $node) || + $parent instanceof Tolerant\Node\StatementNode || + $parent instanceof Tolerant\Node\CaseStatementNode ) && !( - $node->parent instanceof Tolerant\Node\Expression\MemberAccessExpression || - $node->parent instanceof Tolerant\Node\Expression\CallExpression || - $node->parent instanceof Tolerant\Node\Expression\ObjectCreationExpression || - $node->parent instanceof Tolerant\Node\Expression\ScopedPropertyAccessExpression || - $node->parent instanceof Tolerant\Node\Expression\AnonymousFunctionCreationExpression || + $parent instanceof Tolerant\Node\Expression\MemberAccessExpression || + $parent instanceof Tolerant\Node\Expression\CallExpression || + $parent instanceof Tolerant\Node\Expression\ObjectCreationExpression || + $parent instanceof Tolerant\Node\Expression\ScopedPropertyAccessExpression || + self::isFunctionLike($parent) || ( - $node->parent instanceof Tolerant\Node\Expression\BinaryExpression && - $node->parent->operator->kind === Tolerant\TokenKind::InstanceOfKeyword + $parent instanceof Tolerant\Node\Expression\BinaryExpression && + $parent->operator->kind === Tolerant\TokenKind::InstanceOfKeyword ) )); } diff --git a/validation/frameworks/broken/returnType.php b/validation/frameworks/broken/returnType.php new file mode 100644 index 0000000..5aad940 --- /dev/null +++ b/validation/frameworks/broken/returnType.php @@ -0,0 +1,13 @@ +