On 8/14/2016 12:39 PM, Walter Bright wrote:
On 8/14/2016 7:42 AM, Dicebot wrote:
2) Ignoring `scope` for variables with no indirections.

The fact that DMD is extremely accepting when it comes to nonsense
declarations/attributes has been is notable contribution to harming
learning curve. It often tricks new developers into thinking that their
code is checked for something when in fact compiler simply silently
skips extra annotations.

Instead, nonsense application of `scope` to data with no indirections
should be deprecated completely as part of overall deprecation process
for implementing the proposal.

The difficulty with that is dealing with generic types.

Consider another case:

  struct S {
    int i;
    int* p;
  }

  scope S s;

  return s.i; // ok
  return s.p; // error!

The 'scope' only applies to the indirection parts of a type. Therefore,

  scope int i;

should not be an error.

Reply via email to