Skip to content

Commit 1dcebb3

Browse files
committed
Merge branch 'master' into directives-arg-error
2 parents fd0d761 + 28aba09 commit 1dcebb3

4 files changed

Lines changed: 17 additions & 4 deletions

File tree

lib/graphql/language/lexer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def debug_token_value(token_name)
130130
elsif token_name == :STRING
131131
string_value
132132
elsif @scanner.matched_size.nil?
133-
@scanner.peek(1)
133+
@string.byteslice(@scanner.pos - 1, 1)
134134
else
135135
token_value
136136
end

lib/graphql/language/parser.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ def at?(expected_token_name)
806806

807807
def expect_token(expected_token_name)
808808
unless @token_name == expected_token_name
809-
raise_parse_error("Expected #{expected_token_name}, actual: #{token_name || "(none)"} (#{debug_token_value.inspect})")
809+
raise_parse_error("Expected #{expected_token_name}, #{@token_name == false ? "not end of file" : "actual: #{@token_name} (#{debug_token_value.inspect})"}")
810810
end
811811
advance_token
812812
end

spec/graphql/language/parser_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,19 @@
235235
assert_equal expected_msg, err.message
236236
end
237237

238+
it "shows the right character in error messages" do
239+
err = assert_raises(GraphQL::ParseError) {
240+
GraphQL.parse("query # comment\n ~ { a b }")
241+
}
242+
expected_msg = if USING_C_PARSER
243+
"syntax error, unexpected invalid token (\"~\"), expecting LCURLY at [2, 2]"
244+
else
245+
"Expected NAME, actual: UNKNOWN_CHAR (\"~\") at [2, 2]"
246+
end
247+
248+
assert_equal expected_msg, err.message
249+
end
250+
238251
it "can reject name start at the end of numbers" do
239252
prev_reject_numers_followed_by_names = GraphQL.reject_numbers_followed_by_names
240253
GraphQL.reject_numbers_followed_by_names = false

spec/graphql/query_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ def execute_multiplex(multiplex:)
680680
if USING_C_PARSER
681681
expected_err = "syntax error, unexpected end of file at [1, 2]"
682682
else
683-
expected_err = "Expected NAME, actual: (none) (\" \") at [1, 2]"
683+
expected_err = "Expected NAME, not end of file at [1, 2]"
684684
end
685685
expected_locations = [{"line" => 1, "column" => 2}]
686686
assert_equal expected_err, res["errors"][0]["message"]
@@ -691,7 +691,7 @@ def execute_multiplex(multiplex:)
691691
if USING_C_PARSER
692692
expected_err = "syntax error, unexpected end of file at [1, 1]"
693693
else
694-
expected_err = "Expected NAME, actual: (none) (\"\") at [1, 1]"
694+
expected_err = "Expected NAME, not end of file at [1, 1]"
695695
end
696696
expected_locations = [{"line" => 1, "column" => 1}]
697697
assert_equal expected_err, res["errors"][0]["message"]

0 commit comments

Comments
 (0)