@@ -17,8 +17,8 @@ func KnownTypeNamesRule(context: SDLorNormalValidationContext) -> Visitor {
17
17
}
18
18
for definition in definitions {
19
19
if
20
- let type = definition as? TypeDefinition ,
21
- let nameResult = type . get ( key: " name " ) ,
20
+ isTypeSystemDefinitionNode ( definition) ,
21
+ let nameResult = definition . get ( key: " name " ) ,
22
22
case let . node( nameNode) = nameResult,
23
23
let name = nameNode as? Name
24
24
{
@@ -27,11 +27,18 @@ func KnownTypeNamesRule(context: SDLorNormalValidationContext) -> Visitor {
27
27
}
28
28
29
29
return Visitor (
30
- enter: { node, _, _ , _, _ in
30
+ enter: { node, _, parent , _, ancestors in
31
31
if let type = node as? NamedType {
32
32
let typeName = type. name. value
33
33
if !typeNames. contains ( typeName) {
34
- // TODO: Add SDL support
34
+ let definitionNode = ancestors. count > 2 ? ancestors [ 2 ] : parent
35
+ var isSDL = false
36
+ if let definitionNode = definitionNode, case let . node( node) = definitionNode {
37
+ isSDL = isSDLNode ( node)
38
+ }
39
+ if isSDL, standardTypeNames. contains ( typeName) {
40
+ return . continue
41
+ }
35
42
36
43
let suggestedTypes = suggestionList (
37
44
input: typeName,
@@ -50,3 +57,13 @@ func KnownTypeNamesRule(context: SDLorNormalValidationContext) -> Visitor {
50
57
}
51
58
)
52
59
}
60
+
61
+ let standardTypeNames : Set < String > = {
62
+ var result = specifiedScalarTypes. map { $0. name }
63
+ result. append ( contentsOf: introspectionTypes. map { $0. name } )
64
+ return Set ( result)
65
+ } ( )
66
+
67
+ func isSDLNode( _ value: Node ) -> Bool {
68
+ return isTypeSystemDefinitionNode ( value) || isTypeSystemExtensionNode ( value)
69
+ }
0 commit comments