On Fri, 05 Dec 2014 07:06:34 +0000
Andre via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

> Hi,
> 
> following coding fails to compile with 2.066.0 and
> 2.067.0-b1.
> 
> 
> This is a bug, or?
> source\app.d(9): Error: mixin 
> app.Data.insertReadMethods!("readTinyInt", ubyte)
> is not defined
> 
> template insertReadMethods(string MethodName, DataType)
> {
>       enum insertReadMethods = "";
> }
> 
> struct Data
> {
>       mixin insertReadMethods!("readTinyInt", ubyte);
>       mixin insertReadMethods!("readTinyInt", ubyte);
> }
> 
> void main(){}
i.e. "mixin template" inserts it's names into the same scope, and
compiler searching symbols from innermost scope up to module scope.

here first mixin inserts 'enum' member, and searching for second mixin
hits that enum member. to avoid things going out of control compiler is
not trying to guess what you want but stops with error, giving you a
chance to fix the code.

Attachment: signature.asc
Description: PGP signature

Reply via email to