Skip to content

Commit 6abeff3

Browse files
staabmondrejmirtes
authored andcommitted
Fix 25x "Offset X might not exist on..." in FileTypeMapperTest
1 parent 193d801 commit 6abeff3

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

tests/PHPStan/Type/FileTypeMapperTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,59 +32,71 @@ public function testGetResolvedPhpDoc(): void
3232
$this->assertCount(0, $resolvedA->getVarTags());
3333
$this->assertCount(0, $resolvedA->getParamTags());
3434
$this->assertCount(2, $resolvedA->getPropertyTags());
35+
$this->assertArrayHasKey('numericBazBazProperty', $resolvedA->getPropertyTags());
3536
$this->assertNull($resolvedA->getReturnTag());
3637
$this->assertNotNull($resolvedA->getPropertyTags()['numericBazBazProperty']->getReadableType());
3738
$this->assertNotNull($resolvedA->getPropertyTags()['numericBazBazProperty']->getWritableType());
3839
$this->assertSame('float|int', $resolvedA->getPropertyTags()['numericBazBazProperty']->getReadableType()->describe(VerbosityLevel::precise()));
3940
$this->assertSame('float|int', $resolvedA->getPropertyTags()['numericBazBazProperty']->getWritableType()->describe(VerbosityLevel::precise()));
41+
$this->assertArrayHasKey('singleLetterObjectName', $resolvedA->getPropertyTags());
4042
$this->assertNotNull($resolvedA->getPropertyTags()['singleLetterObjectName']->getReadableType());
4143
$this->assertNotNull($resolvedA->getPropertyTags()['singleLetterObjectName']->getWritableType());
4244
$this->assertSame('TestAnnotations\\X', $resolvedA->getPropertyTags()['singleLetterObjectName']->getReadableType()->describe(VerbosityLevel::precise()));
4345
$this->assertSame('TestAnnotations\\X', $resolvedA->getPropertyTags()['singleLetterObjectName']->getWritableType()->describe(VerbosityLevel::precise()));
4446

4547
$this->assertCount(6, $resolvedA->getMethodTags());
4648
$this->assertArrayNotHasKey('complicatedParameters', $resolvedA->getMethodTags()); // ambiguous parameter types
49+
$this->assertArrayHasKey('simpleMethod', $resolvedA->getMethodTags());
4750
$simpleMethod = $resolvedA->getMethodTags()['simpleMethod'];
4851
$this->assertSame('void', $simpleMethod->getReturnType()->describe(VerbosityLevel::precise()));
4952
$this->assertFalse($simpleMethod->isStatic());
5053
$this->assertCount(0, $simpleMethod->getParameters());
5154

55+
$this->assertArrayHasKey('returningMethod', $resolvedA->getMethodTags());
5256
$returningMethod = $resolvedA->getMethodTags()['returningMethod'];
5357
$this->assertSame('string', $returningMethod->getReturnType()->describe(VerbosityLevel::precise()));
5458
$this->assertFalse($returningMethod->isStatic());
5559
$this->assertCount(0, $returningMethod->getParameters());
5660

61+
$this->assertArrayHasKey('returningNullableScalar', $resolvedA->getMethodTags());
5762
$returningNullableScalar = $resolvedA->getMethodTags()['returningNullableScalar'];
5863
$this->assertSame('float|null', $returningNullableScalar->getReturnType()->describe(VerbosityLevel::precise()));
5964
$this->assertFalse($returningNullableScalar->isStatic());
6065
$this->assertCount(0, $returningNullableScalar->getParameters());
6166

67+
$this->assertArrayHasKey('returningNullableObject', $resolvedA->getMethodTags());
6268
$returningNullableObject = $resolvedA->getMethodTags()['returningNullableObject'];
6369
$this->assertSame('stdClass|null', $returningNullableObject->getReturnType()->describe(VerbosityLevel::precise()));
6470
$this->assertFalse($returningNullableObject->isStatic());
6571
$this->assertCount(0, $returningNullableObject->getParameters());
6672

73+
$this->assertArrayHasKey('rotate', $resolvedA->getMethodTags());
6774
$rotate = $resolvedA->getMethodTags()['rotate'];
6875
$this->assertSame('TestAnnotations\\Image', $rotate->getReturnType()->describe(VerbosityLevel::precise()));
6976
$this->assertFalse($rotate->isStatic());
7077
$this->assertCount(2, $rotate->getParameters());
78+
$this->assertArrayHasKey('angle', $rotate->getParameters());
7179
$this->assertSame('float', $rotate->getParameters()['angle']->getType()->describe(VerbosityLevel::precise()));
7280
$this->assertTrue($rotate->getParameters()['angle']->passedByReference()->no());
7381
$this->assertFalse($rotate->getParameters()['angle']->isOptional());
7482
$this->assertFalse($rotate->getParameters()['angle']->isVariadic());
83+
$this->assertArrayHasKey('backgroundColor', $rotate->getParameters());
7584
$this->assertSame('mixed', $rotate->getParameters()['backgroundColor']->getType()->describe(VerbosityLevel::precise()));
7685
$this->assertTrue($rotate->getParameters()['backgroundColor']->passedByReference()->no());
7786
$this->assertFalse($rotate->getParameters()['backgroundColor']->isOptional());
7887
$this->assertFalse($rotate->getParameters()['backgroundColor']->isVariadic());
7988

89+
$this->assertArrayHasKey('paramMultipleTypesWithExtraSpaces', $resolvedA->getMethodTags());
8090
$paramMultipleTypesWithExtraSpaces = $resolvedA->getMethodTags()['paramMultipleTypesWithExtraSpaces'];
8191
$this->assertSame('float|int', $paramMultipleTypesWithExtraSpaces->getReturnType()->describe(VerbosityLevel::precise()));
8292
$this->assertFalse($paramMultipleTypesWithExtraSpaces->isStatic());
8393
$this->assertCount(2, $paramMultipleTypesWithExtraSpaces->getParameters());
94+
$this->assertArrayHasKey('string', $paramMultipleTypesWithExtraSpaces->getParameters());
8495
$this->assertSame('string|null', $paramMultipleTypesWithExtraSpaces->getParameters()['string']->getType()->describe(VerbosityLevel::precise()));
8596
$this->assertTrue($paramMultipleTypesWithExtraSpaces->getParameters()['string']->passedByReference()->no());
8697
$this->assertFalse($paramMultipleTypesWithExtraSpaces->getParameters()['string']->isOptional());
8798
$this->assertFalse($paramMultipleTypesWithExtraSpaces->getParameters()['string']->isVariadic());
99+
$this->assertArrayHasKey('object', $paramMultipleTypesWithExtraSpaces->getParameters());
88100
$this->assertSame('TestAnnotations\\stdClass|null', $paramMultipleTypesWithExtraSpaces->getParameters()['object']->getType()->describe(VerbosityLevel::precise()));
89101
$this->assertTrue($paramMultipleTypesWithExtraSpaces->getParameters()['object']->passedByReference()->no());
90102
$this->assertFalse($paramMultipleTypesWithExtraSpaces->getParameters()['object']->isOptional());
@@ -110,6 +122,7 @@ public function testFileWithDependentPhpDocs(): void
110122
);
111123

112124
$this->assertCount(1, $resolved->getParamTags());
125+
$this->assertArrayHasKey('pages', $resolved->getParamTags());
113126
$this->assertSame(
114127
'(DependentPhpDocs\Foo&iterable<DependentPhpDocs\Foo>)|(iterable<DependentPhpDocs\Foo>&Iterator)',
115128
$resolved->getParamTags()['pages']->getType()->describe(VerbosityLevel::precise()),
@@ -191,7 +204,9 @@ public function testFilesWithIdenticalPhpDocsUsingDifferentAliases(): void
191204
$doc1 = $fileTypeMapper->getResolvedPhpDoc(__DIR__ . '/data/alias-collision1.php', null, null, null, '/** @var Foo $x */');
192205
$doc2 = $fileTypeMapper->getResolvedPhpDoc(__DIR__ . '/data/alias-collision2.php', null, null, null, '/** @var Foo $x */');
193206

207+
$this->assertArrayHasKey('x', $doc1->getVarTags());
194208
$this->assertSame('AliasCollisionNamespace1\Foo', $doc1->getVarTags()['x']->getType()->describe(VerbosityLevel::precise()));
209+
$this->assertArrayHasKey('x', $doc2->getVarTags());
195210
$this->assertSame('AliasCollisionNamespace2\Foo', $doc2->getVarTags()['x']->getType()->describe(VerbosityLevel::precise()));
196211
}
197212

0 commit comments

Comments
 (0)