public function __invoke(ValidationContext $context)
{
$this->knownVariableNames = [];
return [NodeKind::OPERATION_DEFINITION => function () {
$this->knownVariableNames = [];
}, NodeKind::VARIABLE_DEFINITION => function (VariableDefinitionNode $node) use($context) {
$variableName = $node->variable->name->value;
if (!empty($this->knownVariableNames[$variableName])) {
$context->reportError(new Error(self::duplicateVariableMessage($variableName), [$this->knownVariableNames[$variableName], $node->variable->name]));
} else {
$this->knownVariableNames[$variableName] = $node->variable->name;
}
}];
}