public function __invoke(ValidationContext $context)
{
$this->knownArgNames = [];
return [NodeKind::FIELD => function () {
$this->knownArgNames = [];
}, NodeKind::DIRECTIVE => function () {
$this->knownArgNames = [];
}, NodeKind::ARGUMENT => function (ArgumentNode $node) use($context) {
$argName = $node->name->value;
if (!empty($this->knownArgNames[$argName])) {
$context->reportError(new Error(self::duplicateArgMessage($argName), [$this->knownArgNames[$argName], $node->name]));
} else {
$this->knownArgNames[$argName] = $node->name;
}
return Visitor::skipNode();
}];
}