title: variable scope in statement blocks
body: <pre><code>for (int i = 0; i &lt; 10; i++)
  {
      Foo();
  }
  int i = 10; // error, 'i' already exists
  
  ----------------------------------------    
  
  for (int i = 0; i &lt; 10; i++)
  {
      Foo();
  }
  i = 10; // error, 'i' doesn't exist
  </code></pre>
  
  <p>By my understanding of scope, the first example should be fine. The fact neither of them are allowed seems even more odd. Surely 'i' is either in scope or not. </p>
  
  <p>Is there something non-obvious about scope I don't understand which means the compiler genuinely can't resolve this? Or is just a case of nanny-state compilerism? </p>