On Nov 14, 2010, at 10:16 PM, Tom Philpot wrote: > The following code compiled with a warning on Mono 2.7 (as of 147679) but > has an error in 2.8. > > namespace Application > { > public class Z {} > > public class A<X, Y> > where Y : Z > where X : Y > { > protected void SomeOperation(Y y) > { > X x = y as X; > } > } > > public class Foo { public static void Main() {} } > } > > /opt/mono-2.8/bin/gmcs CS0413Regression.cs > CS0413Regression.cs(12,33): error CS0413: The `as' operator cannot be used > with a non-reference type parameter `X'. Consider adding `class' or a > reference type constraint > Compilation failed: 1 error(s), 0 warnings > > /opt/mono-r147679/bin/gmcs CS0413Regression.cs > CS0413Regression.cs(12,27): warning CS0219: The variable `x' is assigned but > its value is never used > Compilation succeeded - 1 warning(s)
The error message here is the correct thing to do—as casts are only valid with reference types, because they can result in null, which is invalid for a value type. If this raised only a warning in gmcs earlier, it was a bug. —Bojan > > _______________________________________________ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list