@@ -1024,12 +1024,14 @@ public final class GraphQLEnumType {
1024
1024
public func parseValue( value: Map ) throws -> Map {
1025
1025
guard let valueStr = value. string else {
1026
1026
throw GraphQLError (
1027
- message: " Enum ' \( name) ' cannot represent non-string value ' \( value) '. "
1027
+ message: " Enum ' \( name) ' cannot represent non-string value ' \( value) '. " +
1028
+ didYouMeanEnumValue( unknownValueStr: value. description)
1028
1029
)
1029
1030
}
1030
1031
guard let enumValue = nameLookup [ valueStr] else {
1031
1032
throw GraphQLError (
1032
- message: " Value ' \( valueStr) ' does not exist in ' \( name) ' enum. "
1033
+ message: " Value ' \( valueStr) ' does not exist in ' \( name) ' enum. " +
1034
+ didYouMeanEnumValue( unknownValueStr: valueStr)
1033
1035
)
1034
1036
}
1035
1037
return enumValue. value
@@ -1038,18 +1040,26 @@ public final class GraphQLEnumType {
1038
1040
public func parseLiteral( valueAST: Value ) throws -> Map {
1039
1041
guard let enumNode = valueAST as? EnumValue else {
1040
1042
throw GraphQLError (
1041
- message: " Enum ' \( name) ' cannot represent non-enum value ' \( valueAST) '. " ,
1043
+ message: " Enum ' \( name) ' cannot represent non-enum value ' \( valueAST) '. " +
1044
+ didYouMeanEnumValue( unknownValueStr: " \( valueAST) " ) ,
1042
1045
nodes: [ valueAST]
1043
1046
)
1044
1047
}
1045
1048
guard let enumValue = nameLookup [ enumNode. value] else {
1046
1049
throw GraphQLError (
1047
- message: " Value ' \( enumNode) ' does not exist in ' \( name) ' enum. " ,
1050
+ message: " Value ' \( enumNode) ' does not exist in ' \( name) ' enum. " +
1051
+ didYouMeanEnumValue( unknownValueStr: enumNode. value) ,
1048
1052
nodes: [ valueAST]
1049
1053
)
1050
1054
}
1051
1055
return enumValue. value
1052
1056
}
1057
+
1058
+ private func didYouMeanEnumValue( unknownValueStr: String ) -> String {
1059
+ let allNames = values. map { $0. name }
1060
+ let suggestedValues = suggestionList ( input: unknownValueStr, options: allNames)
1061
+ return didYouMean ( " the enum value " , suggestions: suggestedValues)
1062
+ }
1053
1063
}
1054
1064
1055
1065
extension GraphQLEnumType : Encodable {
0 commit comments