Re: 'with(Foo):' not allowed, why?

2014-08-10 Thread Era Scarecrow via Digitalmars-d-learn
 I've given my thoughts on the D section. It would be heavily 
useful as a shorthand for enums you plan on using a lot in a 
switch case or something, beyond that it could be troublesome...


Re: 'with(Foo):' not allowed, why?

2014-08-09 Thread via Digitalmars-d-learn

On Saturday, 9 August 2014 at 03:46:05 UTC, timotheecour wrote:

On Wednesday, 6 August 2014 at 17:03:23 UTC, Timothee Cour via
Digitalmars-d-learn wrote:
Is there a reason why 'with(Foo):' is not allowed, and we have 
to

use with(Foo){...} ?
It would be more in line with how other scope definitions work 
(extern(C)

etc)


ping, anyone?


Probably for syntactic reasons: `with` is a statement, while 
`extern(C)`, `@safe`, `private` etc. are attributes.


But the idea is certainly nice, it would only require a simple 
rewriting rule.


Re: 'with(Foo):' not allowed, why?

2014-08-09 Thread Messenger via Digitalmars-d-learn

On Saturday, 9 August 2014 at 09:11:53 UTC, Marc Schütz wrote:

On Saturday, 9 August 2014 at 03:46:05 UTC, timotheecour wrote:

On Wednesday, 6 August 2014 at 17:03:23 UTC, Timothee Cour via
Digitalmars-d-learn wrote:
Is there a reason why 'with(Foo):' is not allowed, and we 
have to

use with(Foo){...} ?
It would be more in line with how other scope definitions 
work (extern(C)

etc)


ping, anyone?


Probably for syntactic reasons: `with` is a statement, while 
`extern(C)`, `@safe`, `private` etc. are attributes.


But the idea is certainly nice, it would only require a simple 
rewriting rule.


Also a way to cancel such...

  struct Foo {
  @nogc:

void bar() {
  with (someEnum):
  // ...
  !:with (someEnum)  // ?
  // ...
}

  !:@nogc  // ?

void gcFunction() { /*...*/ }
  }


Re: 'with(Foo):' not allowed, why?

2014-08-09 Thread via Digitalmars-d-learn

On Saturday, 9 August 2014 at 09:11:53 UTC, Marc Schütz wrote:

On Saturday, 9 August 2014 at 03:46:05 UTC, timotheecour wrote:

On Wednesday, 6 August 2014 at 17:03:23 UTC, Timothee Cour via
Digitalmars-d-learn wrote:
Is there a reason why 'with(Foo):' is not allowed, and we 
have to

use with(Foo){...} ?
It would be more in line with how other scope definitions 
work (extern(C)

etc)


ping, anyone?


Probably for syntactic reasons: `with` is a statement, while 
`extern(C)`, `@safe`, `private` etc. are attributes.


But the idea is certainly nice, it would only require a simple 
rewriting rule.


It's surprisingly easy to implement:
https://github.com/schuetzm/dmd/commit/b11368be183fd9b299508722cf8e9c32df2f1ac5

If you think it's useful, you can suggest it on digitalmars.D. If 
it is well-received, I can add some tests and update the 
documentation.


Re: 'with(Foo):' not allowed, why?

2014-08-09 Thread Fgr via Digitalmars-d-learn

On Saturday, 9 August 2014 at 09:52:02 UTC, Messenger wrote:

On Saturday, 9 August 2014 at 09:11:53 UTC, Marc Schütz wrote:

On Saturday, 9 August 2014 at 03:46:05 UTC, timotheecour wrote:

On Wednesday, 6 August 2014 at 17:03:23 UTC, Timothee Cour via
Digitalmars-d-learn wrote:
Is there a reason why 'with(Foo):' is not allowed, and we 
have to

use with(Foo){...} ?
It would be more in line with how other scope definitions 
work (extern(C)

etc)


ping, anyone?


Probably for syntactic reasons: `with` is a statement, while 
`extern(C)`, `@safe`, `private` etc. are attributes.


But the idea is certainly nice, it would only require a simple 
rewriting rule.


Also a way to cancel such...

  struct Foo {
  @nogc:

void bar() {
  with (someEnum):
  // ...
  !:with (someEnum)  // ?
  // ...
}

  !:@nogc  // ?

void gcFunction() { /*...*/ }
  }


with(x):
without(x); // cancel
without(); // cancel following with() declarations order.


with(x):
with(y):
with(z):

without()// no more z
without(x) // no more x
without() // only one remaining so no more y

But isn't the with expression considered as a bad practice 
(whatever the lang. is) ?




Re: 'with(Foo):' not allowed, why?

2014-08-08 Thread timotheecour via Digitalmars-d-learn

On Wednesday, 6 August 2014 at 17:03:23 UTC, Timothee Cour via
Digitalmars-d-learn wrote:
Is there a reason why 'with(Foo):' is not allowed, and we have 
to

use with(Foo){...} ?
It would be more in line with how other scope definitions work 
(extern(C)

etc)


ping, anyone?


'with(Foo):' not allowed, why?

2014-08-06 Thread Timothee Cour via Digitalmars-d-learn
Is there a reason why 'with(Foo):' is not allowed, and we have to
use with(Foo){...} ?
It would be more in line with how other scope definitions work (extern(C)
etc)