rbs 4.0.0.dev.1 → 4.0.0.dev.3
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/.clang-format +74 -0
- data/.clangd +2 -0
- data/.github/workflows/c-check.yml +51 -0
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +28 -17
- data/.github/workflows/typecheck.yml +0 -2
- data/.gitignore +4 -0
- data/.rubocop.yml +1 -1
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +19 -0
- data/README.md +37 -0
- data/Rakefile +90 -0
- data/config.yml +1 -1
- data/core/enumerable.rbs +9 -0
- data/core/io.rbs +4 -4
- data/core/thread.rbs +0 -7
- data/ext/rbs_extension/ast_translation.c +1010 -1074
- data/ext/rbs_extension/ast_translation.h +4 -0
- data/ext/rbs_extension/class_constants.c +78 -74
- data/ext/rbs_extension/class_constants.h +4 -0
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +15 -1
- data/ext/rbs_extension/legacy_location.c +173 -172
- data/ext/rbs_extension/legacy_location.h +8 -3
- data/ext/rbs_extension/main.c +315 -273
- data/ext/rbs_extension/rbs_extension.h +3 -0
- data/ext/rbs_extension/rbs_string_bridging.h +4 -0
- data/include/rbs/ast.h +11 -12
- data/include/rbs/defines.h +11 -12
- data/include/rbs/lexer.h +108 -108
- data/include/rbs/location.h +14 -14
- data/include/rbs/parser.h +21 -19
- data/include/rbs/string.h +3 -3
- data/include/rbs/util/rbs_allocator.h +14 -14
- data/include/rbs/util/rbs_constant_pool.h +3 -3
- data/include/rbs/util/rbs_encoding.h +1 -1
- data/lib/rbs/environment.rb +4 -0
- data/lib/rbs/namespace.rb +0 -7
- data/lib/rbs/parser_aux.rb +5 -0
- data/lib/rbs/type_name.rb +0 -7
- data/lib/rbs/types.rb +3 -1
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- data/lib/rbs/version.rb +1 -1
- data/sig/environment.rbs +3 -0
- data/sig/namespace.rbs +0 -5
- data/sig/parser.rbs +20 -0
- data/sig/typename.rbs +0 -5
- data/sig/types.rbs +4 -1
- data/src/ast.c +216 -214
- data/src/lexer.c +2923 -2675
- data/src/lexstate.c +157 -157
- data/src/location.c +40 -40
- data/src/parser.c +2591 -2586
- data/src/string.c +2 -2
- data/src/util/rbs_allocator.c +7 -9
- data/src/util/rbs_assert.c +9 -9
- data/src/util/rbs_constant_pool.c +5 -7
- data/src/util/rbs_encoding.c +20095 -4056
- data/src/util/rbs_unescape.c +33 -32
- data/stdlib/json/0/json.rbs +9 -43
- data/stdlib/ripper/0/ripper.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +2 -2
- metadata +8 -2
@@ -8,8 +8,12 @@
|
|
8
8
|
#ifndef RBS_EXTENSION_AST_TRANSLATION_H
|
9
9
|
#define RBS_EXTENSION_AST_TRANSLATION_H
|
10
10
|
|
11
|
+
#include "compat.h"
|
12
|
+
|
13
|
+
SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
|
11
14
|
#include "ruby.h"
|
12
15
|
#include "ruby/encoding.h"
|
16
|
+
SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
|
13
17
|
|
14
18
|
#include "rbs/ast.h"
|
15
19
|
#include "rbs/location.h"
|
@@ -86,82 +86,86 @@ VALUE RBS_Types_Variable;
|
|
86
86
|
|
87
87
|
VALUE RBS_ParsingError;
|
88
88
|
|
89
|
-
#define IMPORT_CONSTANT(var, parent, name)
|
89
|
+
#define IMPORT_CONSTANT(var, parent, name) \
|
90
|
+
{ \
|
91
|
+
var = rb_const_get(parent, rb_intern(name)); \
|
92
|
+
rb_gc_register_mark_object(var); \
|
93
|
+
}
|
90
94
|
|
91
95
|
void rbs__init_constants(void) {
|
92
|
-
|
93
|
-
|
96
|
+
IMPORT_CONSTANT(RBS, rb_cObject, "RBS");
|
97
|
+
IMPORT_CONSTANT(RBS_ParsingError, RBS, "ParsingError");
|
94
98
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
99
|
+
IMPORT_CONSTANT(RBS_AST, RBS, "AST");
|
100
|
+
IMPORT_CONSTANT(RBS_AST_Declarations, RBS_AST, "Declarations");
|
101
|
+
IMPORT_CONSTANT(RBS_AST_Directives, RBS_AST, "Directives");
|
102
|
+
IMPORT_CONSTANT(RBS_AST_Members, RBS_AST, "Members");
|
103
|
+
IMPORT_CONSTANT(RBS_AST_Ruby, RBS_AST, "Ruby");
|
104
|
+
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations, RBS_AST_Ruby, "Annotations");
|
105
|
+
IMPORT_CONSTANT(RBS_Types, RBS, "Types");
|
106
|
+
IMPORT_CONSTANT(RBS_Types_Bases, RBS_Types, "Bases");
|
103
107
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
108
|
+
IMPORT_CONSTANT(RBS_AST_Annotation, RBS_AST, "Annotation");
|
109
|
+
IMPORT_CONSTANT(RBS_AST_Comment, RBS_AST, "Comment");
|
110
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Class, RBS_AST_Declarations, "Class");
|
111
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Class_Super, RBS_AST_Declarations_Class, "Super");
|
112
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_ClassAlias, RBS_AST_Declarations, "ClassAlias");
|
113
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Constant, RBS_AST_Declarations, "Constant");
|
114
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Global, RBS_AST_Declarations, "Global");
|
115
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Interface, RBS_AST_Declarations, "Interface");
|
116
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Module, RBS_AST_Declarations, "Module");
|
117
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_Module_Self, RBS_AST_Declarations_Module, "Self");
|
118
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_ModuleAlias, RBS_AST_Declarations, "ModuleAlias");
|
119
|
+
IMPORT_CONSTANT(RBS_AST_Declarations_TypeAlias, RBS_AST_Declarations, "TypeAlias");
|
120
|
+
IMPORT_CONSTANT(RBS_AST_Directives_Use, RBS_AST_Directives, "Use");
|
121
|
+
IMPORT_CONSTANT(RBS_AST_Directives_Use_SingleClause, RBS_AST_Directives_Use, "SingleClause");
|
122
|
+
IMPORT_CONSTANT(RBS_AST_Directives_Use_WildcardClause, RBS_AST_Directives_Use, "WildcardClause");
|
123
|
+
IMPORT_CONSTANT(RBS_AST_Members_Alias, RBS_AST_Members, "Alias");
|
124
|
+
IMPORT_CONSTANT(RBS_AST_Members_AttrAccessor, RBS_AST_Members, "AttrAccessor");
|
125
|
+
IMPORT_CONSTANT(RBS_AST_Members_AttrReader, RBS_AST_Members, "AttrReader");
|
126
|
+
IMPORT_CONSTANT(RBS_AST_Members_AttrWriter, RBS_AST_Members, "AttrWriter");
|
127
|
+
IMPORT_CONSTANT(RBS_AST_Members_ClassInstanceVariable, RBS_AST_Members, "ClassInstanceVariable");
|
128
|
+
IMPORT_CONSTANT(RBS_AST_Members_ClassVariable, RBS_AST_Members, "ClassVariable");
|
129
|
+
IMPORT_CONSTANT(RBS_AST_Members_Extend, RBS_AST_Members, "Extend");
|
130
|
+
IMPORT_CONSTANT(RBS_AST_Members_Include, RBS_AST_Members, "Include");
|
131
|
+
IMPORT_CONSTANT(RBS_AST_Members_InstanceVariable, RBS_AST_Members, "InstanceVariable");
|
132
|
+
IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition, RBS_AST_Members, "MethodDefinition");
|
133
|
+
IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition_Overload, RBS_AST_Members_MethodDefinition, "Overload");
|
134
|
+
IMPORT_CONSTANT(RBS_AST_Members_Prepend, RBS_AST_Members, "Prepend");
|
135
|
+
IMPORT_CONSTANT(RBS_AST_Members_Private, RBS_AST_Members, "Private");
|
136
|
+
IMPORT_CONSTANT(RBS_AST_Members_Public, RBS_AST_Members, "Public");
|
137
|
+
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation, RBS_AST_Ruby_Annotations, "ColonMethodTypeAnnotation");
|
138
|
+
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_MethodTypesAnnotation, RBS_AST_Ruby_Annotations, "MethodTypesAnnotation");
|
139
|
+
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_NodeTypeAssertion, RBS_AST_Ruby_Annotations, "NodeTypeAssertion");
|
140
|
+
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ReturnTypeAnnotation, RBS_AST_Ruby_Annotations, "ReturnTypeAnnotation");
|
141
|
+
IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SkipAnnotation, RBS_AST_Ruby_Annotations, "SkipAnnotation");
|
142
|
+
IMPORT_CONSTANT(RBS_AST_TypeParam, RBS_AST, "TypeParam");
|
143
|
+
IMPORT_CONSTANT(RBS_MethodType, RBS, "MethodType");
|
144
|
+
IMPORT_CONSTANT(RBS_Namespace, RBS, "Namespace");
|
145
|
+
IMPORT_CONSTANT(RBS_TypeName, RBS, "TypeName");
|
146
|
+
IMPORT_CONSTANT(RBS_Types_Alias, RBS_Types, "Alias");
|
147
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Any, RBS_Types_Bases, "Any");
|
148
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Bool, RBS_Types_Bases, "Bool");
|
149
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Bottom, RBS_Types_Bases, "Bottom");
|
150
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Class, RBS_Types_Bases, "Class");
|
151
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Instance, RBS_Types_Bases, "Instance");
|
152
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Nil, RBS_Types_Bases, "Nil");
|
153
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Self, RBS_Types_Bases, "Self");
|
154
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Top, RBS_Types_Bases, "Top");
|
155
|
+
IMPORT_CONSTANT(RBS_Types_Bases_Void, RBS_Types_Bases, "Void");
|
156
|
+
IMPORT_CONSTANT(RBS_Types_Block, RBS_Types, "Block");
|
157
|
+
IMPORT_CONSTANT(RBS_Types_ClassInstance, RBS_Types, "ClassInstance");
|
158
|
+
IMPORT_CONSTANT(RBS_Types_ClassSingleton, RBS_Types, "ClassSingleton");
|
159
|
+
IMPORT_CONSTANT(RBS_Types_Function, RBS_Types, "Function");
|
160
|
+
IMPORT_CONSTANT(RBS_Types_Function_Param, RBS_Types_Function, "Param");
|
161
|
+
IMPORT_CONSTANT(RBS_Types_Interface, RBS_Types, "Interface");
|
162
|
+
IMPORT_CONSTANT(RBS_Types_Intersection, RBS_Types, "Intersection");
|
163
|
+
IMPORT_CONSTANT(RBS_Types_Literal, RBS_Types, "Literal");
|
164
|
+
IMPORT_CONSTANT(RBS_Types_Optional, RBS_Types, "Optional");
|
165
|
+
IMPORT_CONSTANT(RBS_Types_Proc, RBS_Types, "Proc");
|
166
|
+
IMPORT_CONSTANT(RBS_Types_Record, RBS_Types, "Record");
|
167
|
+
IMPORT_CONSTANT(RBS_Types_Tuple, RBS_Types, "Tuple");
|
168
|
+
IMPORT_CONSTANT(RBS_Types_Union, RBS_Types, "Union");
|
169
|
+
IMPORT_CONSTANT(RBS_Types_UntypedFunction, RBS_Types, "UntypedFunction");
|
170
|
+
IMPORT_CONSTANT(RBS_Types_Variable, RBS_Types, "Variable");
|
167
171
|
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#ifdef __clang__
|
2
|
+
#define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN \
|
3
|
+
_Pragma("clang diagnostic push") \
|
4
|
+
_Pragma("clang diagnostic ignored \"-Wc2x-extensions\"")
|
5
|
+
#define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END \
|
6
|
+
_Pragma("clang diagnostic pop")
|
7
|
+
#else
|
8
|
+
#define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
|
9
|
+
#define SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
|
10
|
+
#endif
|
@@ -11,7 +11,21 @@ root_dir = File.expand_path('../../../', __FILE__)
|
|
11
11
|
$srcs = Dir.glob("#{root_dir}/src/**/*.c") +
|
12
12
|
Dir.glob("#{root_dir}/ext/rbs_extension/*.c")
|
13
13
|
|
14
|
-
append_cflags [
|
14
|
+
append_cflags [
|
15
|
+
'-std=gnu99',
|
16
|
+
'-Wimplicit-fallthrough',
|
17
|
+
'-Wunused-result',
|
18
|
+
'-Wc++-compat',
|
19
|
+
]
|
20
|
+
|
15
21
|
append_cflags ['-O0', '-g'] if ENV['DEBUG']
|
22
|
+
if ENV["TEST_NO_C23"]
|
23
|
+
puts "Adding -Wc2x-extensions to CFLAGS"
|
24
|
+
$CFLAGS << " -Werror -Wc2x-extensions"
|
25
|
+
end
|
16
26
|
|
17
27
|
create_makefile 'rbs_extension'
|
28
|
+
|
29
|
+
require 'extconf_compile_commands_json'
|
30
|
+
ExtconfCompileCommandsJson.generate!
|
31
|
+
ExtconfCompileCommandsJson.symlink!
|