[Ironruby-core] IronRuby and Me
Tomas.Matousek at microsoft.com
Tue Nov 10 22:00:13 EST 2009
Yes, the reason is that .NET naming guidelines says that two-letter abbreviations are not camel-cased. That means we have names like GetIPAddress, PI, GetILGenerator etc. These are mangled to get_ip_address, pi, get_il_generator (not get_i_p_address, p_i, or get_i_l_generator). Unmangling is inverse of mangling (name == unmangle(mangle(name))), thus unmangling cannot turn "ip" into "Ip".
Name-mangling is only heuristics. If some name doesn't follow the guidelines or is ambiguous (let's say "IT" in ITManager vs. "It" in ItJustWorks) then you need to use regular name.
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Martin Smith
Sent: Tuesday, November 10, 2009 6:36 PM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] IronRuby and Me
Thanks guys. Appreciate the (detailed) response.
Actually, this explains quite a bit. I've run into times sporadically where i'd be using the mangled name and it wouldn't be recognized and had no ready explanation for it.
Is there a specific reason that two letter words arent mangled? (I was looking in the comments of RubyUtils.cs but didn't find anything :-P ).
On Tue, Nov 10, 2009 at 5:45 PM, Jimmy Schementi <Jimmy.Schementi at microsoft.com> wrote:
> Expected, but also a bug. IronRuby will not provide a mangled name if the method name contains a 2-letter-word that is not in this list:
> This list is pretty arbitrary ... so "me" can probably be added to it. FYI, the code is in Merlin\Main\Languages\Ruby\Ruby\Runtime\RubyUtils.cs#TryMangleName (approx. line 298).
>> -----Original Message-----
>> From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-
>> bounces at rubyforge.org] On Behalf Of Martin Smith
>> Sent: Tuesday, November 10, 2009 4:48 PM
>> To: ironruby-core at rubyforge.org
>> Subject: [Ironruby-core] IronRuby and Me
>> Hello again (sorry for the double post),
>> We've noticed some slightly odd behavior. IronRuby, it seems, won't
>> mangle methods that have the word "Me" in them, so if I have a method:
>> UncheckMeAndMyChildren, uncheck_me_and_my_children won't work
>> but for:
>> UncheckSelfAndMyChildren, uncheck_self_and_my_children DOES work.
>> Is this a bug or the expected behavior?
>> Ironruby-core mailing list
>> Ironruby-core at rubyforge.org
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
Ironruby-core mailing list
Ironruby-core at rubyforge.org
More information about the Ironruby-core