Context sensitivity

Bruno Medeiros brunodomedeiros+spam at com.gmail
Fri May 6 05:07:16 PDT 2011


On 03/05/2011 11:18, bearophile wrote:
> I was away.
>
> This is D code adapted from a blog post about C language:
> http://eli.thegreenplace.net/2011/05/02/the-context-sensitivity-of-c%E2%80%99s-grammar-revisited/
>
> http://www.reddit.com/r/programming/comments/h23h3/the_context_sensitivity_of_cs_grammar_revisited/
>
>
> Three little D2 programs that compile with no errors. Similar code is allowed in C too:
>
> //----------------
>
> alias int Foo;
> void foo() {
>      Foo bar;
>      float Foo;
> }
> void main() {}
>
> //----------------
>
> alias int Foo;
> void foo() {
>      Foo Foo;
>      int bar = Foo + 2;
>      assert (bar == 2);
> }
> void main() {}
>
> //----------------
>
> alias char Foo;
> void foo() {
>      int bar = Foo.sizeof, Foo, spam = Foo.sizeof;
>      assert(bar == 1);
>      assert(spam == 4);
> }
> void main() {}
>
> //----------------
>
> Note: currently I have put nothing about this in Bugzilla.
>
> My question is: is it OK to keep allowing such kind of code in D2 too? Or is it better to statically forbid it?
>
> A disadvantage of statically disallowing it is the breakage of some valid C code. On the other hand I don't think I want to find code like that in D programs.
>
> Bye,
> bearophile

This is why there are code conventions that have different rules for 
naming variables/fields and types, so you don't confuse them...

-- 
Bruno Medeiros - Software Engineer


More information about the Digitalmars-d mailing list