Fighting with alias this: bugs or features?

"Jérôme M. Berger" jeberger at free.fr
Tue Oct 26 13:22:41 PDT 2010


Jonathan M Davis wrote:
> On Tuesday, October 26, 2010 09:35:21 osa wrote:
>> Every time I'm trying to use alias this (which looks like a nice
>> feature, on paper), I end up with problems. This is the most recent one
>> (dmd v2.049):
>> ------
>> struct Foo {}
>> class Bar {
>>      Foo foo_;
>>      alias foo_ this;
>> }
>>
>> void main() {
>>      auto a = new Bar;
>>      auto b = a;
>>      a = null; // fails -- Error: cannot implicitly convert expression
>> (null) of type void* to Foo
>> }
>> ------
>> There are plenty of 'alias this' issues in Bugzilla, but I cannot find
>> this particular problem there. So is this a bug or feature? The language
>> spec does not help do decide...
> 
> If you can't find a bug report for it, report it. I don't see how it could 
> possibly be a feature that null couldn't be converted. Any pointer or reference 
> type should be assignable to null. And in general, it's probably better to 
> report a bug if you're not sure. If it's not valid, it'll get closed, but odds 
> are that it's something that needs to be fixed.
> 
	I'm not sure that the problem is on the line where the error is
reported. My guess would be that the issue is with the "auto a = new
Bar" line: I would bet that this gets interpreted as "Foo a = new
Bar" instead of what we expect ("Bar a = new Bar"). If I'm right,
then the "a = null" line is indeed an error: since Foo is a struct
and structs are value types, you cannot affect "null" to a variable
of type Foo...

		Jerome
-- 
mailto:jeberger at free.fr
http://jeberger.free.fr
Jabber: jeberger at jabber.fr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20101026/ab6bbb3d/attachment.pgp>


More information about the Digitalmars-d mailing list