[Mono-bugs] [Bug 75668][Wis] New - GMCS Incorrect 'as' Operator Behavior With Class Constraint

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Sat Jul 30 12:12:48 EDT 2005

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by stephen at covidimus.net.


--- shadow/75668	2005-07-30 12:12:48.000000000 -0400
+++ shadow/75668.tmp.23103	2005-07-30 12:12:48.000000000 -0400
@@ -0,0 +1,65 @@
+Bug#: 75668
+Product: Mono: Compilers
+Version: 1.0
+OS Details: 
+Status: NEW   
+Priority: Wishlist
+Component: C#
+AssignedTo: mono-bugs at ximian.com                            
+ReportedBy: stephen at covidimus.net               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+Summary: GMCS Incorrect 'as' Operator Behavior With Class Constraint
+Description of Problem:
+Gmcs appears to recognize and accept a class constraint (where T:class) on
+a generic method, but the 'as' operator doesn't work as it should when the
+class constraint is applied.
+Code to Reproduce the Problem:
+ public static T QueryInterface<T>(object val)
+   where T : class
+ {
+     if (val == null)
+         return null;
+     // First, see if the given object can be directly cast
+     // to the requested type.  This will be a common case,
+     // especially when checking for standard behavior interface
+     // implementations (like IXrcDataElement).
+     T tval = val as T;
+     if (tval != null)
+         return tval;
+     // ... rest of method unimportant and omitted ...
+     return null;
+ }
+Actual Results:
+Xircle.Core/src/Core/XrcConvert.cs(118) error CS0077: The as operator
+should be used with a reference type only (T is a value type)
+Expected Results:
+The 'as' operator should compile without errors b/c the 'class' constraint
+(where T:class) on the method should cause T to be assumed to be a
+reference type.  Visual Studio beta 2 accepts this code without error.
+How often does this happen? 
+Every time.
+Additional Information:
+Bug #75368 appeared to me to be related, but even though it's marked as
+fixed, the problem still appears in SVN head, so perhaps it is not.

More information about the mono-bugs mailing list