From: valtri@... Date: 2016-06-19T18:54:27+00:00 Subject: [ruby-core:76078] [Ruby trunk Bug#12437] Is it "legal" to call collect! in class initializer? Issue #12437 has been updated by Franti��ek Dvo����k. File collect-workaround.rb added Actually it could be fixed by reverting this patch: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=52591 Or it is possible to worked around that in the "Category" class by using custom collect method with the old code. So the question is, how it is from ruby language point of view? The revision 52591 is announced as micro-optimization, so it could be safe to remove it... ---------------------------------------- Bug #12437: Is it "legal" to call collect! in class initializer? https://bugs.ruby-lang.org/issues/12437#change-59280 * Author: Vit Ondruch * Status: Assigned * Priority: Normal * Assignee: Akinori MUSHA * ruby -v: ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux] * Backport: 2.1: DONTNEED, 2.2: DONTNEED, 2.3: REQUIRED ---------------------------------------- Is there any reason the following script should not work? ```ruby #! /usr/bin/ruby require 'set' class Categories < Set def initialize(categories=[]) categories.collect! { |category| category } if categories super categories end end categories = Categories.new() categories += [1, 2, 3] p categories categories2 = Categories.new(categories) p categories2 ``` It fails with ```stack level too deep (SystemStackError)``` error and this regression seems to be introduced by r52591. For details, please take a look at original issue reported here: https://bugzilla.redhat.com/show_bug.cgi?id=1308057 ---Files-------------------------------- collect-workaround.rb (452 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: