-
Attributes
- Add Redundant Attribute suffix analyzer and quick fix (by @reacheight (#109))
- Add Redundant attribute parens analyzer and quick fix (by @reacheight (#104))
-
Run analyzers in parallel
-
Optimize spell-checker analyzer
-
Fix Spell-checker didn't work on some declarations
-
Improve reported ranges for unused sequential and
let
expressions
-
FS0039: Undefined name
- Better types filtering in Import Type quick fix
- Escape module names when importing types
- Fix various cases of incorrect
open
placement
-
FS0003: Not a function / unexpected argument
- Add Remore unexpected arguments (by @DedSec256 (#89))
-
FS0026:
match
rule is never matched- Remove never matching rules (by @reacheight (#74))
-
FS0005: Field not mutable
- Add Make field mutable
-
FS0027: Value not mutable
- Add Make value mutable
-
FS1182: Unused let binding
- Add Rename with
_
prefix
- Add Rename with
-
FS0038: Var bound twice
- Add Replace with
_
- Add Replace with
-
Add parens to expression when applying quick fixes where needed
- Add Elif to If, If to Elif actions
- Add Negate
If
expression condition
- Add Copy Inferred Type action
- Add Don't show parent namespaces for types
- Fix Nested tuple params could be shown wrong
- Fix Symbols from C# projects could not be seen after first build
- Fix Support for single case unions that are parsed as type abbreviations
- Fix Invalid accessibility for some types containing non-public members
- Fix Attributes containing
Attribute
wasn't seen properly from C# (e.g.AttributeUsage
)
- Add Send project references to F# Interactive action
- Fix Send to F# Interactive is now available during initial file indexing
- Add More expressions are supported in evaluation on mouse hover:
- self-reference qualifiers in methods and types (
this.Property
) - indexer expressions (
"foo".[1]
)
- self-reference qualifiers in methods and types (
- Fix Types would not be found inside generic constraints, constructor attributes, and measures
- Fix New Instance Creation wasn't reported for
new
expressions - Better naming style suggestions for literals
Add Highlight more escape sequences in strings
Add Settings for F# preprocessor keywords
Fix Highlighting for const
keyword
- Add
Type
file template - Select whole
()
expression in Extend Selection - Fix Plugin could not be built on case-sensitive file systems (by @ mcon (#108))
- Update FSharp.Compiler.Service with F# 4.7 support, most notably:
_
self identifier in member definitions- Implicit
yield
in computational expressions - F# 5.0 features preview when enabled with compiler option
- Update Fantomas to 3.0 with various fixes
- Rewritten parse tree nodes for expressions and types
- Allows significantly simplified code for features like quick fixes, analyzers, and others
- Better context tracking, optimized references creation, references are now qualifier-aware
- Improved infrastructure for upcoming refactorings, postfix templates, and other features
- FS0039: Undefined name
- Add Initial Import Type quick fix
- Add Make outer function recursive fix
- FS0020: Expression is unused
- Add Introduce 'let' binding fix for local expressions
- Update Ignore expression fix
- Better
|> ignore
placement for multiline expressions - Option to ignore inner expression in
match
andif
expressions
- Better
- Add Remove subsequent expressions fix
- FS1182: Unused let binding
- Add Remove unused local binding
- FS0597: Successive arguments should be separated by spaces, tupled, or parenthesized
- Add Surround with parens fix
- FS0001: Unit type expected
- Add Ignore expression fix for
if
expressions withoutelse
branch
- Add Ignore expression fix for
- FS0066: Unnecessary upcast
- Add Remove upcast fix
- FS0588: Expected expression after let
- Add Replace
let
with bound expression fix
- Add Replace
- FS0576:
and
is not allowed for non-recursive let bindings- Add To recursive let bindings fix
- FS0894: Let bindings inside class cannot be inline
- Add Remove
inline
fix
- Add Remove
- Redundant
new
analyzer- Add Remove redundant
new
fix
- Add Remove redundant
- Redundant identifier escaping
- Add Remove backticks fix
- Add Extension attribute usage analyzer:
- Extension member inside non-extension type
- Extension type doesn't define extension members
- Extension type should be static
- Rename additional symbols:
- Suggest renaming of a single case union when renaming its case and vice versa
- Suggest camelCase names for let bindings
- Add renaming anonymous records fields
- Fix renaming union case fields when used as named args
- Fix renaming typed parameters inside lambda functions
- Better naming sugestions for predefined types
- Add To namespace/module action
- Add To recursive module or namespace action
- Rewritten from scratch for the parse tree changes
- Words are selected first when invoked inside comments and strings
- Better selection for many language constructs, with contributions by @reacheight
- Fix declaration selection could miss starting keywords and attributes
- Parts of results grouping is rewritten from scratch for the parse tree changes
- Fix various cases could be reported incorrectly
- Significantly improved undo/redo changes workflow
- Add Complete pair escape identifier backticks assist
- Add Escape identifier with backticks assist
- Add Erase trailing semicolon in Enter assist when enabled in Code Style settings
- Fix Pair quotes assists no longer applied inside comments
- Update Better indentation in Enter assist
- Separate highlighting options for F#:
- Add F#-specific symbols like Unions or Active Patterns can now be highligted differently
- Add Highlight
byref
values as mutable - Fix unary operators highlighting
- Add option to specify language version for scripts and F# Interactive
- Fix Don't use auto-detected code style settings in Reformat Code action
- Add helper for Quick Definition
- Fix record private representations resolve in C#
- Fix adding new file to a project could fail
- Update adding
open
now adds empty line when needed, by @saul (#65) - Update Ignore
Folders on top
option in F# projects - Fix getting F# Interactive paths
- Fix resolve of extension members with specified compiled names
- Update Don't show inferred type lenses inside object expressions
- Inferred types are shown for functions, values and members
- Version control author is shown for declarations
- R# spell checker now works for F# symbol declarations, strings and comments
- Escape sequences are highlighted in strings
- Better highlighting of never matched rules in
match
expressions
- Context-based rename suggestions
- Generate missing record fields
- Ignore unused expression
- Remove unused self identifier in types
- Remove unused
as
pattern - Replace unused pattern with
_
- Replace
use
withlet
in modules and types - Add missing
rec
inlet ... and
bindings
- Find Usages and Go to Declaration now work for record construction and copy-and-update expressions
- New Instance occurrence kind is shown for F# exception creation expressions
- Allow running F# Interactive from .NET Core SDK 2.2.300+
- Completion for names starting with
_
is fixed - Fix resolve for same type defined in different projects or assemblies
- Fix resolve for members with same signature in a type and interface implementation in it
- Rename wouldn't work for some local values
- Lexing of attributes inside type application was fixed by @misonijnik (#51)
- Rename
- Cross-language rename for F#-defined symbols
- Name suggestions based on symbol type
- Go to next/previous/containing member actions now work for top level
let
bindings - Global navigation and Go to File Member action now work for type-private
let
bindings - F# defined delegates are now supported and are properly seen by code in other languages
- Intrinsic type extensions are now considered type parts with navigation working for every part
- Navigation to compiler generated members declarations from usages in other languages now navigates to origin members
- Navigation to symbols with escaped names now places caret inside escaped identifiers
outref
andinref
types are now properly seen in other languages
- Usages inside
let
bindings are properly grouped by containing members - Separate grouping for new occurrence kinds:
- Type argument
- Base type
- Type checking
- Type conversions
- Module or namespace import
- Write
- Attribute reference
- Highlight Usages in File action now highlights Write occurrences differently to other occurrences
- Find usages of union cases now also searches for compiler generated union members
- An option for out-of-scope completion to place
open
statements to the top level was added and enabled by default by @saul (#39) - Out-of-scope completion can be disabled now
- New Surround with Parens typing assist
- FSharp.Compiler.Service updated with anonymous records support
- Format specifiers are now highlighted, by @vasily-kirichenko (#40)
- Inferred generic arguments are shown in tooltips, by @vasily-kirichenko (#44)
- Full member names are shown in tooltips, by @vasily-kirichenko (#45)
- Debugger now shows local symbols values next to their uses
- Unused local values analysis is now turned on for all projects and scripts by default
- Support
TreatWarningsAsErrors
MSBuild property
- Notification about F# projects having wrong project type guid in solution file
- F# Interactive in FSharp.Compiler.Tools is now automatically found in non-SDK projects
- FSharp.Compiler.Interactive.Settings.dll is now bundled to the plugin (so
fsi
object is available in scripts) - F# breadcrumbs provider was added
- Add hotkey hint to Send to F# interactive action
- Provide F# project Azure scope for Azure plugin (#46)
- Pair paren was not inserted in attributes list
- Tab left action (Shift+Tab) didn't work
- Tests defined as
let
bindings in types were not found - Incremental lexers were not reused, by @misonijnik
- Type hierarchy action icon was shown in wrong places
- Usages of operators using their compiled names were highlighted incorrectly
- Find usages didn't work for compiled active patterns and some union cases
- Local rename didn't work properly for symbols defined in Or patterns
- Better highlighting of active pattern declarations
- Extend Selection works better for patterns and
match
expressions - Resolve and navigation didn't work for optional extension members having the same name in a single module
- Secondary constructors resolve was broken in other languages
- Some reported errors were duplicated