alias to fully qualified enum in scope where enum is expected

2014-08-06 Thread Timothee Cour via Digitalmars-d-learn
Is there a simple way to to do this?

enum A{
a1,
a2
}

void fun(A a){...}
void test(){
 fun(A.a1); //works
 fun(a1); //I'd like a1 to work, but just where an A is expected to avoid
polluting namespace.
}


Re: alias to fully qualified enum in scope where enum is expected

2014-08-06 Thread Rikki Cattermole via Digitalmars-d-learn

On 6/08/2014 6:11 p.m., Timothee Cour via Digitalmars-d-learn wrote:

Is there a simple way to to do this?

enum A{
a1,
a2
}

void fun(A a){...}
void test(){
  fun(A.a1); //works
  fun(a1); //I'd like a1 to work, but just where an A is expected to
avoid polluting namespace.
}


The magic of with statements!

enum A {
a1,
a2
}

void func(A a){}
void main(){
func(A.a1);
with(A) {
func(a1);
}
}



Re: alias to fully qualified enum in scope where enum is expected

2014-08-06 Thread Meta via Digitalmars-d-learn
On Wednesday, 6 August 2014 at 07:23:32 UTC, Rikki Cattermole 
wrote:

The magic of with statements!

enum A {
a1,
a2
}

void func(A a){}
void main(){
func(A.a1);
with(A) {
func(a1);
}
}


And if you want to be *really* concise:

with (A) fun(a1);


Re: alias to fully qualified enum in scope where enum is expected

2014-08-06 Thread Timothee Cour via Digitalmars-d-learn
Thanks, I know with statement could be used but I was hoping for a solution
not involving adding syntax to call site.

void fun(with(A){A a}, int b){...} //conceptually like this
void test(){
 int a1=1;
 fun(A.a1, a1); // would work
 fun(a1, a1);// would work
}


On Wed, Aug 6, 2014 at 8:22 AM, Meta via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com wrote:

 On Wednesday, 6 August 2014 at 07:23:32 UTC, Rikki Cattermole wrote:

 The magic of with statements!

 enum A {
 a1,
 a2
 }

 void func(A a){}
 void main(){
 func(A.a1);
 with(A) {
 func(a1);
 }
 }


 And if you want to be *really* concise:

 with (A) fun(a1);



Re: alias to fully qualified enum in scope where enum is expected

2014-08-06 Thread via Digitalmars-d-learn
On Wednesday, 6 August 2014 at 16:48:57 UTC, Timothee Cour via 
Digitalmars-d-learn wrote:
Thanks, I know with statement could be used but I was hoping 
for a solution

not involving adding syntax to call site.


If you control the declaration of the enum, you could write:

alias a1 = A.a1;
alias a2 = A.a2;

A bit tedious, but it works, and could be automated if need be.


Re: alias to fully qualified enum in scope where enum is expected

2014-08-06 Thread Timothee Cour via Digitalmars-d-learn
On Wed, Aug 6, 2014 at 12:04 PM, via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com wrote:

 On Wednesday, 6 August 2014 at 16:48:57 UTC, Timothee Cour via
 Digitalmars-d-learn wrote:

 Thanks, I know with statement could be used but I was hoping for a
 solution
 not involving adding syntax to call site.


 If you control the declaration of the enum, you could write:

 alias a1 = A.a1;
 alias a2 = A.a2;

 A bit tedious, but it works, and could be automated if need be.


yes, but that pollutes the scope, what I wanted was to only expose the
aliases in places where A is expected, see motivational in previous message:

void fun(with(A){A a}, int b){...} //conceptually like this
void test(){
 int a1=1;
 fun(A.a1, a1);
 fun(a1, a1);// first a1 refers to A.a1, second one to local variable
int a1
}

ok I guess this isn't possible using current semantics.