Code Review: BugFixesZ3

tfpt review “/shelveset:BugFixesZ3;REDMOND\tomat”

DLR:
Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3183:
OutAttribute on parameters whose type is not ByRef should be ignored.
The attribute is only used by native marshaller.

Removes dead and duplicate code (various reflection related helpers) and
moves them to ReflectionUtils or TypeUtils.

Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=957.
Removes non-null restriction on the instance parameter of an extension
method - C# allows to call the extension method on null value:
public static class Ext {
public static bool IsNull(this object value) {
return value == null;
}
}

  public static void F(object o) {
    Console.WriteLine(o.IsNull());
  }

  public static void Main() {
    F(null);
  }

We also didn’t recognize extension methods correctly if they are
compiled by desktop C# 3.0 (our IsExtension method only detected those
that are compiled by us and thus use ExtensionAttribute in
ExtensionAttribute.dll). This causes binding to extension methods to
behave differently on desktop CLR from Silverlight. The fix is to use
ExtensionAttribute from System.Core v3.5 assembly if it is available at
runtime.

Ruby:
Fixes
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2827: adds
ToString, GetHashCode, GetType methods on NilClass.
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2914
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2913
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3068
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2962

Tomas