Баг с ambiguous reference

Обсуждение продукта JetBrains ReSharper.
FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Баг с ambiguous reference

Сообщение FaKk2 » 17.11.2006 (Пт) 19:11

Допустим у нас есть публичный абстрактный класс Option следующего вида:
Код: Выделить всё
public abstract class Option
{
   private readonly String _id;
   public const Option Null = null;
   public static Boolean operator !=(Option option, String optionId)
   {
      return !(option == optionId);
   }
   public static Boolean operator !=(Option option1, Option option2)
   {
      return !(option1 == option2);
   }
}


Заметьте перегруженный переопределенный оператор неравенства и публичное, статичное поле Null типа Option. При проверке экземпляра класса на Option.Null Resharper указывает на ошибку неоднозначной ссылки:
Код: Выделить всё
if (option != Option.Null)
{...}

Он подчеркивает != и говорит что не может выбрать правильный оператор, тогда как компилятор C# корректно использует вторую перегрузку.

olka
JetBrains
JetBrains
Аватара пользователя
 
Сообщения: 27
Зарегистрирован: 17.11.2006 (Пт) 1:20
Откуда: JetBrains

Баг с ambiguous reference

Сообщение olka » 20.11.2006 (Пн) 13:54

Какая у тебя стоит версия Решарпер?..
Я дополнила твой кусочек кода до компиляемого и ошибки не получила... Посмотри, может быть потеряны какие-нибудь детали?

using System;

public abstract class Option
{
private readonly String _id;
public const Option Null = null;
public static Boolean operator !=(Option option, String optionId)
{
return !(option == optionId);
}
public static Boolean operator ==(Option option, String optionId)
{
return true;
}

public static Boolean operator !=(Option option1, Option option2)
{
return !(option1 == option2);
}
public static Boolean operator ==(Option option1, Option option2)
{
return !(option1 == option2);
}
}

public class C
{
private Option option;

public void B()
{
if (option != Option.Null) {}
}
}

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Баг с ambiguous reference

Сообщение Ramzes » 20.11.2006 (Пн) 13:56

olka писал(а):компиляемого

Оказываеться я тут не один приграммист :wink:

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 20.11.2006 (Пн) 19:21

Resharper версии 2.0 билд 266.

olka
JetBrains
JetBrains
Аватара пользователя
 
Сообщения: 27
Зарегистрирован: 17.11.2006 (Пт) 1:20
Откуда: JetBrains

Сообщение olka » 20.11.2006 (Пн) 21:45

Видимо проблема уже вылечена... Попробуй поставить более свежий билд. Если воспроизведется - сообщи пожалуйста.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 20.11.2006 (Пн) 22:46

olka
А куда свежее? Кроме того я сижу на VS2003.

olka
JetBrains
JetBrains
Аватара пользователя
 
Сообщения: 27
Зарегистрирован: 17.11.2006 (Пт) 1:20
Откуда: JetBrains

Сообщение olka » 22.11.2006 (Ср) 20:28

Ах вот оно что.. :( Это совсем меняет дело.
Занесла в багтрекер для багфикса к VS2003.
http://www.jetbrains.net/jira/browse/RSRP-32351


Вернуться в ReSharper

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron