return CreateConstantResult (ec, !c.IsNull);
//
- // Do not optimize for imported type
+ // Do not optimize for imported type or dynamic type
//
if (d.MemberDefinition.IsImported && d.BuiltinType != BuiltinTypeSpec.Type.None &&
d.MemberDefinition.DeclaringAssembly != t.MemberDefinition.DeclaringAssembly) {
return this;
}
+
+ if (d.BuiltinType == BuiltinTypeSpec.Type.Dynamic)
+ return this;
//
// Turn is check into simple null check for implicitly convertible reference types
Assert (d2 >= null, false, "#3a");
}
+ void IsTest ()
+ {
+ dynamic d = 1;
+ Assert (d is long, false, "#1");
+ Assert (d is int, true, "#2");
+ Assert (d is string, false, "#3");
+ }
+
void LeftShiftTest ()
{
dynamic d = (ulong) 0x7F000;
<size>14</size>\r
</method>\r
</type>\r
+ <type name="Tester">\r
+ <method name="Void IsTest()" attrs="129">\r
+ <size>69</size>\r
+ </method>\r
+ </type>\r
</test>\r
<test name="dtest-007.cs">\r
<type name="D">\r