Skip to content

Commit 93c5226

Browse files
committed
Fix AccessoryLiteralStringType::setOffsetValueType()
1 parent c19155c commit 93c5226

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/Type/Accessory/AccessoryLiteralStringType.php

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

154154
public function setOffsetValueType(?Type $offsetType, Type $valueType, bool $unionValues = true): Type
155155
{
156-
return $this;
156+
if ($valueType->isLiteralString()->yes()) {
157+
return $this;
158+
}
159+
160+
return new StringType();
157161
}
158162

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

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

+13
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,17 @@ public function doFoo(string $s, string $nonEmptyString): void
2727
assertType('non-empty-string', $s);
2828
}
2929

30+
/**
31+
* @param literal-string $literalString
32+
* @param literal-string $anotherLiteralString
33+
*/
34+
public function doBar(string $literalString, string $generalString): void
35+
{
36+
$literalString[0] = 'a';
37+
assertType('literal-string&non-empty-string', $literalString);
38+
39+
$literalString[1] = $generalString;
40+
assertType('non-empty-string', $literalString);
41+
}
42+
3043
}

0 commit comments

Comments
 (0)