dotnet / fsharp

The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
https://dotnet.microsoft.com/languages/fsharp
MIT License
3.87k stars 781 forks source link

investigate if fs0064 error message can be tailored #16871

Open smoothdeveloper opened 6 months ago

smoothdeveloper commented 6 months ago

reported by jurasiks on the discord

type Paginator(source: ResizeArray<'T>, currentPage: int, pageSize: int) =
  member x.A() = ()

FS0064 This construct causes code to be less generic than indicated by the type annotations. The type variable 'T has been constrained to be type 'obj'.

I know this message can show up in various circumstances, in this case Paginator<'T> needs to be the type name.

For this special case, we could suffix the error message with:

Consider adding the generic type parameter 'T to the type name: Paginator<'T>

or a variation that doesn't quote the symbols, but still guides the user, if quoting symbols is not trivial.

related: #1103

vzarytovskii commented 6 months ago

It'll probably a good use case for analyser (I.e. it doesn't have to run in process in compiler).