public void ConstructorImplementedAsNotUsableFromScriptDoesNotAppearOnTheType()
        {
            var metadataImporter = new MockMetadataImporter {
                GetConstructorSemantics = ctor => ConstructorScriptSemantics.NotUsableFromScript()
            };

            Compile(new[] { "class C { public C() {} }" }, metadataImporter: metadataImporter);
            FindClass("C").UnnamedConstructor.Should().BeNull();
        }
        public void UsingConstructorMarkedAsNotUsableFromScriptGivesAnError()
        {
            var er = new MockErrorReporter(false);

            Compile(new[] { "class Class { public Class() {} public void M() { var c = new Class(); } }" }, metadataImporter: new MockMetadataImporter {
                GetConstructorSemantics = c => ConstructorScriptSemantics.NotUsableFromScript()
            }, errorReporter: er);
            Assert.That(er.AllMessagesText.Any(m => m.StartsWith("Error:") && m.Contains("constructor")));
        }
        public void UsingConstructorMarkedAsNotUsableFromScriptGivesAnError()
        {
            var er = new MockErrorReporter(false);

            Compile(new[] { "class Class { public Class() {} public void M() { var c = new Class(); } }" }, metadataImporter: new MockMetadataImporter {
                GetConstructorSemantics = c => ConstructorScriptSemantics.NotUsableFromScript()
            }, errorReporter: er);
            Assert.That(er.AllMessages.Any(msg => msg.Severity == MessageSeverity.Error && msg.FormattedMessage.Contains("constructor")));
        }
Beispiel #4
0
        public void InvokingBaseConstructorMarkedAsNotUsableFromScriptIsAnError()
        {
            var rpt = new MockErrorReporter(false);

            Compile(new[] {
                @"class B {
	public B() {}
}
class D : B {
	public D() {}
}"
            }, errorReporter: rpt, metadataImporter: new MockMetadataImporter {
                GetConstructorSemantics = c => c.DeclaringType.Name == "D" ? ConstructorScriptSemantics.Unnamed() : ConstructorScriptSemantics.NotUsableFromScript()
            });
            Assert.That(rpt.AllMessagesText.Any(msg => msg.StartsWith("Error", StringComparison.InvariantCultureIgnoreCase) && msg.IndexOf("cannot be used", StringComparison.InvariantCultureIgnoreCase) >= 0));
        }
Beispiel #5
0
        public void ChainingToConstructorMarkedAsNotUsableFromScriptIsAnError()
        {
            var rpt = new MockErrorReporter(false);

            Compile(new[] {
                @"class C {
	public C() : this(0) {
	}
	public C(int x) {
	}
}"
            }, errorReporter: rpt, metadataImporter: new MockMetadataImporter {
                GetConstructorSemantics = c => c.Parameters.Count == 0 ? ConstructorScriptSemantics.Unnamed() : ConstructorScriptSemantics.NotUsableFromScript()
            });
            Assert.That(rpt.AllMessagesText.Any(msg => msg.StartsWith("Error", StringComparison.InvariantCultureIgnoreCase) && msg.IndexOf("cannot be used", StringComparison.InvariantCultureIgnoreCase) >= 0));
        }