Re: Iterate module membres

2017-01-07 Thread ketmar via Digitalmars-d-learn

On Saturday, 7 January 2017 at 13:45:53 UTC, crimaniak wrote:


Ok, I found it: https://issues.dlang.org/show_bug.cgi?id=16044


yep. sorry, my search-fu is completely broken, so i didn't 
provide you with the number.


Re: Iterate module membres

2017-01-07 Thread crimaniak via Digitalmars-d-learn


Ok, I found it: https://issues.dlang.org/show_bug.cgi?id=16044


Re: Iterate module membres

2017-01-07 Thread crimaniak via Digitalmars-d-learn

On Saturday, 7 January 2017 at 12:29:34 UTC, ketmar wrote:

On Saturday, 7 January 2017 at 12:11:20 UTC, crimaniak wrote:

Is this a bug or documentation problem?


well, it's hard to say. package.d is one of the cases where you 
*have* to provide explicit module definition. ;-) 'cause 
implicit one creates module with name `package`, which is teh 
keyword. and then all the hell broke loose. this actually may 
be both bug and documentation problem.
  Yes, removing 'module' statement leads to error on 
__traits(allMembers, mixin(__MODULE__)) expression: Error: 
expression expected, not 'package'.

But it's not related, I provide module statement in package.d.



Re: Iterate module membres

2017-01-07 Thread ketmar via Digitalmars-d-learn
p.s.: otherwise, it *should* work with explicit module 
declaration. but then, we have some well-known bugs with 
cross-module introspection, and some heisenbugs with package 
introspection.


Re: Iterate module membres

2017-01-07 Thread ketmar via Digitalmars-d-learn

On Saturday, 7 January 2017 at 12:11:20 UTC, crimaniak wrote:

Is this a bug or documentation problem?


well, it's hard to say. package.d is one of the cases where you 
*have* to provide explicit module definition. ;-) 'cause implicit 
one creates module with name `package`, which is teh keyword. and 
then all the hell broke loose. this actually may be both bug and 
documentation problem.


Re: Iterate module membres

2017-01-07 Thread crimaniak via Digitalmars-d-learn

On Saturday, 7 January 2017 at 10:38:29 UTC, ketmar wrote:
On Saturday, 7 January 2017 at 10:27:51 UTC, Nicholas Wilson 
wrote:

Do you require a module statement per chance?


it doesn't matter. if there is no explicit module declaration, 
compiler will insert implicit one. from the code PoV, there is 
no difference at all.
 Yes, module statement is no reason. package.d is reason. The 
same code in two files:


class foo{};
struct bar{};
pragma (msg, "allMembers of "~__MODULE__~" in "~__FILE__);
pragma(msg, __traits(allMembers, mixin(__MODULE__)));

Result:

allMembers of vcm.bll.event in source/vcm/bll/event/package.d
tuple()
allMembers of vcm.bll.event.test in source/vcm/bll/event/test.d
tuple("object", "vcm", "foo", "bar")

So allMembers gives empty tuple for module in package.d file. 
Please check it. As I understand documentation, package.d is 
ordinary module and special here is only file name used when 
module name is directory.

DMD 2.071.1. Is this a bug or documentation problem?



Re: Iterate module membres

2017-01-07 Thread ketmar via Digitalmars-d-learn
On Saturday, 7 January 2017 at 10:27:51 UTC, Nicholas Wilson 
wrote:

Do you require a module statement per chance?


it doesn't matter. if there is no explicit module declaration, 
compiler will insert implicit one. from the code PoV, there is no 
difference at all.


Re: Iterate module membres

2017-01-07 Thread Nicholas Wilson via Digitalmars-d-learn

On Saturday, 7 January 2017 at 09:46:54 UTC, crimaniak wrote:

Hi!

I need to iterate module members and find specific classes (and 
make tuple).


class foo{};
pragma (msg, __traits(allMembers,mixin(__MODULE__)));

gives me empty tuple. I found also this thread from 2011: 
http://forum.dlang.org/post/mailman.325.1293887146.4748.digitalmars-d-le...@puremagic.com
This is exactly what I need but this code also gives empty 
tuple.
Is this possible for now to iterate classes from module? Is 
this possible to iterate by classes, public imported to module? 
(in fact, I need to iterate classes imported using package.d 
file).


Do you require a module statement per chance?


Re: Iterate module membres

2017-01-07 Thread ketmar via Digitalmars-d-learn

On Saturday, 7 January 2017 at 09:46:54 UTC, crimaniak wrote:

Hi!

I need to iterate module members and find specific classes (and 
make tuple).


class foo{};
pragma (msg, __traits(allMembers,mixin(__MODULE__)));

gives me empty tuple.


works like a charm both in 2.071 and in git HEAD.


Iterate module membres

2017-01-07 Thread crimaniak via Digitalmars-d-learn

Hi!

I need to iterate module members and find specific classes (and 
make tuple).


class foo{};
pragma (msg, __traits(allMembers,mixin(__MODULE__)));

gives me empty tuple. I found also this thread from 2011: 
http://forum.dlang.org/post/mailman.325.1293887146.4748.digitalmars-d-le...@puremagic.com

This is exactly what I need but this code also gives empty tuple.
Is this possible for now to iterate classes from module? Is this 
possible to iterate by classes, public imported to module? (in 
fact, I need to iterate classes imported using package.d file).