Pattern match variable scope : <p>In the <a href="https://github.com/dotnet/roslyn/blob/features/patterns/docs/features/patterns.md#scope-of-pattern-variables" rel="noreferrer">Roslyn Pattern Matching spec</a> it states that:</p>

<blockquote>
  <p>The scope of a pattern variable is as follows:</p>
  
  <p>If the pattern appears in the condition of an if statement, its scope
  is the condition and controlled statement of the if statement, but not
  its else clause.</p>
</blockquote>

<p>However the latest Microsoft "What's new" <a href="https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/" rel="noreferrer">posts</a> and <a href="https://channel9.msdn.com/Events/Connect/2016/105" rel="noreferrer">presentations</a> are showing this example:</p>

<pre><code>public void PrintStars(object o)
{
    if (o is null) return;     // constant pattern "null"
    if (!(o is int i)) return; // type pattern "int i"
    WriteLine(new string('*', i));
}
</code></pre>

<p>Which shows the pattern match <code>i</code> variable used outside the if level scope of the pattern match.</p>

<p>Is this an oversight, or has the scoping been changed from the spec?</p>
