From: Zachary Scott Date: 2015-03-28T01:36:28-07:00 Subject: [ruby-core:68667] Re: [Ruby trunk - Bug #10967] [Open] Is "warning: private attribute?" wrong? --047d7bd76f7c30bbee0512552573 Content-Type: text/plain; charset=UTF-8 I'd like to know the intention behind this warning.. but so far haven't seen it. Also, since this behavior was added in a minor release, we can't really change it now until the next major.. IF we care about semver for this, which may not be the case On Thursday, March 12, 2015, wrote: > Issue #10967 has been updated by Santiago Pastorino. > > > One possible fix (the one removing the warning) ... > https://github.com/ruby/ruby/pull/849 > > ---------------------------------------- > Bug #10967: Is "warning: private attribute?" wrong? > https://bugs.ruby-lang.org/issues/10967#change-51839 > > * Author: Santiago Pastorino > * Status: Open > * Priority: Normal > * Assignee: > * ruby -v: ruby 2.3.0dev (2015-03-01 trunk 49796) [x86_64-darwin14] > * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN > ---------------------------------------- > The following code ... > > ``` > class Y > def initialize > @x = "ZOMG" > end > > def print_x > puts x > end > > private > > attr_reader :x > end > > Y.new.print_x > ``` > > outputs ... > > ``` > test.rb:12: warning: private attribute? > ``` > > I tend to think this warning is wrong, I was surprised by > https://github.com/rack/rack/pull/811 and I think this is a completely > valid use case. > > Also this code ... > > ``` > class Y > def initialize > @x = "ZOMG" > end > > def print_x > puts x > end > > def assign_x > self.x = "ZOMG ZOMG" > end > > private > > attr_accessor :x > end > > y = Y.new > y.assign_x > y.print_x > ``` > > Works fine with warnings also. So a private writer works ok when the > receiver is `self` because Ruby has a special case for it, this make me > think that private writers were thought to be used. > > So ... am I wrong thinking that the warning should be removed or the self > special case shouldn't work and be removed from Ruby code?. It doesn't make > sense to me to have both things. > > > > -- > https://bugs.ruby-lang.org/ > --047d7bd76f7c30bbee0512552573 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I'd like to know the intention behind this warning.. but so far=C2=A0ha= ven't seen it.

Also, since this behavior was added i= n a minor release, we can't really change it now until the next major..= IF we care about semver for this, which may not be the case

On Thursday, March 12, 2015, <santiago@wyeworks.com> wrote:
Issue #10967 has been updated by Santiago Pastorino.


One possible fix (the one removing the warning) ... https://github.com/ruby/ruby/p= ull/849

----------------------------------------
Bug #10967: Is "warning: private attribute?" wrong?
https://bugs.ruby-lang.org/issues/10967#change-51839

* Author: Santiago Pastorino
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v: ruby 2.3.0dev (2015-03-01 trunk 49796) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
The following code ...

```
class Y
=C2=A0 def initialize
=C2=A0 =C2=A0 @x =3D "ZOMG"
=C2=A0 end

=C2=A0 def print_x
=C2=A0 =C2=A0 puts x
=C2=A0 end

=C2=A0 private

=C2=A0 attr_reader :x
end

Y.new.print_x
```

outputs ...

```
test.rb:12: warning: private attribute?
```

I tend to think this warning is wrong, I was surprised by https://github.com/rack/= rack/pull/811 and I think this is a completely valid use case.

Also this code ...

```
class Y
=C2=A0 def initialize
=C2=A0 =C2=A0 @x =3D "ZOMG"
=C2=A0 end

=C2=A0 def print_x
=C2=A0 =C2=A0 puts x
=C2=A0 end

=C2=A0 def assign_x
=C2=A0 =C2=A0 self.x =3D "ZOMG ZOMG"
=C2=A0 end

=C2=A0 private

=C2=A0 attr_accessor :x
end

y =3D Y.new
y.assign_x
y.print_x
```

Works fine with warnings also. So a private writer works ok when the receiv= er is `self` because Ruby has a special case for it, this make me think tha= t private writers were thought to be used.

So ... am I wrong thinking that the warning should be removed or the self s= pecial case shouldn't work and be removed from Ruby code?. It doesn'= ;t make sense to me to have both things.



--
https://bugs.ruby= -lang.org/
--047d7bd76f7c30bbee0512552573--