+ if (expr_type == InternalType.Dynamic) {
+ switch (target_type.Kind) {
+ case MemberKind.ArrayType:
+ case MemberKind.Class:
+ if (target_type == TypeManager.object_type)
+ return EmptyCast.Create (expr, target_type);
+
+ goto case MemberKind.Struct;
+ case MemberKind.Struct:
+ case MemberKind.Delegate:
+ case MemberKind.Enum:
+ case MemberKind.Interface:
+ case MemberKind.TypeParameter:
+ Arguments args = new Arguments (1);
+ args.Add (new Argument (expr));
+ return new DynamicConversion (target_type, 0, args, loc).Resolve (ec);
+ }
+
+ return null;
+ }
+