Fix #47991. Remove a TODO.
* statement.cs (Block.Toplevel): Make into a field.
(Block.Parameters): Move into ToplevelBlock.
(Block.known_variables): Rename from child_variable_names.
(Block.Block): Remove variants that take Parameters. Initialize
'Toplevel' with the immediately surrounding toplevel block.
(Block.AddKnownVariable): Rename from AddChildVariableName. Add a
LocalInfo parameter.
(Block.GetKnownVariableInfo): New.
(Block.IsVariableNameUsedInChildBlock): Update.
(Block.IsVariableNameUsedInBlock): New. Checks if a name is used in
the block, even though it may not be in scope.
(Block.AddVariable): Remove Parameters parameter. Use
Toplevel.Parameters instead.
(Block.AddConstant): Remove Parameters parameter.
(Block.GetParameterReference): Update to use Toplevel.Parameters.
(Block.IsParamaterReference): Likewise.
(Block.IsLocalParameter): Likewise. Simplify a lot.
(ToplevelBlock.Parameters): New. Moved from Block.
(ToplevelBlock.ToplevelBlock): Update to changes. Always
initialize Parameters to a non-null value.
* cs-parser.jay: Update to changes.
* ecore.cs (SimpleName.SimpleNameResolve): Emit cs0136 error for
simple names that mean different things in the same block. Use
Block.IsVariableNameUsedInBlock.
In errors:
* cs0136-3.cs, cs0136-4.cs: New tests from #47991.
svn path=/trunk/mcs/; revision=42330