[前][次][番号順一覧][スレッド一覧]

ruby-changes:69329

From: Nobuyoshi <ko1@a...>
Date: Fri, 22 Oct 2021 13:54:14 +0900 (JST)
Subject: [ruby-changes:69329] 9f4f3bd1cc (master): Refinement#include and Refinement#prepend have been deprecated

https://git.ruby-lang.org/ruby.git/commit/?id=9f4f3bd1cc

From 9f4f3bd1cce879d1de906b332353e5e9c051df00 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Fri, 22 Oct 2021 13:53:21 +0900
Subject: Refinement#include and Refinement#prepend have been deprecated

---
 spec/ruby/core/module/refine_spec.rb | 382 ++++++++++++++++++-----------------
 1 file changed, 194 insertions(+), 188 deletions(-)

diff --git a/spec/ruby/core/module/refine_spec.rb b/spec/ruby/core/module/refine_spec.rb
index e3b7fde049..aa9f955e05 100644
--- a/spec/ruby/core/module/refine_spec.rb
+++ b/spec/ruby/core/module/refine_spec.rb
@@ -298,63 +298,65 @@ describe "Module#refine" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/module/refine_spec.rb#L298
       result.should == "foo from IncludeMeLater"
     end
 
-    it "looks in prepended modules from the refinement first" do
-      refined_class = ModuleSpecs.build_refined_class
+    ruby_version_is ""..."3.1" do
+      it "looks in prepended modules from the refinement first" do
+        refined_class = ModuleSpecs.build_refined_class
 
-      refinement = Module.new do
-        refine refined_class do
-          include ModuleSpecs::IncludedModule
-          prepend ModuleSpecs::PrependedModule
+        refinement = Module.new do
+          refine refined_class do
+            include ModuleSpecs::IncludedModule
+            prepend ModuleSpecs::PrependedModule
 
-          def foo; "foo from refinement"; end
+            def foo; "foo from refinement"; end
+          end
         end
-      end
 
-      result = nil
-      Module.new do
-        using refinement
-        result = refined_class.new.foo
+        result = nil
+        Module.new do
+          using refinement
+          result = refined_class.new.foo
+        end
+
+        result.should == "foo from prepended module"
       end
 
-      result.should == "foo from prepended module"
-    end
+      it "looks in refinement then" do
+        refined_class = ModuleSpecs.build_refined_class
 
-    it "looks in refinement then" do
-      refined_class = ModuleSpecs.build_refined_class
+        refinement = Module.new do
+          refine(refined_class) do
+            include ModuleSpecs::IncludedModule
 
-      refinement = Module.new do
-        refine(refined_class) do
-          include ModuleSpecs::IncludedModule
+            def foo; "foo from refinement"; end
+          end
+        end
 
-          def foo; "foo from refinement"; end
+        result = nil
+        Module.new do
+          using refinement
+          result = refined_class.new.foo
         end
-      end
 
-      result = nil
-      Module.new do
-        using refinement
-        result = refined_class.new.foo
+        result.should == "foo from refinement"
       end
 
-      result.should == "foo from refinement"
-    end
+      it "looks in included modules from the refinement then" do
+        refined_class = ModuleSpecs.build_refined_class
 
-    it "looks in included modules from the refinement then" do
-      refined_class = ModuleSpecs.build_refined_class
+        refinement = Module.new do
+          refine refined_class do
+            include ModuleSpecs::IncludedModule
+          end
+        end
 
-      refinement = Module.new do
-        refine refined_class do
-          include ModuleSpecs::IncludedModule
+        result = nil
+        Module.new do
+          using refinement
+          result = refined_class.new.foo
         end
-      end
 
-      result = nil
-      Module.new do
-        using refinement
-        result = refined_class.new.foo
+        result.should == "foo from included module"
       end
-
-      result.should == "foo from included module"
     end
 
     it "looks in the class then" do
@@ -704,55 +706,57 @@ describe "Module#refine" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/module/refine_spec.rb#L706
       result.should == "foo"
     end
 
-    it "looks in the refined class from included module" do
-      refined_class = ModuleSpecs.build_refined_class(for_super: true)
+    ruby_version_is ""..."3.1" do
+      it "looks in the refined class from included module" do
+        refined_class = ModuleSpecs.build_refined_class(for_super: true)
 
-      a = Module.new do
-        def foo
-          [:A] + super
+        a = Module.new do
+          def foo
+            [:A] + super
+          end
         end
-      end
 
-      refinement = Module.new do
-        refine refined_class do
-          include a
+        refinement = Module.new do
+          refine refined_class do
+            include a
+          end
         end
-      end
 
-      result = nil
-      Module.new do
-        using refinement
+        result = nil
+        Module.new do
+          using refinement
 
-        result = refined_class.new.foo
-      end
+          result = refined_class.new.foo
+        end
 
-      result.should == [:A, :C]
-    end
+        result.should == [:A, :C]
+      end
 
-    it "looks in the refined ancestors from included module" do
-      refined_class = ModuleSpecs.build_refined_class(for_super: true)
-      subclass = Class.new(refined_class)
+      it "looks in the refined ancestors from included module" do
+        refined_class = ModuleSpecs.build_refined_class(for_super: true)
+        subclass = Class.new(refined_class)
 
-      a = Module.new do
-        def foo
-          [:A] + super
+        a = Module.new do
+          def foo
+            [:A] + super
+          end
         end
-      end
 
-      refinement = Module.new do
-        refine refined_class do
-          include a
+        refinement = Module.new do
+          refine refined_class do
+            include a
+          end
         end
-      end
 
-      result = nil
-      Module.new do
-        using refinement
+        result = nil
+        Module.new do
+          using refinement
 
-        result = subclass.new.foo
-      end
+          result = subclass.new.foo
+        end
 
-      result.should == [:A, :C]
+        result.should == [:A, :C]
+      end
     end
 
     # super in a method of a refinement invokes the method in the refined
@@ -816,175 +820,177 @@ describe "Module#refine" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/module/refine_spec.rb#L820
       end
     end
 
-    it "does't have access to active refinements for C from included module" do
-      refined_class = ModuleSpecs.build_refined_class
+    ruby_version_is ""..."3.1" do
+      it "does't have access to active refinements for C from included module" do
+        refined_class = ModuleSpecs.build_refined_class
 
-      a = Module.new do
-        def foo
-          super + bar
+        a = Module.new do
+          def foo
+            super + bar
+          end
         end
-      end
 
-      refinement = Module.new do
-        refine refined_class do
-          include a
+        refinement = Module.new do
+          refine refined_class do
+            include a
 
-          def bar
-            "bar is not seen from A methods"
+            def bar
+              "bar is not seen from A methods"
+            end
           end
         end
-      end
 
-      Module.new do
-        using refinement
-        -> {
-          refined_class.new.foo
-        }.should raise_error(NameError) { |e| e.name.should == :bar }
+        Module.new do
+          using refinement
+          -> {
+            refined_class.new.foo
+          }.should raise_error(NameError) { |e| e.name.should == :bar }
+        end
       end
-    end
 
-    it "does't have access to other active refinements from included module" do
-      refined_class = ModuleSpecs.build_refined_class
+      it "does't have access to other active refinements from included module" do
+        refined_class = ModuleSpecs.build_refined_class
 
-      refinement_integer = Module.new do
-        refine Integer do
-          def bar
-            "bar is not seen from A methods"
+        refinement_integer = Module.new do
+          refine Integer do
+            def bar
+              "bar is not seen from A methods"
+            end
           end
         end
-      end
 
-      a = Module.new do
-        def foo
-          super + 1.bar
+        a = Module.new do
+          def foo
+            super + 1.bar
+          end
         end
-      end
 
-      refinement = Module.new do
-        refine refined_class do
-          include a
+        refinement = Module.new do
+          refine refined_class do
+            include a
+          end
         end
-      end
 
-      Module.new do
-        using refinement
-        using refinement_integer
-        -> {
-          refined_class.new.foo
-        }.should raise_error(NameError) { |e| e.name.should == :bar }
+        Module.new do
+          using refinement
+          using refinement_integer
+          -> {
+            refined_class.new.foo
+          }.should raise_error(NameError) { |e| e.name.should == :bar }
+        end
       end
-    end
 
-    # https://bugs.ruby-lang.org/issues/16977
-    it "looks in the another active refinement if super called from included modules" do
-      refined_class = ModuleSpecs.build_refined_class(for_super: true)
+      # https://bugs.ruby-lang.org/issues/16977
+      it "looks in the another active refinement if super called from included modules" do
+        refined_class = ModuleSpecs.build_refined_class(for_super: true)
 
-      a = Module.new do
-        def foo
-          [:A] + super
+        a = Module.new do
+          def foo
+            [:A] + super
+          end
         end
-      end
 
-      b = Module.new do
-        def foo
-          [:B] + super
+        b = Module.new do
+          def foo
+            [:B] + super
+          end
         end
-      end
 
-      refinement_a = Module.new do
-        refine refined_class do
-          include a
+        refinement_a = Module.new do
+          refine refined_class do
+            include a
+          end
         end
-      end
 
-      (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]