ionide / ionide/FSharp.Analyzers.SDK
Make F# Analyzer API independent of FCS?
- Dominant language
- F#
- Stars
- 85
- Forks
- 28
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 20
Description
I've been thinking about [the problem of binary compatibility for F# analyzers](https://github.com/fsharp/fslang-design/blob/master/tooling/FST-1033-analyzers.md), in the context of trying to get F# analyzers available in all F# tooling.
This is a blocking problem for incorporation of analyzers into the Visual F# Tools. This applies even if those tools switch to FsAutoComplete - all analyzers must still be loadable into all future iterations of F# tooling.
The main issue is binary compatibility for the information being drawn from the FCS API (FSharpSymbol etc.). I am wondering if we might consider making this F# Analyzer API **completely independent of FCS**. When hosted, FSharpAutoComplete would provide necessary shims.
This would mean the F# Analyzer API would include abstract types like IFSharpSymbol, ISyntaxTree and so on. It would be a complete self-contained, zero-dependency facade over all the information analyzers typically require.
FCS could then take a dependency on this component (which I called FSharp.Compiler.Analyzers in the link above).
Contributor guide
Assessment
This issue has not been assessed yet.