Context sensitivity

bearophile bearophileHUGS at lycos.com
Tue May 3 03:18:23 PDT 2011


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


More information about the Digitalmars-d mailing list