dotnet / dotnet/fsharp

Misleading error message when using [<CustomEquality>] or [<CustomComparison>] with a non-structural type

Offen
#960 4 Kommentare 14 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Feature Improvement
Vorherrschende Sprache
F#
Sterne
4.3k
Forks
876
Ø Merge
5 T. 11 Std.
Gemergte PRs (30 T.)
153

Beschreibung

If you mistakenly add the `[]` or `[CustomComparison>]` (or both) attributes to a non-structural type then you get a very misleading error message:

```
[]
type T() =
override __.Equals(_) = true
```

> error FS0377: This type uses an invalid mix of the attributes 'NoEquality', 'ReferenceEquality', 'StructuralEquality', 'NoComparison' and 'StructuralComparison' attributes

This causes confusion (see e.g. [this](http://stackoverflow.com/questions/34981686/how-make-net-mutable-dictionaryt-t-with-structuralcomparison-equality-in-f) StackOverflow question).

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Reproduzieren Sie das Problem mit dem gezeigten F#-Typ und den Attributen oder , und verfolgen Sie anschließend die Compilerdiagnose, die FS0377 ausgibt. Die Änderung ist abgeschlossen, wenn dieser Fall eines nichtstrukturellen Typs eine Meldung ausgibt, die den tatsächlichen Missbrauch identifiziert, statt eine ungültige Kombination aus Gleichheits- und Vergleichsattributen zu melden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
fsharp
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.