@@ -1024,12 +1024,14 @@ public final class GraphQLEnumType {
10241024 public func parseValue( value: Map ) throws -> Map {
10251025 guard let valueStr = value. string else {
10261026 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)
10281029 )
10291030 }
10301031 guard let enumValue = nameLookup [ valueStr] else {
10311032 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)
10331035 )
10341036 }
10351037 return enumValue. value
@@ -1038,18 +1040,26 @@ public final class GraphQLEnumType {
10381040 public func parseLiteral( valueAST: Value ) throws -> Map {
10391041 guard let enumNode = valueAST as? EnumValue else {
10401042 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) " ) ,
10421045 nodes: [ valueAST]
10431046 )
10441047 }
10451048 guard let enumValue = nameLookup [ enumNode. value] else {
10461049 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) ,
10481052 nodes: [ valueAST]
10491053 )
10501054 }
10511055 return enumValue. value
10521056 }
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+ }
10531063}
10541064
10551065extension GraphQLEnumType : Encodable {
0 commit comments