Skip to content

Commit 2651959

Browse files
committed
[GR-45621] Remove C-functions related to the taint feature
PullRequest: truffleruby/4256
2 parents cc2d014 + d5782a1 commit 2651959

File tree

8 files changed

+67
-21
lines changed

8 files changed

+67
-21
lines changed

lib/cext/include/truffleruby/truffleruby-abi-version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@
2020
// $RUBY_VERSION must be the same as TruffleRuby.LANGUAGE_VERSION.
2121
// $ABI_NUMBER starts at 1 and is incremented for every ABI-incompatible change.
2222

23-
#define TRUFFLERUBY_ABI_VERSION "3.2.2.12"
23+
#define TRUFFLERUBY_ABI_VERSION "3.2.2.13"
2424

2525
#endif

spec/ruby/core/module/include_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,34 @@ def self.append_features(mod)
4747
-> { ModuleSpecs::SubclassSpec.include(ModuleSpecs::Subclass.new) }.should_not raise_error(TypeError)
4848
end
4949

50+
ruby_version_is ""..."3.2" do
51+
it "raises ArgumentError when the argument is a refinement" do
52+
refinement = nil
53+
54+
Module.new do
55+
refine String do
56+
refinement = self
57+
end
58+
end
59+
60+
-> { ModuleSpecs::Basic.include(refinement) }.should raise_error(ArgumentError, "refinement module is not allowed")
61+
end
62+
end
63+
64+
ruby_version_is "3.2" do
65+
it "raises a TypeError when the argument is a refinement" do
66+
refinement = nil
67+
68+
Module.new do
69+
refine String do
70+
refinement = self
71+
end
72+
end
73+
74+
-> { ModuleSpecs::Basic.include(refinement) }.should raise_error(TypeError, "Cannot include refinement")
75+
end
76+
end
77+
5078
it "imports constants to modules and classes" do
5179
ModuleSpecs::A.constants.should include(:CONSTANT_A)
5280
ModuleSpecs::B.constants.should include(:CONSTANT_A, :CONSTANT_B)

spec/ruby/core/module/prepend_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,34 @@ module M
435435
-> { ModuleSpecs::SubclassSpec.prepend(ModuleSpecs::Subclass.new) }.should_not raise_error(TypeError)
436436
end
437437

438+
ruby_version_is ""..."3.2" do
439+
it "raises ArgumentError when the argument is a refinement" do
440+
refinement = nil
441+
442+
Module.new do
443+
refine String do
444+
refinement = self
445+
end
446+
end
447+
448+
-> { ModuleSpecs::Basic.prepend(refinement) }.should raise_error(ArgumentError, "refinement module is not allowed")
449+
end
450+
end
451+
452+
ruby_version_is "3.2" do
453+
it "raises a TypeError when the argument is a refinement" do
454+
refinement = nil
455+
456+
Module.new do
457+
refine String do
458+
refinement = self
459+
end
460+
end
461+
462+
-> { ModuleSpecs::Basic.prepend(refinement) }.should raise_error(TypeError, "Cannot prepend refinement")
463+
end
464+
end
465+
438466
it "imports constants" do
439467
m1 = Module.new
440468
m1::MY_CONSTANT = 1

spec/tags/core/refinement/include_tags.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

spec/tags/core/refinement/prepend_tags.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/main/c/cext/globals.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,6 @@ VALUE rb_gv_get(const char *name) {
7676
return RUBY_CEXT_INVOKE("rb_gv_get", rb_str_new_cstr(name));
7777
}
7878

79-
// $SAFE
80-
81-
void rb_check_trusted(VALUE obj) {
82-
rb_warning("rb_check_trusted is deprecated and will be removed in Ruby 3.2.");
83-
}
84-
8579
// $VERBOSE
8680

8781
VALUE rb_tr_ruby_verbose_ptr;

src/main/c/cext/string.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,6 @@ VALUE rb_str_new_static(const char *string, long length) {
7272
return rb_str_new(string, length);
7373
}
7474

75-
VALUE rb_tainted_str_new(const char *ptr, long len) {
76-
rb_warning("rb_tainted_str_new is deprecated and will be removed in Ruby 3.2.");
77-
return rb_str_new(ptr, len);
78-
}
79-
8075
VALUE rb_str_new_cstr(const char *string) {
8176
// TODO CS 24-Oct-17 would be nice to read in one go rather than strlen followed by read
8277
size_t len = strlen(string);
@@ -91,11 +86,6 @@ VALUE rb_str_new_with_class(VALUE str, const char *string, long len) {
9186
return RUBY_INVOKE(RUBY_INVOKE(str, "class"), "new", rb_str_new(string, len));
9287
}
9388

94-
VALUE rb_tainted_str_new_cstr(const char *ptr) {
95-
rb_warning("rb_tainted_str_new_cstr is deprecated and will be removed in Ruby 3.2.");
96-
return rb_str_new_cstr(ptr);
97-
}
98-
9989
VALUE rb_str_dup(VALUE string) {
10090
return rb_obj_dup(string);
10191
}

src/main/ruby/truffleruby/core/module.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,17 @@ def include?(mod)
7979
def include(*modules)
8080
raise ArgumentError, 'wrong number of arguments (given 0, expected 1+)' if modules.empty?
8181
if Primitive.is_a?(self, Refinement)
82-
warn 'Refinement#include is deprecated and will be removed in Ruby 3.2', category: :deprecated, uplevel: 1
82+
raise TypeError, 'Refinement#include has been removed'
8383
end
8484
modules.reverse_each do |mod|
8585
if !Primitive.is_a?(mod, Module) or Primitive.is_a?(mod, Class)
8686
raise TypeError, "wrong argument type #{Primitive.class(mod)} (expected Module)"
8787
end
8888

89+
if Primitive.is_a?(mod, Refinement)
90+
raise TypeError, 'Cannot include refinement'
91+
end
92+
8993
mod.__send__ :append_features, self
9094
mod.__send__ :included, self
9195
end
@@ -95,13 +99,17 @@ def include(*modules)
9599
def prepend(*modules)
96100
raise ArgumentError, 'wrong number of arguments (given 0, expected 1+)' if modules.empty?
97101
if Primitive.is_a?(self, Refinement)
98-
warn 'Refinement#prepend is deprecated and will be removed in Ruby 3.2', category: :deprecated, uplevel: 1
102+
raise TypeError, 'Refinement#prepend has been removed'
99103
end
100104
modules.reverse_each do |mod|
101105
if !Primitive.is_a?(mod, Module) or Primitive.is_a?(mod, Class)
102106
raise TypeError, "wrong argument type #{Primitive.class(mod)} (expected Module)"
103107
end
104108

109+
if Primitive.is_a?(mod, Refinement)
110+
raise TypeError, 'Cannot prepend refinement'
111+
end
112+
105113
mod.__send__ :prepend_features, self
106114
mod.__send__ :prepended, self
107115
end

0 commit comments

Comments
 (0)