Forbid the use of method name "init"
Bruno Medeiros
brunodomedeiros+spam at com.gmail
Tue May 27 15:34:23 PDT 2008
davidl at 126.com wrote:
> ÔÚ Sun, 11 May 2008 05:46:57 +0800£¬Jarrett Billingsley
> <kb3ctd2 at yahoo.com> дµÀ:
>
>> "Frank Benoit" <keinfarbton at googlemail.com> wrote in message
>> news:g052dt$qt4$1 at digitalmars.com...
>>> "init" and other class properties are kind of shadow-keywords.
>>>
>>> class MyClass{
>>> void init(){
>>> }
>>> }
>>>
>>> The class is fine and can be used.
>>> Now someone attempts to insert this class into a container....
>>>
>>> template Templ(T){
>>> T t = T.init; // Compile error
>>> }
>>>
>>> The compiler should forbid the use of the method name "init", if the
>>> signature does not make any sense for an "init" property. It must be a
>>> static method, with a return value and no arguments.
>>
>> This should extend to any semi-reserved name. The compiler used to allow
>> redefinition of 'sizeof' and 'offsetof' but checks were added to disallow
>> that. That mechanism should just be extended.
>>
>>
>
> I filed a bug of forbiding the use of stringof method. But it's markd as
> invalid :(
> http://d.puremagic.com/issues/show_bug.cgi?id=1412
>
I've added my reasoning to that bug report. I guess one could make a
case for redefining 'init', but as for 'stringof', it should be the same
as 'sizeof' and 'offsetof': unextendable, like Jarret mentioned.
--
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
More information about the Digitalmars-d
mailing list