示例#1
0
        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")));
        }