public void UpcastCharToObjectIsAnError() { var result = SourceVerifier.Compile(@" public class C { public static void M() { string s = ""X"" + 'c'; } }", expectErrors: true); Assert.That(result.Item2.AllMessages.Select(m => m.Code), Is.EqualTo(new[] { 7700 })); }
public void CannotUseTheAsOperatorWithImportedTypeThatDoesNotObeyTheTypeSystemOrHaveTypeCheckCode() { var actual = SourceVerifier.Compile(@" [System.Runtime.CompilerServices.Imported] class C1 {} class C { public void M() { var x = new object() as C1; } } ", expectErrors: true); Assert.That(actual.Item2.AllMessages.Count, Is.EqualTo(1)); Assert.That(actual.Item2.AllMessages.Any(m => m.Severity == MessageSeverity.Error && m.Code == 7702 && m.FormattedMessage.Contains("'as' operator") && m.FormattedMessage.Contains("C1"))); }
public void CannotUseTheAsOperatorWithSerializableTypeWithoutTypeCheckCode() { var actual = SourceVerifier.Compile(@" [System.Serializable] class C1 {} class C { public void M() { var x = new object() as C1; } } ", expectErrors: true); Assert.That(actual.Item2.AllMessages.Count, Is.EqualTo(1)); Assert.That(actual.Item2.AllMessages.Any(m => m.Severity == MessageSeverity.Error && m.Code == 7702 && m.FormattedMessage.Contains("'as' operator") && m.FormattedMessage.Contains("C1"))); }
public void UseOfCastWithNonScriptableTypeIsAnError() { var result = SourceVerifier.Compile(@" [System.Runtime.CompilerServices.NonScriptable] class X1 {} public class C { public static void M(object o) { var x = (X1)o; } }", expectErrors: true); Assert.That(result.Item2.AllMessages.Any(m => m.Code == 7522 && m.FormattedMessage.Contains("X1"))); result = SourceVerifier.Compile(@" class G<T> {} [System.Runtime.CompilerServices.NonScriptable] class X1 {} public class C { public static void M(object o) { var x = (G<X1>)o; } }", expectErrors: true); Assert.That(result.Item2.AllMessages.Any(m => m.Code == 7522 && m.FormattedMessage.Contains("X1"))); }