public void MutableClassWithInitialState() { // Here the implicit NotNull is wrong, but we have the NotNullMemberIsNotInitialized warning at declaration site. var mutableClass = new FieldsSample.MutableClass(); TestValueAnalysis(mutableClass.Field, mutableClass.Field == null /*Expect:ConditionIsAlwaysTrueOrFalse[Flds && !RtRo]*/); mutableClass.Field.Should().BeNull(); }
public void MutableClassWithNullInitialization() { var mutableClass = new FieldsSample.MutableClass { Field = null /*Expect:AssignNullToNotNullAttribute[Flds && !RtRo]*/ }; TestValueAnalysis(mutableClass.Field, mutableClass.Field == null /*Expect:ConditionIsAlwaysTrueOrFalse[Flds && !RtRo]*/); mutableClass.Field.Should().BeNull(); }
public void MutableClass() { var mutableClass = new FieldsSample.MutableClass { Field = "value" }; TestValueAnalysis(mutableClass.Field, mutableClass.Field == null /*Expect:ConditionIsAlwaysTrueOrFalse[Flds && !RtRo]*/); mutableClass.Field.Should().Be("value"); }
public void MutableClassWithUnknownNullabilityInitialization() { // Here the implicit NotNull is wrong, but we have the NotNullMemberIsNotInitialized warning at declaration site. var mutableClass = new FieldsSample.MutableClass { Field = External.UnknownNullabilityString }; // The assignment above overwrites the implicit NotNull with 'UNKNOWN' (since R# 2018.2): TestValueAnalysis(mutableClass.Field, mutableClass.Field == null); mutableClass.Field.Should().BeNull(); }
public void MutableClassWithNullInitialization() { var mutableClass = new FieldsSample.MutableClass { Field = null /*Expect:AssignNullToNotNullAttribute[Flds && !RtRo]*/ }; // The null assignment above overwrites the implicit NotNull with 'NULL' (since R# 2018.2): TestValueAnalysis( mutableClass.Field /*Expect:AssignNullToNotNullAttribute*/, mutableClass.Field == null /*Expect:ConditionIsAlwaysTrueOrFalse[Flds && !RtRo]*/); mutableClass.Field.Should().BeNull(); }