Skip to content

Commit 25decb9

Browse files
authored
Repairs unknown encoding errors (#936)
1 parent 8b25f44 commit 25decb9

3 files changed

Lines changed: 7 additions & 7 deletions

File tree

lib/solargraph/api_map/store.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# frozen_string_literal: true
22

3-
43
module Solargraph
54
class ApiMap
65
# Queryable collection of Pins representing a Workspace, gems and the Ruby

lib/solargraph/parser/parser_gem/class_methods.rb

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,9 @@ module ClassMethods
1111
# @param filename [String, nil]
1212
# @return [Array(Parser::AST::Node, Hash{Integer => String})]
1313
def parse_with_comments code, filename = nil
14-
buffer = ::Parser::Source::Buffer.new(filename, 0)
15-
buffer.source = code
16-
node = parser.parse(buffer)
14+
node = parse(code, filename)
1715
comments = CommentRipper.new(code, filename, 0).parse
1816
[node, comments]
19-
rescue ::Parser::SyntaxError => e
20-
raise Parser::SyntaxError, e.message
2117
end
2218

2319
# @param code [String]
@@ -28,7 +24,7 @@ def parse code, filename = nil, line = 0
2824
buffer = ::Parser::Source::Buffer.new(filename, line)
2925
buffer.source = code
3026
parser.parse(buffer)
31-
rescue ::Parser::SyntaxError => e
27+
rescue ::Parser::SyntaxError, ::Parser::UnknownEncodingInMagicComment => e
3228
raise Parser::SyntaxError, e.message
3329
end
3430

spec/parser_spec.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,9 @@
33
node = Solargraph::Parser.parse('class Foo; end', 'test.rb')
44
expect(Solargraph::Parser.is_ast_node?(node)).to be(true)
55
end
6+
7+
it 'raises repairable SyntaxError for unknown encoding errors' do
8+
code = "# encoding: utf-\nx = 'y'"
9+
expect { Solargraph::Parser.parse(code) }.to raise_error(Solargraph::Parser::SyntaxError)
10+
end
611
end

0 commit comments

Comments
 (0)