Code.NotNull проблемы с аннотацией
От: _NN_ www.nemerleweb.com
Дата: 22.10.18 08:01
Оценка:
Как только добавляется в код Code.NotNull, то ReSharper перестает считать, что элементы не null

static void f([CanBeNull][ItemNotNull] List<object> l)
{
  if(f==null) throw new Exception();

  var o = l[0].ToString(); // Нет проблем, элементы не null
}

static void g([CanBeNull][ItemNotNull] List<object> l)
{
  Code.NotNull(l,"a");

  var o = l[0].ToString(); // А теперь: Possible NullReferenceException
}


Как вариант можно решить через [ContractAnnotation("arg:null => halt")], но я не очень в этом силён и буду рад услышать улучшения.

До:
        [DebuggerHidden, MethodImpl(AggressiveInlining)]
        [AssertionMethod]
        public static void NotNull<T>(
            [CanBeNull, NoEnumeration, AssertionCondition(AssertionConditionType.IS_NOT_NULL)] T arg,
            [NotNull, InvokerParameterName] string argName) where T : class
        {
            if (arg == null)
                throw CodeExceptions.ArgumentNull(argName);
        }


После:
        [DebuggerHidden, MethodImpl(AggressiveInlining)]
        [AssertionMethod]
        [ContractAnnotation("arg:null => halt")]
        public static void NotNull<T>(
            [CanBeNull, NoEnumeration] T arg,
            [NotNull, InvokerParameterName] string argName) where T : class
        {
            if (arg == null)
                throw CodeExceptions.ArgumentNull(argName);
        }
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Code.NotNull проблемы с аннотацией
От: Sinix  
Дата: 22.10.18 08:11
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Как только добавляется в код Code.NotNull, то ReSharper перестает считать, что элементы не null


На Resharper 2018.2.3 + текущий CJ всё ок.
Re[2]: Code.NotNull проблемы с аннотацией
От: _NN_ www.nemerleweb.com
Дата: 22.10.18 08:18
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Как только добавляется в код Code.NotNull, то ReSharper перестает считать, что элементы не null


S>На Resharper 2018.2.3 + текущий CJ всё ок.

S>Image: fineforme.png

Видимо проблема 2018.3.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Code.NotNull проблемы с аннотацией
От: Sinix  
Дата: 22.10.18 08:27
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Видимо проблема 2018.3.


Обрадуй товарищей в профильном форуме, плиз
Re[4]: Code.NotNull проблемы с аннотацией
От: _NN_ www.nemerleweb.com
Дата: 22.10.18 08:35
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Видимо проблема 2018.3.

S>
S>Обрадуй товарищей в профильном форуме, плиз
Я открываю баги в youtrack. Если в форуме открывать буду, забью всю ленту
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.