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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +74 -0
  3. data/.clangd +2 -0
  4. data/.github/workflows/c-check.yml +51 -0
  5. data/.github/workflows/dependabot.yml +1 -1
  6. data/.github/workflows/ruby.yml +28 -17
  7. data/.github/workflows/typecheck.yml +0 -2
  8. data/.gitignore +4 -0
  9. data/.rubocop.yml +1 -1
  10. data/.vscode/extensions.json +5 -0
  11. data/.vscode/settings.json +19 -0
  12. data/README.md +37 -0
  13. data/Rakefile +90 -0
  14. data/config.yml +1 -1
  15. data/core/enumerable.rbs +9 -0
  16. data/core/io.rbs +4 -4
  17. data/core/thread.rbs +0 -7
  18. data/ext/rbs_extension/ast_translation.c +1010 -1074
  19. data/ext/rbs_extension/ast_translation.h +4 -0
  20. data/ext/rbs_extension/class_constants.c +78 -74
  21. data/ext/rbs_extension/class_constants.h +4 -0
  22. data/ext/rbs_extension/compat.h +10 -0
  23. data/ext/rbs_extension/extconf.rb +15 -1
  24. data/ext/rbs_extension/legacy_location.c +173 -172
  25. data/ext/rbs_extension/legacy_location.h +8 -3
  26. data/ext/rbs_extension/main.c +315 -273
  27. data/ext/rbs_extension/rbs_extension.h +3 -0
  28. data/ext/rbs_extension/rbs_string_bridging.h +4 -0
  29. data/include/rbs/ast.h +11 -12
  30. data/include/rbs/defines.h +11 -12
  31. data/include/rbs/lexer.h +108 -108
  32. data/include/rbs/location.h +14 -14
  33. data/include/rbs/parser.h +21 -19
  34. data/include/rbs/string.h +3 -3
  35. data/include/rbs/util/rbs_allocator.h +14 -14
  36. data/include/rbs/util/rbs_constant_pool.h +3 -3
  37. data/include/rbs/util/rbs_encoding.h +1 -1
  38. data/lib/rbs/environment.rb +4 -0
  39. data/lib/rbs/namespace.rb +0 -7
  40. data/lib/rbs/parser_aux.rb +5 -0
  41. data/lib/rbs/type_name.rb +0 -7
  42. data/lib/rbs/types.rb +3 -1
  43. data/lib/rbs/unit_test/convertibles.rb +1 -0
  44. data/lib/rbs/version.rb +1 -1
  45. data/sig/environment.rbs +3 -0
  46. data/sig/namespace.rbs +0 -5
  47. data/sig/parser.rbs +20 -0
  48. data/sig/typename.rbs +0 -5
  49. data/sig/types.rbs +4 -1
  50. data/src/ast.c +216 -214
  51. data/src/lexer.c +2923 -2675
  52. data/src/lexstate.c +157 -157
  53. data/src/location.c +40 -40
  54. data/src/parser.c +2591 -2586
  55. data/src/string.c +2 -2
  56. data/src/util/rbs_allocator.c +7 -9
  57. data/src/util/rbs_assert.c +9 -9
  58. data/src/util/rbs_constant_pool.c +5 -7
  59. data/src/util/rbs_encoding.c +20095 -4056
  60. data/src/util/rbs_unescape.c +33 -32
  61. data/stdlib/json/0/json.rbs +9 -43
  62. data/stdlib/ripper/0/ripper.rbs +3 -0
  63. data/stdlib/socket/0/addrinfo.rbs +2 -2
  64. 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) { var = rb_const_get(parent, rb_intern(name)); rb_gc_register_mark_object(var); }
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
- IMPORT_CONSTANT(RBS, rb_cObject, "RBS");
93
- IMPORT_CONSTANT(RBS_ParsingError, RBS, "ParsingError");
96
+ IMPORT_CONSTANT(RBS, rb_cObject, "RBS");
97
+ IMPORT_CONSTANT(RBS_ParsingError, RBS, "ParsingError");
94
98
 
95
- IMPORT_CONSTANT(RBS_AST, RBS, "AST");
96
- IMPORT_CONSTANT(RBS_AST_Declarations, RBS_AST, "Declarations");
97
- IMPORT_CONSTANT(RBS_AST_Directives, RBS_AST, "Directives");
98
- IMPORT_CONSTANT(RBS_AST_Members, RBS_AST, "Members");
99
- IMPORT_CONSTANT(RBS_AST_Ruby, RBS_AST, "Ruby");
100
- IMPORT_CONSTANT(RBS_AST_Ruby_Annotations, RBS_AST_Ruby, "Annotations");
101
- IMPORT_CONSTANT(RBS_Types, RBS, "Types");
102
- IMPORT_CONSTANT(RBS_Types_Bases, RBS_Types, "Bases");
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
- IMPORT_CONSTANT(RBS_AST_Annotation, RBS_AST, "Annotation");
105
- IMPORT_CONSTANT(RBS_AST_Comment, RBS_AST, "Comment");
106
- IMPORT_CONSTANT(RBS_AST_Declarations_Class, RBS_AST_Declarations, "Class");
107
- IMPORT_CONSTANT(RBS_AST_Declarations_Class_Super, RBS_AST_Declarations_Class, "Super");
108
- IMPORT_CONSTANT(RBS_AST_Declarations_ClassAlias, RBS_AST_Declarations, "ClassAlias");
109
- IMPORT_CONSTANT(RBS_AST_Declarations_Constant, RBS_AST_Declarations, "Constant");
110
- IMPORT_CONSTANT(RBS_AST_Declarations_Global, RBS_AST_Declarations, "Global");
111
- IMPORT_CONSTANT(RBS_AST_Declarations_Interface, RBS_AST_Declarations, "Interface");
112
- IMPORT_CONSTANT(RBS_AST_Declarations_Module, RBS_AST_Declarations, "Module");
113
- IMPORT_CONSTANT(RBS_AST_Declarations_Module_Self, RBS_AST_Declarations_Module, "Self");
114
- IMPORT_CONSTANT(RBS_AST_Declarations_ModuleAlias, RBS_AST_Declarations, "ModuleAlias");
115
- IMPORT_CONSTANT(RBS_AST_Declarations_TypeAlias, RBS_AST_Declarations, "TypeAlias");
116
- IMPORT_CONSTANT(RBS_AST_Directives_Use, RBS_AST_Directives, "Use");
117
- IMPORT_CONSTANT(RBS_AST_Directives_Use_SingleClause, RBS_AST_Directives_Use, "SingleClause");
118
- IMPORT_CONSTANT(RBS_AST_Directives_Use_WildcardClause, RBS_AST_Directives_Use, "WildcardClause");
119
- IMPORT_CONSTANT(RBS_AST_Members_Alias, RBS_AST_Members, "Alias");
120
- IMPORT_CONSTANT(RBS_AST_Members_AttrAccessor, RBS_AST_Members, "AttrAccessor");
121
- IMPORT_CONSTANT(RBS_AST_Members_AttrReader, RBS_AST_Members, "AttrReader");
122
- IMPORT_CONSTANT(RBS_AST_Members_AttrWriter, RBS_AST_Members, "AttrWriter");
123
- IMPORT_CONSTANT(RBS_AST_Members_ClassInstanceVariable, RBS_AST_Members, "ClassInstanceVariable");
124
- IMPORT_CONSTANT(RBS_AST_Members_ClassVariable, RBS_AST_Members, "ClassVariable");
125
- IMPORT_CONSTANT(RBS_AST_Members_Extend, RBS_AST_Members, "Extend");
126
- IMPORT_CONSTANT(RBS_AST_Members_Include, RBS_AST_Members, "Include");
127
- IMPORT_CONSTANT(RBS_AST_Members_InstanceVariable, RBS_AST_Members, "InstanceVariable");
128
- IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition, RBS_AST_Members, "MethodDefinition");
129
- IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition_Overload, RBS_AST_Members_MethodDefinition, "Overload");
130
- IMPORT_CONSTANT(RBS_AST_Members_Prepend, RBS_AST_Members, "Prepend");
131
- IMPORT_CONSTANT(RBS_AST_Members_Private, RBS_AST_Members, "Private");
132
- IMPORT_CONSTANT(RBS_AST_Members_Public, RBS_AST_Members, "Public");
133
- IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation, RBS_AST_Ruby_Annotations, "ColonMethodTypeAnnotation");
134
- IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_MethodTypesAnnotation, RBS_AST_Ruby_Annotations, "MethodTypesAnnotation");
135
- IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_NodeTypeAssertion, RBS_AST_Ruby_Annotations, "NodeTypeAssertion");
136
- IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ReturnTypeAnnotation, RBS_AST_Ruby_Annotations, "ReturnTypeAnnotation");
137
- IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SkipAnnotation, RBS_AST_Ruby_Annotations, "SkipAnnotation");
138
- IMPORT_CONSTANT(RBS_AST_TypeParam, RBS_AST, "TypeParam");
139
- IMPORT_CONSTANT(RBS_MethodType, RBS, "MethodType");
140
- IMPORT_CONSTANT(RBS_Namespace, RBS, "Namespace");
141
- IMPORT_CONSTANT(RBS_TypeName, RBS, "TypeName");
142
- IMPORT_CONSTANT(RBS_Types_Alias, RBS_Types, "Alias");
143
- IMPORT_CONSTANT(RBS_Types_Bases_Any, RBS_Types_Bases, "Any");
144
- IMPORT_CONSTANT(RBS_Types_Bases_Bool, RBS_Types_Bases, "Bool");
145
- IMPORT_CONSTANT(RBS_Types_Bases_Bottom, RBS_Types_Bases, "Bottom");
146
- IMPORT_CONSTANT(RBS_Types_Bases_Class, RBS_Types_Bases, "Class");
147
- IMPORT_CONSTANT(RBS_Types_Bases_Instance, RBS_Types_Bases, "Instance");
148
- IMPORT_CONSTANT(RBS_Types_Bases_Nil, RBS_Types_Bases, "Nil");
149
- IMPORT_CONSTANT(RBS_Types_Bases_Self, RBS_Types_Bases, "Self");
150
- IMPORT_CONSTANT(RBS_Types_Bases_Top, RBS_Types_Bases, "Top");
151
- IMPORT_CONSTANT(RBS_Types_Bases_Void, RBS_Types_Bases, "Void");
152
- IMPORT_CONSTANT(RBS_Types_Block, RBS_Types, "Block");
153
- IMPORT_CONSTANT(RBS_Types_ClassInstance, RBS_Types, "ClassInstance");
154
- IMPORT_CONSTANT(RBS_Types_ClassSingleton, RBS_Types, "ClassSingleton");
155
- IMPORT_CONSTANT(RBS_Types_Function, RBS_Types, "Function");
156
- IMPORT_CONSTANT(RBS_Types_Function_Param, RBS_Types_Function, "Param");
157
- IMPORT_CONSTANT(RBS_Types_Interface, RBS_Types, "Interface");
158
- IMPORT_CONSTANT(RBS_Types_Intersection, RBS_Types, "Intersection");
159
- IMPORT_CONSTANT(RBS_Types_Literal, RBS_Types, "Literal");
160
- IMPORT_CONSTANT(RBS_Types_Optional, RBS_Types, "Optional");
161
- IMPORT_CONSTANT(RBS_Types_Proc, RBS_Types, "Proc");
162
- IMPORT_CONSTANT(RBS_Types_Record, RBS_Types, "Record");
163
- IMPORT_CONSTANT(RBS_Types_Tuple, RBS_Types, "Tuple");
164
- IMPORT_CONSTANT(RBS_Types_Union, RBS_Types, "Union");
165
- IMPORT_CONSTANT(RBS_Types_UntypedFunction, RBS_Types, "UntypedFunction");
166
- IMPORT_CONSTANT(RBS_Types_Variable, RBS_Types, "Variable");
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
  }
@@ -8,7 +8,11 @@
8
8
  #ifndef RBS__CONSTANTS_H
9
9
  #define RBS__CONSTANTS_H
10
10
 
11
+ #include "compat.h"
12
+
13
+ SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
11
14
  #include "ruby.h"
15
+ SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
12
16
 
13
17
  extern VALUE RBS;
14
18
 
@@ -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 ['-std=gnu99', '-Wimplicit-fallthrough', '-Wunused-result']
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!