Skip to content

Commit 319479c

Browse files
committed
Add Psalm::$types->setType
1 parent b30cb89 commit 319479c

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/Toolkit/Types.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,31 @@ public function getType(
154154
return Option::fromNullable($provider->getType($for));
155155
}
156156

157+
public function setType(
158+
StatementsSource |
159+
NodeTypeProvider |
160+
AfterMethodCallAnalysisEvent |
161+
MethodReturnTypeProviderEvent |
162+
AfterStatementAnalysisEvent |
163+
FunctionReturnTypeProviderEvent |
164+
AfterExpressionAnalysisEvent $from,
165+
Node\Expr | Node\Name | Node\Stmt\Return_ $for,
166+
Union $type,
167+
): void
168+
{
169+
$provider = match (true) {
170+
$from instanceof NodeTypeProvider => $from,
171+
$from instanceof StatementsSource => $from->getNodeTypeProvider(),
172+
$from instanceof AfterStatementAnalysisEvent => $from->getStatementsSource()->getNodeTypeProvider(),
173+
$from instanceof MethodReturnTypeProviderEvent => $from->getSource()->getNodeTypeProvider(),
174+
$from instanceof FunctionReturnTypeProviderEvent => $from->getStatementsSource()->getNodeTypeProvider(),
175+
$from instanceof AfterExpressionAnalysisEvent => $from->getStatementsSource()->getNodeTypeProvider(),
176+
$from instanceof AfterMethodCallAnalysisEvent => $from->getStatementsSource()->getNodeTypeProvider(),
177+
};
178+
179+
$provider->setType($for, $type);
180+
}
181+
157182
/**
158183
* @return Option<Atomic>
159184
*/

0 commit comments

Comments
 (0)