[#57574] [ruby-trunk - Feature #8976][Open] file-scope freeze_string directive — "akr (Akira Tanaka)" <akr@...>

70 messages 2013/10/02

[#57579] [ruby-trunk - Feature #8977][Open] String#frozen that takes advantage of the deduping — "sam.saffron (Sam Saffron)" <sam.saffron@...>

25 messages 2013/10/02

[#57679] [ruby-trunk - Feature #8987][Open] map/collect extension which handles arguments — "sowieso (So Wieso)" <sowieso@...>

16 messages 2013/10/05

[#57705] [ruby-trunk - Feature #8992][Open] Use String#freeze and compiler tricks to replace "str"f suffix — "headius (Charles Nutter)" <headius@...>

43 messages 2013/10/07

[#57727] [ruby-trunk - Feature #8998][Open] string keys for hash literals should use fstrings — "normalperson (Eric Wong)" <normalperson@...>

17 messages 2013/10/08

[#57771] [ruby-trunk - Bug #9008][Open] TestProcess#test_clock_getres_constants and TestProcess#test_clock_gettime_constants fails on ARM — "vo.x (Vit Ondruch)" <v.ondruch@...>

15 messages 2013/10/09

[#57888] [ruby-trunk - Feature #9025][Open] Clarify the error message when calling a method with the wrong number of arguments — Nerian (Gonzalo Rodríguez) <siotopo@...>

11 messages 2013/10/15

[#57993] [ruby-trunk - Feature #9047][Open] Alternate hash key syntax for symbols — "jamonholmgren (Jamon Holmgren)" <jamon@...>

13 messages 2013/10/23

[#58007] [ruby-trunk - Feature #9049][Open] Shorthands (a:b, *) for inclusive indexing — "mohawkjohn (John Woods)" <john.o.woods@...>

25 messages 2013/10/24

[#58033] [ruby-trunk - Bug #9053][Open] SSL Issue with Ruby 2.0.0 — "tisba (Sebastian Cohnen)" <ruby-lang@...>

16 messages 2013/10/25

[#58080] [ruby-trunk - Feature #9064][Open] Add support for packages, like in Java — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

23 messages 2013/10/30

[ruby-core:58085] Re: [ruby-trunk - Feature #9064] Add support for packages, like in Java

From: David MacMahon <davidm@...>
Date: 2013-10-30 20:15:41 UTC
List: ruby-core #58085
On Oct 30, 2013, at 12:54 PM, rosenfeld (Rodrigo Rosenfeld Rosas) wrote:

> David, I agree with you, and actually, I'd be already happy if "class" created the modules on the fly, but it can't without breaking compatibility, specially because it's not possible to know if the parents would be modules or classes...

Currently, using `module Foo::Bar` will raise NameError if Foo is not yet defined, so how would it break backwards compatibility if the behavior were changed to create all undefined parents as modules?  You might still end up with as error later if something else tried to create class Foo, so some cases would not benefit from this (just get a different error at a different point), but it would simplify the syntax for cases where Foo really is a module.

On a semi-related note, I find it mildly frustrating that all openings of a class requires specifying the same superclass.  Sometimes I just want to add a constant or simple method to a class, so it would be nice to be able to re-open that class without having to explicitly specify the same superclasses every time.  It would be nice if the following were allowed:

class Foo < Bar; end # class Foo extends Bar
class Foo; end       # class Foo still extends Bar

...and...

class Foo; end       # class Foo has Object as a "stand-in" superclass 
class Foo < Bar; end # class Foo replaces Bar as its "official" superclass

...and...

Of course, specifying conflicting explicit superclasses would still be an error.

class Foo < Object; end # class Foo has Object as its "official" superclass
class Foo < Bar; end    # error, inconsistent explicit superclass

Dave

In This Thread