From: hanmac@... Date: 2020-07-31T07:34:56+00:00 Subject: [ruby-core:99414] [Ruby master Bug#17093] attr_accessor works strange Issue #17093 has been updated by Hanmac (Hans Mackowiak). This: ``if type.nil? type = 'default' end`` is different from this: `type = 'default' if type.nil?` because of the lexical reading, it reads the setting of local variable first and now assumes that type is local variable in this case ---------------------------------------- Bug #17093: attr_accessor works strange https://bugs.ruby-lang.org/issues/17093#change-86861 * Author: mpavel (pavel m) * Status: Closed * Priority: Normal * ruby -v: ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin17] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- require 'rubygems' class A def initialize(type:) @type = type end def b p type p type.nil? type = 'default' if type.nil? type end private attr_accessor :type end RSpec.describe A do let(:type) { 'whoaaa' } it 'return default' do expect(A.new(type: type).b).to eq('default') end it 'instance variable is "whoaaa"' do expect(A.new(type: type).instance_variable_get(:@type)).to eq(type) end end all tests green output A "whoaaa" false return default instance variable is "whoaaa" -- https://bugs.ruby-lang.org/ Unsubscribe: