rbs 3.9.2 → 4.0.0.dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/.github/workflows/windows.yml +1 -1
- data/CHANGELOG.md +0 -13
- data/Rakefile +28 -21
- data/Steepfile +1 -0
- data/config.yml +232 -62
- data/ext/rbs_extension/ast_translation.c +1149 -0
- data/ext/rbs_extension/ast_translation.h +30 -0
- data/{src/constants.c → ext/rbs_extension/class_constants.c} +15 -1
- data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +10 -1
- data/ext/rbs_extension/extconf.rb +3 -1
- data/ext/rbs_extension/{location.c → legacy_location.c} +25 -34
- data/ext/rbs_extension/legacy_location.h +40 -0
- data/ext/rbs_extension/main.c +402 -8
- data/ext/rbs_extension/rbs_extension.h +3 -21
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +20 -0
- data/include/rbs/ast.h +748 -0
- data/include/rbs/defines.h +60 -0
- data/{ext/rbs_extension → include/rbs}/lexer.h +40 -32
- data/include/rbs/location.h +59 -0
- data/include/rbs/parser.h +151 -0
- data/include/rbs/string.h +49 -0
- data/include/rbs/util/rbs_allocator.h +38 -0
- data/include/rbs/util/rbs_assert.h +9 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +3 -64
- data/include/rbs/util/rbs_encoding.h +280 -0
- data/include/rbs/util/rbs_unescape.h +23 -0
- data/include/rbs.h +1 -2
- data/lib/rbs/annotate/formatter.rb +3 -13
- data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
- data/lib/rbs/annotate/rdoc_source.rb +1 -1
- data/lib/rbs/ast/ruby/annotations.rb +119 -0
- data/lib/rbs/ast/ruby/comment_block.rb +221 -0
- data/lib/rbs/ast/ruby/declarations.rb +86 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +24 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +213 -0
- data/lib/rbs/buffer.rb +104 -24
- data/lib/rbs/cli/validate.rb +39 -34
- data/lib/rbs/cli.rb +4 -5
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +63 -60
- data/lib/rbs/definition_builder/method_builder.rb +45 -30
- data/lib/rbs/definition_builder.rb +44 -9
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +185 -154
- data/lib/rbs/environment_loader.rb +2 -2
- data/lib/rbs/errors.rb +4 -3
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +206 -0
- data/lib/rbs/location_aux.rb +35 -3
- data/lib/rbs/parser_aux.rb +11 -1
- data/lib/rbs/prototype/runtime.rb +2 -2
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +4 -3
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +12 -0
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +1 -0
- data/sig/ancestor_builder.rbs +1 -1
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- data/sig/ast/ruby/annotations.rbs +110 -0
- data/sig/ast/ruby/comment_block.rbs +119 -0
- data/sig/ast/ruby/declarations.rbs +60 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +72 -0
- data/sig/buffer.rbs +63 -5
- data/sig/definition.rbs +1 -0
- data/sig/definition_builder.rbs +1 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +22 -76
- data/sig/errors.rbs +13 -6
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +87 -0
- data/sig/location.rbs +32 -7
- data/sig/method_builder.rbs +7 -4
- data/sig/parser.rbs +16 -0
- data/sig/source.rbs +48 -0
- data/src/ast.c +1345 -0
- data/src/lexer.c +2867 -0
- data/src/lexer.re +151 -0
- data/{ext/rbs_extension → src}/lexstate.c +58 -42
- data/src/location.c +71 -0
- data/src/parser.c +3739 -0
- data/src/string.c +89 -0
- data/src/util/rbs_allocator.c +149 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +13 -81
- data/src/util/rbs_encoding.c +5273 -0
- data/src/util/rbs_unescape.c +130 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -2
- data/stdlib/rdoc/0/comment.rbs +2 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/rdoc.rbs +6 -4
- data/stdlib/rdoc/0/store.rbs +1 -1
- metadata +70 -17
- data/ext/rbs_extension/lexer.c +0 -2728
- data/ext/rbs_extension/lexer.re +0 -147
- data/ext/rbs_extension/location.h +0 -85
- data/ext/rbs_extension/parser.c +0 -2982
- data/ext/rbs_extension/parser.h +0 -18
- data/ext/rbs_extension/parserstate.c +0 -411
- data/ext/rbs_extension/parserstate.h +0 -163
- data/ext/rbs_extension/unescape.c +0 -32
- data/include/rbs/ruby_objs.h +0 -72
- data/src/ruby_objs.c +0 -799
data/ext/rbs_extension/lexer.re
DELETED
@@ -1,147 +0,0 @@
|
|
1
|
-
#include "rbs_extension.h"
|
2
|
-
|
3
|
-
token rbsparser_next_token(lexstate *state) {
|
4
|
-
lexstate backup;
|
5
|
-
|
6
|
-
backup = *state;
|
7
|
-
|
8
|
-
/*!re2c
|
9
|
-
re2c:flags:u = 1;
|
10
|
-
re2c:api:style = free-form;
|
11
|
-
re2c:flags:input = custom;
|
12
|
-
re2c:define:YYCTYPE = "unsigned int";
|
13
|
-
re2c:define:YYPEEK = "peek(state)";
|
14
|
-
re2c:define:YYSKIP = "rbs_skip(state);";
|
15
|
-
re2c:define:YYBACKUP = "backup = *state;";
|
16
|
-
re2c:define:YYRESTORE = "*state = backup;";
|
17
|
-
re2c:yyfill:enable = 0;
|
18
|
-
|
19
|
-
word = [a-zA-Z0-9_];
|
20
|
-
|
21
|
-
operator = "/" | "~" | "[]=" | "!" | "!=" | "!~" | "-" | "-@" | "+" | "+@"
|
22
|
-
| "==" | "===" | "=~" | "<<" | "<=" | "<=>" | ">" | ">=" | ">>" | "%";
|
23
|
-
|
24
|
-
"(" { return next_token(state, pLPAREN); }
|
25
|
-
")" { return next_token(state, pRPAREN); }
|
26
|
-
"[" { return next_token(state, pLBRACKET); }
|
27
|
-
"]" { return next_token(state, pRBRACKET); }
|
28
|
-
"{" { return next_token(state, pLBRACE); }
|
29
|
-
"}" { return next_token(state, pRBRACE); }
|
30
|
-
"," { return next_token(state, pCOMMA); }
|
31
|
-
"|" { return next_token(state, pBAR); }
|
32
|
-
"^" { return next_token(state, pHAT); }
|
33
|
-
"&" { return next_token(state, pAMP); }
|
34
|
-
"?" { return next_token(state, pQUESTION); }
|
35
|
-
"*" { return next_token(state, pSTAR); }
|
36
|
-
"**" { return next_token(state, pSTAR2); }
|
37
|
-
"." { return next_token(state, pDOT); }
|
38
|
-
"..." { return next_token(state, pDOT3); }
|
39
|
-
"`" { return next_token(state, tOPERATOR); }
|
40
|
-
"`" [^ :\x00] [^`\x00]* "`" { return next_token(state, tQIDENT); }
|
41
|
-
"->" { return next_token(state, pARROW); }
|
42
|
-
"=>" { return next_token(state, pFATARROW); }
|
43
|
-
"=" { return next_token(state, pEQ); }
|
44
|
-
":" { return next_token(state, pCOLON); }
|
45
|
-
"::" { return next_token(state, pCOLON2); }
|
46
|
-
"<" { return next_token(state, pLT); }
|
47
|
-
"[]" { return next_token(state, pAREF_OPR); }
|
48
|
-
operator { return next_token(state, tOPERATOR); }
|
49
|
-
|
50
|
-
number = [0-9] [0-9_]*;
|
51
|
-
("-"|"+")? number { return next_token(state, tINTEGER); }
|
52
|
-
|
53
|
-
"%a{" [^}\x00]* "}" { return next_token(state, tANNOTATION); }
|
54
|
-
"%a(" [^)\x00]* ")" { return next_token(state, tANNOTATION); }
|
55
|
-
"%a[" [^\]\x00]* "]" { return next_token(state, tANNOTATION); }
|
56
|
-
"%a|" [^|\x00]* "|" { return next_token(state, tANNOTATION); }
|
57
|
-
"%a<" [^>\x00]* ">" { return next_token(state, tANNOTATION); }
|
58
|
-
|
59
|
-
"#" (. \ [\x00])* {
|
60
|
-
return next_token(
|
61
|
-
state,
|
62
|
-
state->first_token_of_line ? tLINECOMMENT : tCOMMENT
|
63
|
-
);
|
64
|
-
}
|
65
|
-
|
66
|
-
"alias" { return next_token(state, kALIAS); }
|
67
|
-
"attr_accessor" { return next_token(state, kATTRACCESSOR); }
|
68
|
-
"attr_reader" { return next_token(state, kATTRREADER); }
|
69
|
-
"attr_writer" { return next_token(state, kATTRWRITER); }
|
70
|
-
"bool" { return next_token(state, kBOOL); }
|
71
|
-
"bot" { return next_token(state, kBOT); }
|
72
|
-
"class" { return next_token(state, kCLASS); }
|
73
|
-
"def" { return next_token(state, kDEF); }
|
74
|
-
"end" { return next_token(state, kEND); }
|
75
|
-
"extend" { return next_token(state, kEXTEND); }
|
76
|
-
"false" { return next_token(state, kFALSE); }
|
77
|
-
"in" { return next_token(state, kIN); }
|
78
|
-
"include" { return next_token(state, kINCLUDE); }
|
79
|
-
"instance" { return next_token(state, kINSTANCE); }
|
80
|
-
"interface" { return next_token(state, kINTERFACE); }
|
81
|
-
"module" { return next_token(state, kMODULE); }
|
82
|
-
"nil" { return next_token(state, kNIL); }
|
83
|
-
"out" { return next_token(state, kOUT); }
|
84
|
-
"prepend" { return next_token(state, kPREPEND); }
|
85
|
-
"private" { return next_token(state, kPRIVATE); }
|
86
|
-
"public" { return next_token(state, kPUBLIC); }
|
87
|
-
"self" { return next_token(state, kSELF); }
|
88
|
-
"singleton" { return next_token(state, kSINGLETON); }
|
89
|
-
"top" { return next_token(state, kTOP); }
|
90
|
-
"true" { return next_token(state, kTRUE); }
|
91
|
-
"type" { return next_token(state, kTYPE); }
|
92
|
-
"unchecked" { return next_token(state, kUNCHECKED); }
|
93
|
-
"untyped" { return next_token(state, kUNTYPED); }
|
94
|
-
"void" { return next_token(state, kVOID); }
|
95
|
-
"use" { return next_token(state, kUSE); }
|
96
|
-
"as" { return next_token(state, kAS); }
|
97
|
-
"__todo__" { return next_token(state, k__TODO__); }
|
98
|
-
|
99
|
-
unicode_char = "\\u" [0-9a-fA-F]{4};
|
100
|
-
oct_char = "\\x" [0-9a-f]{1,2};
|
101
|
-
hex_char = "\\" [0-7]{1,3};
|
102
|
-
|
103
|
-
dqstring = ["] (unicode_char | oct_char | hex_char | "\\" [^xu] | [^\\"\x00])* ["];
|
104
|
-
sqstring = ['] ("\\"['\\] | [^'\x00])* ['];
|
105
|
-
|
106
|
-
dqstring { return next_token(state, tDQSTRING); }
|
107
|
-
sqstring { return next_token(state, tSQSTRING); }
|
108
|
-
":" dqstring { return next_token(state, tDQSYMBOL); }
|
109
|
-
":" sqstring { return next_token(state, tSQSYMBOL); }
|
110
|
-
|
111
|
-
identifier = [a-zA-Z_] word* [!?=]?;
|
112
|
-
symbol_opr = ":|" | ":&" | ":/" | ":%" | ":~" | ":`" | ":^"
|
113
|
-
| ":==" | ":=~" | ":===" | ":!" | ":!=" | ":!~"
|
114
|
-
| ":<" | ":<=" | ":<<" | ":<=>" | ":>" | ":>=" | ":>>"
|
115
|
-
| ":-" | ":-@" | ":+" | ":+@" | ":*" | ":**" | ":[]" | ":[]=";
|
116
|
-
|
117
|
-
global_ident = [0-9]+
|
118
|
-
| "-" [a-zA-Z0-9_]
|
119
|
-
| [~*$?!@\\/;,.=:<>"&'`+]
|
120
|
-
| [^ \t\r\n:;=.,!"$%&()-+~|\\'[\]{}*/<>^\x00]+;
|
121
|
-
|
122
|
-
":" identifier { return next_token(state, tSYMBOL); }
|
123
|
-
":@" identifier { return next_token(state, tSYMBOL); }
|
124
|
-
":@@" identifier { return next_token(state, tSYMBOL); }
|
125
|
-
":$" global_ident { return next_token(state, tSYMBOL); }
|
126
|
-
symbol_opr { return next_token(state, tSYMBOL); }
|
127
|
-
|
128
|
-
[a-z] word* { return next_token(state, tLIDENT); }
|
129
|
-
[A-Z] word* { return next_token(state, tUIDENT); }
|
130
|
-
"_" [a-z0-9_] word* { return next_token(state, tULLIDENT); }
|
131
|
-
"_" [A-Z] word* { return next_token(state, tULIDENT); }
|
132
|
-
"_" { return next_token(state, tULLIDENT); }
|
133
|
-
[a-zA-Z_] word* "!" { return next_token(state, tBANGIDENT); }
|
134
|
-
[a-zA-Z_] word* "=" { return next_token(state, tEQIDENT); }
|
135
|
-
|
136
|
-
"@" [a-zA-Z_] word* { return next_token(state, tAIDENT); }
|
137
|
-
"@@" [a-zA-Z_] word* { return next_token(state, tA2IDENT); }
|
138
|
-
|
139
|
-
"$" global_ident { return next_token(state, tGIDENT); }
|
140
|
-
|
141
|
-
skip = ([ \t]+|[\r\n]);
|
142
|
-
|
143
|
-
skip { return next_token(state, tTRIVIA); }
|
144
|
-
"\x00" { return next_eof_token(state); }
|
145
|
-
* { return next_token(state, ErrorToken); }
|
146
|
-
*/
|
147
|
-
}
|
@@ -1,85 +0,0 @@
|
|
1
|
-
#ifndef RBS_LOCATION_H
|
2
|
-
#define RBS_LOCATION_H
|
3
|
-
|
4
|
-
#include "ruby.h"
|
5
|
-
#include "lexer.h"
|
6
|
-
#include "rbs/util/rbs_constant_pool.h"
|
7
|
-
|
8
|
-
/**
|
9
|
-
* RBS::Location class
|
10
|
-
* */
|
11
|
-
extern VALUE RBS_Location;
|
12
|
-
|
13
|
-
typedef struct {
|
14
|
-
int start;
|
15
|
-
int end;
|
16
|
-
} rbs_loc_range;
|
17
|
-
|
18
|
-
typedef struct {
|
19
|
-
rbs_constant_id_t name;
|
20
|
-
rbs_loc_range rg;
|
21
|
-
} rbs_loc_entry;
|
22
|
-
|
23
|
-
typedef unsigned int rbs_loc_entry_bitmap;
|
24
|
-
|
25
|
-
// The flexible array always allocates, but it's okay.
|
26
|
-
// This struct is not allocated when the `rbs_loc` doesn't have children.
|
27
|
-
typedef struct {
|
28
|
-
unsigned short len;
|
29
|
-
unsigned short cap;
|
30
|
-
rbs_loc_entry_bitmap required_p;
|
31
|
-
rbs_loc_entry entries[1];
|
32
|
-
} rbs_loc_children;
|
33
|
-
|
34
|
-
typedef struct {
|
35
|
-
VALUE buffer;
|
36
|
-
rbs_loc_range rg;
|
37
|
-
rbs_loc_children *children; // NULL when no children is allocated
|
38
|
-
} rbs_loc;
|
39
|
-
|
40
|
-
/**
|
41
|
-
* Returns new RBS::Location object, with given buffer and range.
|
42
|
-
* */
|
43
|
-
VALUE rbs_new_location(VALUE buffer, range rg);
|
44
|
-
|
45
|
-
/**
|
46
|
-
* Return rbs_loc associated with the RBS::Location object.
|
47
|
-
* */
|
48
|
-
rbs_loc *rbs_check_location(VALUE location);
|
49
|
-
|
50
|
-
/**
|
51
|
-
* Allocate memory for child locations.
|
52
|
-
*
|
53
|
-
* Do not call twice for the same location.
|
54
|
-
* */
|
55
|
-
void rbs_loc_alloc_children(rbs_loc *loc, unsigned short cap);
|
56
|
-
|
57
|
-
/**
|
58
|
-
* Add a required child range with given name.
|
59
|
-
*
|
60
|
-
* Allocate memory for children with rbs_loc_alloc_children before calling this function.
|
61
|
-
* */
|
62
|
-
void rbs_loc_add_required_child(rbs_loc *loc, rbs_constant_id_t name, range r);
|
63
|
-
|
64
|
-
/**
|
65
|
-
* Add an optional child range with given name.
|
66
|
-
*
|
67
|
-
* Allocate memory for children with rbs_loc_alloc_children before calling this function.
|
68
|
-
* */
|
69
|
-
void rbs_loc_add_optional_child(rbs_loc *loc, rbs_constant_id_t name, range r);
|
70
|
-
|
71
|
-
/**
|
72
|
-
* Returns RBS::Location object with start/end positions.
|
73
|
-
*
|
74
|
-
* @param start_pos
|
75
|
-
* @param end_pos
|
76
|
-
* @return New RSS::Location object.
|
77
|
-
* */
|
78
|
-
VALUE rbs_location_pp(VALUE buffer, const position *start_pos, const position *end_pos);
|
79
|
-
|
80
|
-
/**
|
81
|
-
* Define RBS::Location class.
|
82
|
-
* */
|
83
|
-
void rbs__init_location();
|
84
|
-
|
85
|
-
#endif
|