Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/graphql/language/lexer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def debug_token_value(token_name)
elsif token_name == :STRING
string_value
elsif @scanner.matched_size.nil?
@scanner.peek(1)
@string.byteslice(@scanner.pos - 1, 1)
else
token_value
end
Expand Down
2 changes: 1 addition & 1 deletion lib/graphql/language/parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,7 @@ def at?(expected_token_name)

def expect_token(expected_token_name)
unless @token_name == expected_token_name
raise_parse_error("Expected #{expected_token_name}, actual: #{token_name || "(none)"} (#{debug_token_value.inspect})")
raise_parse_error("Expected #{expected_token_name}, #{@token_name == false ? "not end of file" : "actual: #{@token_name} (#{debug_token_value.inspect})"}")
end
advance_token
end
Expand Down
13 changes: 13 additions & 0 deletions spec/graphql/language/parser_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,19 @@
assert_equal expected_msg, err.message
end

it "shows the right character in error messages" do
err = assert_raises(GraphQL::ParseError) {
GraphQL.parse("query # comment\n ~ { a b }")
}
expected_msg = if USING_C_PARSER
"syntax error, unexpected invalid token (\"~\"), expecting LCURLY at [2, 2]"
else
"Expected NAME, actual: UNKNOWN_CHAR (\"~\") at [2, 2]"
end

assert_equal expected_msg, err.message
end

it "can reject name start at the end of numbers" do
prev_reject_numers_followed_by_names = GraphQL.reject_numbers_followed_by_names
GraphQL.reject_numbers_followed_by_names = false
Expand Down
4 changes: 2 additions & 2 deletions spec/graphql/query_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ def execute_multiplex(multiplex:)
if USING_C_PARSER
expected_err = "syntax error, unexpected end of file at [1, 2]"
else
expected_err = "Expected NAME, actual: (none) (\" \") at [1, 2]"
expected_err = "Expected NAME, not end of file at [1, 2]"
end
expected_locations = [{"line" => 1, "column" => 2}]
assert_equal expected_err, res["errors"][0]["message"]
Expand All @@ -691,7 +691,7 @@ def execute_multiplex(multiplex:)
if USING_C_PARSER
expected_err = "syntax error, unexpected end of file at [1, 1]"
else
expected_err = "Expected NAME, actual: (none) (\"\") at [1, 1]"
expected_err = "Expected NAME, not end of file at [1, 1]"
end
expected_locations = [{"line" => 1, "column" => 1}]
assert_equal expected_err, res["errors"][0]["message"]
Expand Down