From 4b827d3847868a147a3faa11a44ef57212b980de Mon Sep 17 00:00:00 2001 From: Oliver Hader Date: Mon, 19 Feb 2024 12:08:46 +0100 Subject: [PATCH] Add more tests for native intersection types in class properties --- tests/NativeIntersectionsTest.php | 74 +++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/tests/NativeIntersectionsTest.php b/tests/NativeIntersectionsTest.php index 5d7c2a0367c..538119bbf5b 100644 --- a/tests/NativeIntersectionsTest.php +++ b/tests/NativeIntersectionsTest.php @@ -51,6 +51,64 @@ function test(A&B $in): void { 'ignored_issues' => [], 'php_version' => '8.1', ], + 'nativeTypeIntersectionAsClassProperty' => [ + 'code' => 'intersection = new C(); + } + } + ', + 'assertions' => [], + 'ignored_issues' => [], + 'php_version' => '8.1', + ], + 'nativeTypeIntersectionAsClassPropertyUsingProcessedInterfaces' => [ + 'code' => 'other = new AB(); + } + } + ', + 'assertions' => [], + 'ignored_issues' => [], + 'php_version' => '8.1', + ], + 'nativeTypeIntersectionAsClassPropertyUsingUnprocessedInterfaces' => [ + 'code' => 'other = new StringableJson(); + } + } + ', + 'assertions' => [], + 'ignored_issues' => [], + 'php_version' => '8.1', + ], ]; } @@ -136,6 +194,22 @@ function foo (A&B $test): A&B { 'ignored_issues' => [], 'php_version' => '8.0', ], + 'nativeTypeIntersectionAsClassPropertyUsingUnknownInterfaces' => [ + 'code' => 'other = new \Example\Unknown\AB(); + } + } + ', + // @todo decide whether a fall-back should be implemented, that allows to by-pass this failure (opt-in config) + // `UndefinedClass - src/somefile.php:3:33 - Class, interface or enum named Example\Unknown\B does not exist` + 'error_message' => 'UndefinedClass', + 'ignored_issues' => [], + 'php_version' => '8.1', + ], ]; } }