diff --git a/gems/parser/3.2/_test/test.rb b/gems/parser/3.2/_test/test.rb index 65ece501..0ad633ac 100644 --- a/gems/parser/3.2/_test/test.rb +++ b/gems/parser/3.2/_test/test.rb @@ -76,6 +76,24 @@ node.loc.end end +class TestBuilder < Parser::Builders::Default + def token_value(range) + value(["foo", range]).upcase + end + + def token_string_value(range) + string_value(["foo", range]).upcase + end + + def token_loc(range) + loc(["foo", range])&.source + loc(nil)&.source + end +end +TestBuilder.new.token_value(range) +TestBuilder.new.token_string_value(range) +TestBuilder.new.token_loc(range) + parser = Parser::CurrentRuby.new parser.version + 1 parser.diagnostics.all_errors_are_fatal = true diff --git a/gems/parser/3.2/_test/test.rbs b/gems/parser/3.2/_test/test.rbs new file mode 100644 index 00000000..b3f0fae4 --- /dev/null +++ b/gems/parser/3.2/_test/test.rbs @@ -0,0 +1,5 @@ +class TestBuilder < Parser::Builders::Default + def token_value: (Parser::Source::Range range) -> String + def token_string_value: (Parser::Source::Range range) -> String + def token_loc: (Parser::Source::Range range) -> String? +end diff --git a/gems/parser/3.2/parser.rbs b/gems/parser/3.2/parser.rbs index a386951a..3bf606c8 100644 --- a/gems/parser/3.2/parser.rbs +++ b/gems/parser/3.2/parser.rbs @@ -88,6 +88,16 @@ module Parser end end + module Builders + class Default + private + + def value: [T] ([T, Source::Range] token) -> T + def string_value: ([String, Source::Range] token) -> String + def loc: ([top, Source::Range]? token) -> Source::Range? + end + end + module Source class Range attr_reader source_buffer: Buffer