forked from OSS/graphql
Fix "variable is not used" error
This commit is contained in:
parent
5ffe8c72fa
commit
4063d48a37
@ -664,11 +664,26 @@ variableUsageDifference difference errorMessage = OperationDefinitionRule $ \cas
|
|||||||
= filterSelections' selections
|
= filterSelections' selections
|
||||||
>>= lift . mapReaderT (<> mapDirectives directives') . pure
|
>>= lift . mapReaderT (<> mapDirectives directives') . pure
|
||||||
findDirectiveVariables (Full.Directive _ arguments _) = mapArguments arguments
|
findDirectiveVariables (Full.Directive _ arguments _) = mapArguments arguments
|
||||||
mapArguments = Seq.fromList . mapMaybe findArgumentVariables
|
|
||||||
|
mapArguments = Seq.fromList . (>>= findArgumentVariables)
|
||||||
mapDirectives = foldMap findDirectiveVariables
|
mapDirectives = foldMap findDirectiveVariables
|
||||||
findArgumentVariables (Full.Argument _ Full.Node{ node = Full.Variable value', ..} _) =
|
|
||||||
Just (value', [location])
|
findArgumentVariables (Full.Argument _ Full.Node{node = value, ..} _) =
|
||||||
findArgumentVariables _ = Nothing
|
findValueVariables location value
|
||||||
|
|
||||||
|
findValueVariables location (Full.Variable value') = [(value', [location])]
|
||||||
|
findValueVariables location (Full.List values) =
|
||||||
|
values
|
||||||
|
>>= (\(Full.Node{node = value}) -> findValueVariables location value)
|
||||||
|
findValueVariables _ (Full.Object fields) =
|
||||||
|
fields
|
||||||
|
>>= ( \( Full.ObjectField
|
||||||
|
{ location = location
|
||||||
|
, value = Full.Node{node = value}
|
||||||
|
}
|
||||||
|
) -> findValueVariables location value
|
||||||
|
)
|
||||||
|
findValueVariables _ _ = []
|
||||||
makeError operationName (variableName, locations') = Error
|
makeError operationName (variableName, locations') = Error
|
||||||
{ message = errorMessage operationName variableName
|
{ message = errorMessage operationName variableName
|
||||||
, locations = locations'
|
, locations = locations'
|
||||||
|
Loading…
Reference in New Issue
Block a user