Method: RBS::Parser._parse_signature

Defined in:
ext/rbs_extension/parser.c

._parse_signature(buffer, start_pos, end_pos) ⇒ Object



2935
2936
2937
2938
2939
2940
2941
2942
2943
# File 'ext/rbs_extension/parser.c', line 2935

static VALUE
rbsparser_parse_signature(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos)
{
  VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
  StringValue(string);
  lexstate *lexer = alloc_lexer(string, FIX2INT(start_pos), FIX2INT(end_pos));
  parserstate *parser = alloc_parser(buffer, lexer, FIX2INT(start_pos), FIX2INT(end_pos), Qnil);
  return rb_ensure(parse_signature_try, (VALUE)parser, ensure_free_parser, (VALUE)parser);
}