Skip to content

Commit ad317e2

Browse files
committed
Add simple specs for lexing line numbers
1 parent 6e108ec commit ad317e2

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

spec/cli/lexer_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
require File.expand_path('../spec_helper', __FILE__)
2+
require 'opal/parser'
3+
4+
describe Opal::Lexer do
5+
it "sets correct line information for each token" do
6+
expect_lines("42").to eq([1])
7+
expect_lines("\n3.142").to eq([2])
8+
expect_lines("3.142\n42\n57").to eq([1, 2, 3])
9+
end
10+
11+
it "increments the line count over multiple new lines" do
12+
expect_lines("1\n\n\n2").to eq([1, 4])
13+
expect_lines("\n\n\n3\n\n5\n\n").to eq([4, 6])
14+
end
15+
16+
it "increments line numbers over =begin...=end blocks" do
17+
expect_lines("=begin\n=end\n1").to eq([3])
18+
expect_lines("=begin\nfoo\nbar\n=end\n42\n43").to eq([5, 6])
19+
end
20+
21+
def expect_lines(source)
22+
parsed = Opal::Parser.new.parse(source)
23+
nodes = parsed.type == :block ? parsed.children : [parsed]
24+
25+
expect(nodes.map { |sexp| sexp.line })
26+
end
27+
end

0 commit comments

Comments
 (0)