Skip to content

Commit db782bf

Browse files
fix: Standard scalars deliver correct error messages
1 parent 0c87951 commit db782bf

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

Sources/GraphQL/Type/Definition.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,7 @@ public final class GraphQLEnumType {
10181018
let mapValue = try map(from: value)
10191019
guard let enumValue = valueLookup[mapValue] else {
10201020
throw GraphQLError(
1021-
message: "Enum '\(name)' cannot represent value '\(mapValue)'."
1021+
message: "Enum \"\(name)\" cannot represent value: \(mapValue)."
10221022
)
10231023
}
10241024
return .string(enumValue.name)
@@ -1027,13 +1027,13 @@ public final class GraphQLEnumType {
10271027
public func parseValue(value: Map) throws -> Map {
10281028
guard let valueStr = value.string else {
10291029
throw GraphQLError(
1030-
message: "Enum '\(name)' cannot represent non-string value '\(value)'." +
1030+
message: "Enum \"\(name)\" cannot represent non-string value: \(value)." +
10311031
didYouMeanEnumValue(unknownValueStr: value.description)
10321032
)
10331033
}
10341034
guard let enumValue = nameLookup[valueStr] else {
10351035
throw GraphQLError(
1036-
message: "Value '\(valueStr)' does not exist in '\(name)' enum." +
1036+
message: "Value \"\(valueStr)\" does not exist in \"\(name)\" enum." +
10371037
didYouMeanEnumValue(unknownValueStr: valueStr)
10381038
)
10391039
}
@@ -1043,14 +1043,14 @@ public final class GraphQLEnumType {
10431043
public func parseLiteral(valueAST: Value) throws -> Map {
10441044
guard let enumNode = valueAST as? EnumValue else {
10451045
throw GraphQLError(
1046-
message: "Enum '\(name)' cannot represent non-enum value '\(valueAST)'." +
1047-
didYouMeanEnumValue(unknownValueStr: "\(valueAST)"),
1046+
message: "Enum \"\(name)\" cannot represent non-enum value: \(print(ast: valueAST))." +
1047+
didYouMeanEnumValue(unknownValueStr: print(ast: valueAST)),
10481048
nodes: [valueAST]
10491049
)
10501050
}
10511051
guard let enumValue = nameLookup[enumNode.value] else {
10521052
throw GraphQLError(
1053-
message: "Value '\(enumNode)' does not exist in '\(name)' enum." +
1053+
message: "Value \"\(enumNode.value)\" does not exist in \"\(name)\" enum." +
10541054
didYouMeanEnumValue(unknownValueStr: enumNode.value),
10551055
nodes: [valueAST]
10561056
)

Sources/GraphQL/Type/Scalars.swift

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ public let GraphQLInt = try! GraphQLScalarType(
1010
return .int(int)
1111
}
1212

13-
return .null
13+
throw GraphQLError(
14+
message: "Int cannot represent non-integer value: \(print(ast: ast))",
15+
nodes: [ast]
16+
)
1417
}
1518
)
1619

@@ -31,7 +34,10 @@ public let GraphQLFloat = try! GraphQLScalarType(
3134
return .double(double)
3235
}
3336

34-
return .null
37+
throw GraphQLError(
38+
message: "Float cannot represent non-numeric value: \(print(ast: ast))",
39+
nodes: [ast]
40+
)
3541
}
3642
)
3743

@@ -48,7 +54,10 @@ public let GraphQLString = try! GraphQLScalarType(
4854
return .string(ast.value)
4955
}
5056

51-
return .null
57+
throw GraphQLError(
58+
message: "String cannot represent a non-string value: \(print(ast: ast))",
59+
nodes: [ast]
60+
)
5261
}
5362
)
5463

@@ -62,7 +71,10 @@ public let GraphQLBoolean = try! GraphQLScalarType(
6271
return .bool(ast.value)
6372
}
6473

65-
return .null
74+
throw GraphQLError(
75+
message: "Boolean cannot represent a non-boolean value: \(print(ast: ast))",
76+
nodes: [ast]
77+
)
6678
}
6779
)
6880

@@ -85,6 +97,9 @@ public let GraphQLID = try! GraphQLScalarType(
8597
return .string(ast.value)
8698
}
8799

88-
return .null
100+
throw GraphQLError(
101+
message: "ID cannot represent a non-string and non-integer value: \(print(ast: ast))",
102+
nodes: [ast]
103+
)
89104
}
90105
)

0 commit comments

Comments
 (0)