Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile without activesupport #2105

Merged
merged 4 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
job: stdlib_test
rubyopt: "--enable-frozen-string-literal"
- ruby: "3.3"
job: lexer compile confirm_lexer
job: lexer templates compile confirm_lexer confirm_templates
- ruby: "3.3"
job: rubocop validate test_doc build test_generate_stdlib raap
- ruby: "3.3"
Expand Down
5 changes: 0 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,4 @@ lib/**/*.so
lib/**/*.dll
doc/

include/rbs/constants.h
include/rbs/ruby_objs.h
src/constants.c
src/ruby_objs.c

**/*.gem
25 changes: 20 additions & 5 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,22 @@ task :confirm_lexer => :lexer do
sh "git diff --exit-code ext/rbs_extension/lexer.c"
end

task :confirm_templates => :templates do
puts "Testing if generated code under include and src is updated with respect to templates"
sh "git diff --exit-code -- include src"
end

rule ".c" => ".re" do |t|
puts "⚠️⚠️⚠️ #{t.name} is older than #{t.source}. You may need to run `rake lexer` ⚠️⚠️⚠️"
end

rule %r{^src/(.*)\.c} => 'templates/%X.c.erb' do |t|
puts "⚠️⚠️⚠️ #{t.name} is older than #{t.source}. You may need to run `rake templates` ⚠️⚠️⚠️"
end
rule %r{^include/(.*)\.c} => 'templates/%X.c.erb' do |t|
puts "⚠️⚠️⚠️ #{t.name} is older than #{t.source}. You may need to run `rake templates` ⚠️⚠️⚠️"
end

task :annotate do
sh "bin/generate_docs.sh"
end
Expand All @@ -44,14 +56,17 @@ task :confirm_annotation do
end

task :templates do
sh "bundle exec ruby templates/template.rb include/rbs/constants.h"
sh "bundle exec ruby templates/template.rb include/rbs/ruby_objs.h"
sh "bundle exec ruby templates/template.rb src/constants.c"
sh "bundle exec ruby templates/template.rb src/ruby_objs.c"
sh "#{ruby} templates/template.rb include/rbs/constants.h"
sh "#{ruby} templates/template.rb include/rbs/ruby_objs.h"
sh "#{ruby} templates/template.rb src/constants.c"
sh "#{ruby} templates/template.rb src/ruby_objs.c"
end

task :compile => "ext/rbs_extension/lexer.c"
Rake::Task[:compile].prereqs.prepend :templates
task :compile => "include/rbs/constants.h"
task :compile => "include/rbs/ruby_objs.h"
task :compile => "src/constants.c"
task :compile => "src/ruby_objs.c"

task :test_doc do
files = Dir.chdir(File.expand_path('..', __FILE__)) do
Expand Down
82 changes: 82 additions & 0 deletions include/rbs/constants.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*----------------------------------------------------------------------------*/
/* This file is generated by the templates/template.rb script and should not */
/* be modified manually. */
/* To change the template see */
/* templates/include/rbs/constants.h.erb */
/*----------------------------------------------------------------------------*/

#ifndef RBS__CONSTANTS_H
#define RBS__CONSTANTS_H

extern VALUE RBS;

extern VALUE RBS_AST;
extern VALUE RBS_AST_Declarations;
extern VALUE RBS_AST_Directives;
extern VALUE RBS_AST_Members;
extern VALUE RBS_Types;
extern VALUE RBS_Types_Bases;
extern VALUE RBS_ParsingError;

extern VALUE RBS_AST_Annotation;
extern VALUE RBS_AST_Comment;
extern VALUE RBS_AST_Declarations_Class;
extern VALUE RBS_AST_Declarations_Class_Super;
extern VALUE RBS_AST_Declarations_ClassAlias;
extern VALUE RBS_AST_Declarations_Constant;
extern VALUE RBS_AST_Declarations_Global;
extern VALUE RBS_AST_Declarations_Interface;
extern VALUE RBS_AST_Declarations_Module;
extern VALUE RBS_AST_Declarations_Module_Self;
extern VALUE RBS_AST_Declarations_ModuleAlias;
extern VALUE RBS_AST_Declarations_TypeAlias;
extern VALUE RBS_AST_Directives_Use;
extern VALUE RBS_AST_Directives_Use_SingleClause;
extern VALUE RBS_AST_Directives_Use_WildcardClause;
extern VALUE RBS_AST_Members_Alias;
extern VALUE RBS_AST_Members_AttrAccessor;
extern VALUE RBS_AST_Members_AttrReader;
extern VALUE RBS_AST_Members_AttrWriter;
extern VALUE RBS_AST_Members_ClassInstanceVariable;
extern VALUE RBS_AST_Members_ClassVariable;
extern VALUE RBS_AST_Members_Extend;
extern VALUE RBS_AST_Members_Include;
extern VALUE RBS_AST_Members_InstanceVariable;
extern VALUE RBS_AST_Members_MethodDefinition;
extern VALUE RBS_AST_Members_MethodDefinition_Overload;
extern VALUE RBS_AST_Members_Prepend;
extern VALUE RBS_AST_Members_Private;
extern VALUE RBS_AST_Members_Public;
extern VALUE RBS_AST_TypeParam;
extern VALUE RBS_MethodType;
extern VALUE RBS_Namespace;
extern VALUE RBS_TypeName;
extern VALUE RBS_Types_Alias;
extern VALUE RBS_Types_Bases_Any;
extern VALUE RBS_Types_Bases_Bool;
extern VALUE RBS_Types_Bases_Bottom;
extern VALUE RBS_Types_Bases_Class;
extern VALUE RBS_Types_Bases_Instance;
extern VALUE RBS_Types_Bases_Nil;
extern VALUE RBS_Types_Bases_Self;
extern VALUE RBS_Types_Bases_Top;
extern VALUE RBS_Types_Bases_Void;
extern VALUE RBS_Types_Block;
extern VALUE RBS_Types_ClassInstance;
extern VALUE RBS_Types_ClassSingleton;
extern VALUE RBS_Types_Function;
extern VALUE RBS_Types_Function_Param;
extern VALUE RBS_Types_Interface;
extern VALUE RBS_Types_Intersection;
extern VALUE RBS_Types_Literal;
extern VALUE RBS_Types_Optional;
extern VALUE RBS_Types_Proc;
extern VALUE RBS_Types_Record;
extern VALUE RBS_Types_Tuple;
extern VALUE RBS_Types_Union;
extern VALUE RBS_Types_UntypedFunction;
extern VALUE RBS_Types_Variable;

void rbs__init_constants();

#endif
72 changes: 72 additions & 0 deletions include/rbs/ruby_objs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/*----------------------------------------------------------------------------*/
/* This file is generated by the templates/template.rb script and should not */
/* be modified manually. */
/* To change the template see */
/* templates/include/rbs/ruby_objs.h.erb */
/*----------------------------------------------------------------------------*/

#ifndef RBS__RUBY_OBJS_H
#define RBS__RUBY_OBJS_H

#include "ruby.h"

VALUE rbs_ast_annotation(VALUE string, VALUE location);
VALUE rbs_ast_comment(VALUE string, VALUE location);
VALUE rbs_ast_decl_class(VALUE name, VALUE type_params, VALUE super_class, VALUE members, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_decl_class_super(VALUE name, VALUE args, VALUE location);
VALUE rbs_ast_decl_class_alias(VALUE new_name, VALUE old_name, VALUE location, VALUE comment);
VALUE rbs_ast_decl_constant(VALUE name, VALUE type, VALUE location, VALUE comment);
VALUE rbs_ast_decl_global(VALUE name, VALUE type, VALUE location, VALUE comment);
VALUE rbs_ast_decl_interface(VALUE name, VALUE type_params, VALUE members, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_decl_module(VALUE name, VALUE type_params, VALUE self_types, VALUE members, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_decl_module_self(VALUE name, VALUE args, VALUE location);
VALUE rbs_ast_decl_module_alias(VALUE new_name, VALUE old_name, VALUE location, VALUE comment);
VALUE rbs_ast_decl_type_alias(VALUE name, VALUE type_params, VALUE type, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_directives_use(VALUE clauses, VALUE location);
VALUE rbs_ast_directives_use_single_clause(VALUE type_name, VALUE new_name, VALUE location);
VALUE rbs_ast_directives_use_wildcard_clause(VALUE namespace, VALUE location);
VALUE rbs_ast_members_alias(VALUE new_name, VALUE old_name, VALUE kind, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_members_attr_accessor(VALUE name, VALUE type, VALUE ivar_name, VALUE kind, VALUE annotations, VALUE location, VALUE comment, VALUE visibility);
VALUE rbs_ast_members_attr_reader(VALUE name, VALUE type, VALUE ivar_name, VALUE kind, VALUE annotations, VALUE location, VALUE comment, VALUE visibility);
VALUE rbs_ast_members_attr_writer(VALUE name, VALUE type, VALUE ivar_name, VALUE kind, VALUE annotations, VALUE location, VALUE comment, VALUE visibility);
VALUE rbs_ast_members_class_instance_variable(VALUE name, VALUE type, VALUE location, VALUE comment);
VALUE rbs_ast_members_class_variable(VALUE name, VALUE type, VALUE location, VALUE comment);
VALUE rbs_ast_members_extend(VALUE name, VALUE args, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_members_include(VALUE name, VALUE args, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_members_instance_variable(VALUE name, VALUE type, VALUE location, VALUE comment);
VALUE rbs_ast_members_method_definition(VALUE name, VALUE kind, VALUE overloads, VALUE annotations, VALUE location, VALUE comment, VALUE overloading, VALUE visibility);
VALUE rbs_ast_members_method_definition_overload(VALUE annotations, VALUE method_type);
VALUE rbs_ast_members_prepend(VALUE name, VALUE args, VALUE annotations, VALUE location, VALUE comment);
VALUE rbs_ast_members_private(VALUE location);
VALUE rbs_ast_members_public(VALUE location);
VALUE rbs_ast_type_param(VALUE name, VALUE variance, VALUE upper_bound, VALUE default_type, VALUE location);
VALUE rbs_method_type(VALUE type_params, VALUE type, VALUE block, VALUE location);
VALUE rbs_namespace(VALUE path, VALUE absolute);
VALUE rbs_type_name(VALUE namespace, VALUE name);
VALUE rbs_alias(VALUE name, VALUE args, VALUE location);
VALUE rbs_bases_any(VALUE location);
VALUE rbs_bases_bool(VALUE location);
VALUE rbs_bases_bottom(VALUE location);
VALUE rbs_bases_class(VALUE location);
VALUE rbs_bases_instance(VALUE location);
VALUE rbs_bases_nil(VALUE location);
VALUE rbs_bases_self(VALUE location);
VALUE rbs_bases_top(VALUE location);
VALUE rbs_bases_void(VALUE location);
VALUE rbs_block(VALUE type, VALUE required, VALUE self_type);
VALUE rbs_class_instance(VALUE name, VALUE args, VALUE location);
VALUE rbs_class_singleton(VALUE name, VALUE location);
VALUE rbs_function(VALUE required_positionals, VALUE optional_positionals, VALUE rest_positionals, VALUE trailing_positionals, VALUE required_keywords, VALUE optional_keywords, VALUE rest_keywords, VALUE return_type);
VALUE rbs_function_param(VALUE type, VALUE name, VALUE location);
VALUE rbs_interface(VALUE name, VALUE args, VALUE location);
VALUE rbs_intersection(VALUE types, VALUE location);
VALUE rbs_literal(VALUE literal, VALUE location);
VALUE rbs_optional(VALUE type, VALUE location);
VALUE rbs_proc(VALUE type, VALUE block, VALUE location, VALUE self_type);
VALUE rbs_record(VALUE all_fields, VALUE location);
VALUE rbs_tuple(VALUE types, VALUE location);
VALUE rbs_union(VALUE types, VALUE location);
VALUE rbs_untyped_function(VALUE return_type);
VALUE rbs_variable(VALUE name, VALUE location);

#endif
153 changes: 153 additions & 0 deletions src/constants.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
/*----------------------------------------------------------------------------*/
/* This file is generated by the templates/template.rb script and should not */
/* be modified manually. */
/* To change the template see */
/* templates/src/constants.c.erb */
/*----------------------------------------------------------------------------*/

#include "rbs_extension.h"

VALUE RBS_Parser;

VALUE RBS;
VALUE RBS_AST;
VALUE RBS_AST_Declarations;
VALUE RBS_AST_Directives;
VALUE RBS_AST_Members;
VALUE RBS_Parser;
VALUE RBS_Types;
VALUE RBS_Types_Bases;

VALUE RBS_AST_Annotation;
VALUE RBS_AST_Comment;
VALUE RBS_AST_Declarations_Class;
VALUE RBS_AST_Declarations_Class_Super;
VALUE RBS_AST_Declarations_ClassAlias;
VALUE RBS_AST_Declarations_Constant;
VALUE RBS_AST_Declarations_Global;
VALUE RBS_AST_Declarations_Interface;
VALUE RBS_AST_Declarations_Module;
VALUE RBS_AST_Declarations_Module_Self;
VALUE RBS_AST_Declarations_ModuleAlias;
VALUE RBS_AST_Declarations_TypeAlias;
VALUE RBS_AST_Directives_Use;
VALUE RBS_AST_Directives_Use_SingleClause;
VALUE RBS_AST_Directives_Use_WildcardClause;
VALUE RBS_AST_Members_Alias;
VALUE RBS_AST_Members_AttrAccessor;
VALUE RBS_AST_Members_AttrReader;
VALUE RBS_AST_Members_AttrWriter;
VALUE RBS_AST_Members_ClassInstanceVariable;
VALUE RBS_AST_Members_ClassVariable;
VALUE RBS_AST_Members_Extend;
VALUE RBS_AST_Members_Include;
VALUE RBS_AST_Members_InstanceVariable;
VALUE RBS_AST_Members_MethodDefinition;
VALUE RBS_AST_Members_MethodDefinition_Overload;
VALUE RBS_AST_Members_Prepend;
VALUE RBS_AST_Members_Private;
VALUE RBS_AST_Members_Public;
VALUE RBS_AST_TypeParam;
VALUE RBS_MethodType;
VALUE RBS_Namespace;
VALUE RBS_TypeName;
VALUE RBS_Types_Alias;
VALUE RBS_Types_Bases_Any;
VALUE RBS_Types_Bases_Bool;
VALUE RBS_Types_Bases_Bottom;
VALUE RBS_Types_Bases_Class;
VALUE RBS_Types_Bases_Instance;
VALUE RBS_Types_Bases_Nil;
VALUE RBS_Types_Bases_Self;
VALUE RBS_Types_Bases_Top;
VALUE RBS_Types_Bases_Void;
VALUE RBS_Types_Block;
VALUE RBS_Types_ClassInstance;
VALUE RBS_Types_ClassSingleton;
VALUE RBS_Types_Function;
VALUE RBS_Types_Function_Param;
VALUE RBS_Types_Interface;
VALUE RBS_Types_Intersection;
VALUE RBS_Types_Literal;
VALUE RBS_Types_Optional;
VALUE RBS_Types_Proc;
VALUE RBS_Types_Record;
VALUE RBS_Types_Tuple;
VALUE RBS_Types_Union;
VALUE RBS_Types_UntypedFunction;
VALUE RBS_Types_Variable;

VALUE RBS_ParsingError;

#define IMPORT_CONSTANT(var, parent, name) { var = rb_const_get(parent, rb_intern(name)); rb_gc_register_mark_object(var); }

void rbs__init_constants(void) {
IMPORT_CONSTANT(RBS, rb_cObject, "RBS");
IMPORT_CONSTANT(RBS_ParsingError, RBS, "ParsingError");

IMPORT_CONSTANT(RBS_AST, RBS, "AST");
IMPORT_CONSTANT(RBS_AST_Declarations, RBS_AST, "Declarations");
IMPORT_CONSTANT(RBS_AST_Directives, RBS_AST, "Directives");
IMPORT_CONSTANT(RBS_AST_Members, RBS_AST, "Members");
IMPORT_CONSTANT(RBS_Types, RBS, "Types");
IMPORT_CONSTANT(RBS_Types_Bases, RBS_Types, "Bases");

IMPORT_CONSTANT(RBS_AST_Annotation, RBS_AST, "Annotation");
IMPORT_CONSTANT(RBS_AST_Comment, RBS_AST, "Comment");
IMPORT_CONSTANT(RBS_AST_Declarations_Class, RBS_AST_Declarations, "Class");
IMPORT_CONSTANT(RBS_AST_Declarations_Class_Super, RBS_AST_Declarations_Class, "Super");
IMPORT_CONSTANT(RBS_AST_Declarations_ClassAlias, RBS_AST_Declarations, "ClassAlias");
IMPORT_CONSTANT(RBS_AST_Declarations_Constant, RBS_AST_Declarations, "Constant");
IMPORT_CONSTANT(RBS_AST_Declarations_Global, RBS_AST_Declarations, "Global");
IMPORT_CONSTANT(RBS_AST_Declarations_Interface, RBS_AST_Declarations, "Interface");
IMPORT_CONSTANT(RBS_AST_Declarations_Module, RBS_AST_Declarations, "Module");
IMPORT_CONSTANT(RBS_AST_Declarations_Module_Self, RBS_AST_Declarations_Module, "Self");
IMPORT_CONSTANT(RBS_AST_Declarations_ModuleAlias, RBS_AST_Declarations, "ModuleAlias");
IMPORT_CONSTANT(RBS_AST_Declarations_TypeAlias, RBS_AST_Declarations, "TypeAlias");
IMPORT_CONSTANT(RBS_AST_Directives_Use, RBS_AST_Directives, "Use");
IMPORT_CONSTANT(RBS_AST_Directives_Use_SingleClause, RBS_AST_Directives_Use, "SingleClause");
IMPORT_CONSTANT(RBS_AST_Directives_Use_WildcardClause, RBS_AST_Directives_Use, "WildcardClause");
IMPORT_CONSTANT(RBS_AST_Members_Alias, RBS_AST_Members, "Alias");
IMPORT_CONSTANT(RBS_AST_Members_AttrAccessor, RBS_AST_Members, "AttrAccessor");
IMPORT_CONSTANT(RBS_AST_Members_AttrReader, RBS_AST_Members, "AttrReader");
IMPORT_CONSTANT(RBS_AST_Members_AttrWriter, RBS_AST_Members, "AttrWriter");
IMPORT_CONSTANT(RBS_AST_Members_ClassInstanceVariable, RBS_AST_Members, "ClassInstanceVariable");
IMPORT_CONSTANT(RBS_AST_Members_ClassVariable, RBS_AST_Members, "ClassVariable");
IMPORT_CONSTANT(RBS_AST_Members_Extend, RBS_AST_Members, "Extend");
IMPORT_CONSTANT(RBS_AST_Members_Include, RBS_AST_Members, "Include");
IMPORT_CONSTANT(RBS_AST_Members_InstanceVariable, RBS_AST_Members, "InstanceVariable");
IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition, RBS_AST_Members, "MethodDefinition");
IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition_Overload, RBS_AST_Members_MethodDefinition, "Overload");
IMPORT_CONSTANT(RBS_AST_Members_Prepend, RBS_AST_Members, "Prepend");
IMPORT_CONSTANT(RBS_AST_Members_Private, RBS_AST_Members, "Private");
IMPORT_CONSTANT(RBS_AST_Members_Public, RBS_AST_Members, "Public");
IMPORT_CONSTANT(RBS_AST_TypeParam, RBS_AST, "TypeParam");
IMPORT_CONSTANT(RBS_MethodType, RBS, "MethodType");
IMPORT_CONSTANT(RBS_Namespace, RBS, "Namespace");
IMPORT_CONSTANT(RBS_TypeName, RBS, "TypeName");
IMPORT_CONSTANT(RBS_Types_Alias, RBS_Types, "Alias");
IMPORT_CONSTANT(RBS_Types_Bases_Any, RBS_Types_Bases, "Any");
IMPORT_CONSTANT(RBS_Types_Bases_Bool, RBS_Types_Bases, "Bool");
IMPORT_CONSTANT(RBS_Types_Bases_Bottom, RBS_Types_Bases, "Bottom");
IMPORT_CONSTANT(RBS_Types_Bases_Class, RBS_Types_Bases, "Class");
IMPORT_CONSTANT(RBS_Types_Bases_Instance, RBS_Types_Bases, "Instance");
IMPORT_CONSTANT(RBS_Types_Bases_Nil, RBS_Types_Bases, "Nil");
IMPORT_CONSTANT(RBS_Types_Bases_Self, RBS_Types_Bases, "Self");
IMPORT_CONSTANT(RBS_Types_Bases_Top, RBS_Types_Bases, "Top");
IMPORT_CONSTANT(RBS_Types_Bases_Void, RBS_Types_Bases, "Void");
IMPORT_CONSTANT(RBS_Types_Block, RBS_Types, "Block");
IMPORT_CONSTANT(RBS_Types_ClassInstance, RBS_Types, "ClassInstance");
IMPORT_CONSTANT(RBS_Types_ClassSingleton, RBS_Types, "ClassSingleton");
IMPORT_CONSTANT(RBS_Types_Function, RBS_Types, "Function");
IMPORT_CONSTANT(RBS_Types_Function_Param, RBS_Types_Function, "Param");
IMPORT_CONSTANT(RBS_Types_Interface, RBS_Types, "Interface");
IMPORT_CONSTANT(RBS_Types_Intersection, RBS_Types, "Intersection");
IMPORT_CONSTANT(RBS_Types_Literal, RBS_Types, "Literal");
IMPORT_CONSTANT(RBS_Types_Optional, RBS_Types, "Optional");
IMPORT_CONSTANT(RBS_Types_Proc, RBS_Types, "Proc");
IMPORT_CONSTANT(RBS_Types_Record, RBS_Types, "Record");
IMPORT_CONSTANT(RBS_Types_Tuple, RBS_Types, "Tuple");
IMPORT_CONSTANT(RBS_Types_Union, RBS_Types, "Union");
IMPORT_CONSTANT(RBS_Types_UntypedFunction, RBS_Types, "UntypedFunction");
IMPORT_CONSTANT(RBS_Types_Variable, RBS_Types, "Variable");
}
Loading