Misleading error message when using [<CustomEquality>] or [<CustomComparison>] with a non-structural type
- 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
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