Skip to content

Commit c28c936

Browse files
committed
Fix AccessoryNonFalsyStringType::setOffsetValueType()
1 parent 93c5226 commit c28c936

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/Type/Accessory/AccessoryNonFalsyStringType.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,11 @@ public function getOffsetValueType(Type $offsetType): Type
155155

156156
public function setOffsetValueType(?Type $offsetType, Type $valueType, bool $unionValues = true): Type
157157
{
158-
return $this;
158+
if ($valueType->isNonFalsyString()->yes()) {
159+
return $this;
160+
}
161+
162+
return new StringType();
159163
}
160164

161165
public function setExistingOffsetValueType(Type $offsetType, Type $valueType): Type

tests/PHPStan/Analyser/nsrt/bug-3981.php

+12-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public function doFoo(string $s, string $nonEmptyString): void
2929

3030
/**
3131
* @param literal-string $literalString
32-
* @param literal-string $anotherLiteralString
3332
*/
3433
public function doBar(string $literalString, string $generalString): void
3534
{
@@ -40,4 +39,16 @@ public function doBar(string $literalString, string $generalString): void
4039
assertType('non-empty-string', $literalString);
4140
}
4241

42+
/**
43+
* @param non-falsy-string $nonFalsyString
44+
*/
45+
public function doBaz(string $nonFalsyString, string $generalString): void
46+
{
47+
$nonFalsyString[0] = 'a';
48+
assertType('non-falsy-string', $nonFalsyString);
49+
50+
$nonFalsyString[1] = $generalString;
51+
assertType('non-empty-string', $nonFalsyString);
52+
}
53+
4354
}

0 commit comments

Comments
 (0)