Skip to content

Latest commit

Β 

History

History
617 lines (409 loc) Β· 33.3 KB

CHANGELOG.md

File metadata and controls

617 lines (409 loc) Β· 33.3 KB

Changelog

Tags:

  • πŸ’₯ [Breaking Change]
  • πŸ‘“ [Spec Compliance]
  • πŸš€ [New Feature]
  • πŸ› [Bug Fix]
  • πŸ“ [Documentation]
  • 🏠 [Internal]
  • πŸ’… [Polish]

master

1.54.0

πŸ’… Polish

  • Reduce latency of language server by caching a few project config related things. #1003

πŸ› Bug Fix

  • Fix edge case in switch expr completion. #1002

1.52.0

πŸš€ New Feature

  • Experimental support for caching the project config to reduce latency. #1000

πŸ› Bug Fix

  • Fix highlighting of other languages being affected by rescript-vscode. #973
  • Use canonicalized URIs/paths for jump to definition. #982
  • Fix JSX prop special case in end of JSX element. #984
  • preserve URI format in canonicalizeUri. #990
  • Remove workaround for canonicalize function in tests #992
  • Get completions for writing new field names in a record body expressions in more cases. #997

πŸ’… Polish

  • Make sure doc strings are always on top in hovers. #956
  • Make JSX completion work for make functions of type React.component<props>, like what you get when using React.lazy_. #966
  • Hover: print signature above docstrings. #969
  • Adjust function template snippet return. #985
  • Don't expand type t maker functions in patterns. #986
  • Use loc for identifiers to get more and better completions in certain scenarios with type parameters. #993
  • Improve the DX of running the code analyzer some. #995

πŸš€ New Feature

  • Add support for the rewatch build system for incremental compilation. #965
  • Add support for Linux ARM64
  • Statically linked Linux binaries
  • Emit %todo instead of failwith("TODO") when we can (ReScript >= v11.1). #981
  • Complete %todo. #981
  • Add code action for extracting a locally defined module into its own file. #983
  • Add code action for expanding catch-all patterns. #987
  • Add code actions for removing unused code (per item and for an entire file), driven by reanalyze. #989

🏠 Internal

  • Update parser and compiler support files to the latest version. #998

1.50.0

πŸš€ New Feature

  • Extend signature help to work on constructor payloads in both expressions and patterns as well. Can be turned off if wanted through settings. #947 #954
  • Show module docs for file modules. #952

πŸ’… Polish

  • Enhance variant constructor payload completion. #946
  • Clean occasional dots from "insert missing fields" code action. #948
  • Pick up code actions in incremental compilation. #948
  • Various improvements to the signature help functionality. #950
  • Clean up completion item "details" and "documentation". #952

1.48.0

πŸ› Bug Fix

  • Stability fixes for the experimental incremental compilation mode. #945

1.46.0

πŸ› Bug Fix

  • Fix null checks for editor config, so things don't blow up. #944

1.44.0

πŸš€ New Feature

  • Experimental support for type checking without saving the file πŸŽ‰. #939

1.42.0

πŸ› Bug Fix

  • Fix issue with unlabelled arg code swallowing completions. #937
  • Fix issue where completion inside of switch expression would not work in some cases. #936
  • Fix bug that made empty prop expressions in JSX not complete if in the middle of a JSX element. #935

1.40.0

πŸ’… Polish

  • Enhance decorator completion. #908
  • Completion for import attributes in @module. #913
  • Relax filter for what local files that come up in from and regular string completion in @module. #918
  • Make from completion trigger for expr hole so we get a nice experience when completing {from: } in @module. #918
  • Latest parser for newest syntax features. #917
  • Handle completion for DOM/element attributes and attribute values properly when using a generic JSX transform. #919
  • Highlight tagged template literal functions as functions. #920
  • Complete for type t values when encountering a type t in relevant scenarios. #924
  • Highlight escaped sequences as a whole and not only the first character. #929
  • Start highlighting escaped sequences in template literals. #929

1.38.0

πŸ’… Polish

  • Prefer Core's RegExp when Core is open and completing for regexp functions. #903
  • Add %re("") to the completions list when completing in a position where a regexp value is expected. #903

πŸ› Bug Fix

  • Fix issue with completion in nested patterns that would make it not possible to complete for new record fields via trailing commas in certain situations. #906

1.36.0

πŸ› Bug Fix

  • Fix issue with ambigious wraps in JSX prop values (<SomeComp someProp={<com>}) - need to figure out if we're completing for a record body or if {} are just wraps for the type of someProp. In the case of ambiguity, completions for both scenarios are provided. #894
  • Many bugfixes around nested pattern and expression completion. #892
  • Fix (very annoying) issue where empty pipe completion wouldn't work inside of a parenthesised function call: Console.log(someArray->) completing at the pipe. #895

πŸ’… Polish

  • More cases of not emitting _ when completing in expressions. #890

🏠 Internal

  • Move rescript-tools to OCaml code and make analysis an library. #855

1.34.0

πŸš€ New Feature

  • Complete domProps for lowercase JSX components from ReactDOM.domProps if possible. #883
  • Complete for maker-style functions (functions returning type t of a module) when encountering a type t in relevant scenarios. #884
  • Expand type aliases in hovers. #881

πŸ’… Polish

  • Better error recovery when analysis fails. #880
  • Do not emit _ when completing in expressions. #885
  • Include fields when completing a braced expr that's an ID, where it the path likely starts with a module. #882

1.32.0

πŸ› Bug Fix

  • Fix so that you don't need a leading # to complete for polyvariant constructors. #874
  • Print keyword polyvariant constructors with quotes when doing completions. #877

1.30.0

πŸš€ New Feature

  • If interface file exists, ask if it should be overwritten. #865

πŸ› Bug Fix

  • Proper default for "uncurried" in V11 projects. #867
  • Treat result type as a proper built in type. #860
  • Fix infinite loop when resolving inferred completions when several values in scope has the same name. #869
  • Fix crash when trying to print recursive polymorphic variants without a concrete definition. #851
  • Fix rescript-language-server --version command. #873
  • Print exotic polyvariant constructor names with quotes when doing completion. #870

πŸ’… Polish

  • Change end position of cursor when completing Some(<fieldName>) in patterns. #857

πŸ› Bug Fix

  • Add support for detecting dead fields inside inline records. #858

1.28.0

πŸ› Bug Fix

  • Fix issue introduced in recent PR for module completion. #856

1.26.0

πŸ› Bug Fix

  • More robust handling of namespaces in pipe completions. #850

1.24.0

πŸ› Bug Fix

  • Clean up name of namespaced module when hovering. #845
  • Don't complete illegal file module names. #844
  • Fix issue open on submodules exposed via -open in bsconfig.json/rescript.json, that would cause the content of those open modules to not actually appear in autocomplete. #842
  • Account for namespace when filtering pipe completion items. #843

1.22.0

πŸ’… Polish

  • Resolve module aliases in hover. #820

1.20.0

πŸš€ New Feature

  • Add support for syntax highlighting in %raw and %ffi extension points. #774
  • Add completion to top level decorators. #799
  • Add code action for wrapping patterns where option is expected with Some. #806
  • Better completion from identifiers with inferred types. #808
  • Make suggested template functions async when the target function returns a promise. #816
  • Fix code action for inserting undefined record fields in ReScript v11. #817

πŸ’… Polish

  • Revamp "Insert missing cases" code action to make it apply in more cases and be much more robust. #804
  • Make the completion engine understand async/await. #813
  • Comments are now automatically closed and indented. #815

πŸ› Bug Fix

  • Fix invalid range for definition. #781
  • Don't emit object keys in uppercase as namespace. #798
  • Fix accidental output of extra | when producing exhaustive switch code for polyvariants. #805
  • Fix JS syntax highlighting in single-line FFI extension points. #807
  • Fix signature help in uncurried mode. #809
  • Fix various issues in uncurried mode. #810
  • Fixes a bug in pattern completion where for example result wouldn't complete, due to type variables getting lost/not being instantiated. #814
  • Fix bug where pipes would not be considered in certain cases when completing for single unlabelled function arguments. #818

1.18.0

πŸš€ New Feature

  • Docstring template Code Action. #764
  • Improve unlabelled argument names in completion function templates. #754
  • Add Some(fieldName) case when completing in a pattern with an option on a record field. #766

πŸ› Bug Fix

  • Fix URL scheme for Code Action. #748
  • Support uncurried functions in various places where we look up and use function types. #771

1.16.0

πŸš€ New Feature

  • Greatly extend completion abilities for unsaved code. WARNING: Might be a bit unstable initially. Report any issues you see. #712
  • Provide hovers for more unsaved code via the new completion features. #749

1.14.0

πŸš€ New Feature

  • Enable completion for Js.Exn.Error(error) when pattern matching on exn. This is to make the Js.Exn.Error API more discoverable. #728

πŸ’… Polish

  • Signature Help is now considered stable, and enabled for all users. Can still be turned off in settings.
  • Show whether record fields and variant constructors are deprecated when completing. #731
  • Prettify how optional record fields are printed in the completion item detail. #737

πŸ› Bug Fix

  • Fix crashes in document symbol requests when broken syntax exists. #736

1.12.0

πŸš€ New Feature

  • Add autocomplete for function argument values (booleans, variants and options. More values coming), both labelled and unlabelled. #665
  • Add autocomplete for JSX prop values. #667
  • Add snippet support in completion items. #668
  • Add support from completing polyvariants as values. #669
  • Add support for completion in patterns. #670
  • Add support for pattern completion of unsaved tuples. #679
  • Add support for completion in typed expressions. #682
  • Complete for React.element creator functions (React.string etc) when in JSX context. #681
  • Handle optional record fields in expression/pattern completion. #691
  • Expand options in completion to make working with options a bit more ergonomic. #690
  • Let _ trigger completion in patterns. #692
  • Support inline records in completion. #695
  • Add way to autocomplete an exhaustive switch statement for identifiers. Example: an identifier that's a variant can have a switch autoinserted matching all variant cases. #699
  • Support typed expression completion for lowercase (builtin) JSX tags. #702
  • Support typed expression completion driven by type annotations. #711
  • Completion for lowercase JSX elements, treating them like HTML elements. #719

πŸ’… Polish

  • Prefer opened Belt modules in autocomplete when -open Belt is detected in bsconfig. #673
  • Improve precision in signature help. You now do not need to type anything into the argument for it to highlight. #675
  • Remove redundant function name in signature help, to clean up what's shown to the user some. #678
  • Show docstrings in hover for record fields and variant constructors. #694
  • The necessary leading ? is now automatically inserted for optional fields when destructuring records. #715

πŸ› Bug Fix

  • Highlight catch like a keyword #677
  • Make signature help work in calls nested inside of other calls. #687
  • Fix pipe completion to work on aliased types. #700
  • Fix issue with not finding type for function arguments. #706
  • Fix incorrect syntax in hover help for module. #709

v1.10.0

πŸ’… Polish

  • Remove spacing between type definition in clients that do not support markdown links. #619
  • Rename custom LSP methods names. #611
  • Better performance for Inlay Hints and Codelens. #634
  • Accept both @ns.doc and the new @res.doc for the internal representation of doc comments. And both @ns.optional and @res.optional for the optional fields. #642
  • Make pipe completion work more reliably after function calls. #656
  • Make pipe completion work in pipe chains, not just on the first pipe. #656
  • Make pipe completion work reliably when the path resolution needs to traverse submodules #663
  • Make pipe completion work (after saving/compiling) when the return type of a function call is unknown until compilation #662
  • Add pipe completion for int and float constants #664

πŸ› Bug Fix

  • Fix issue where -open Some.Path in "bsc-flags" would sometimes be treated differently from open Some.Path locally in a file #616

  • Fix issue where doc comment is not shown on hover in case of shadowed identifier (in particular for JSX V4 components which shadow make) #621

  • Adapt command to create interface files to latest JSX V4 (no key prop, possibly empty record) #617

  • Fix issue where pipes were not taken into account in the signature help, resulting in the highlighted argument in signature help always being off by one for unlabelled arguments in piped expressions #626

  • Fix incorrect type hint for module type. #626

  • Fix file location in Document Symbols response. #629

  • Fix issue where create interface file would not work with certain JSX V4 components #617

  • Fix issue with completing foo. x where x should not be part of the completion #644

  • Fix issue where code analysis would not track types in inner modules across implementations and interfaces rescript-association/reanalyze#186

  • Fix issue with references to elements defined in an interface file #646

  • Fix issue with references from implementation files which also happen to have interface files #645

  • Fix issue where jump to definition would go to the wrong place when there are aliased identifiers in submodules #653

  • Fix issue where document symbols were not shown nested #655

v1.8.2

πŸš€ New Feature

  • Add configuration parameter "transitive" under "reanalyze" is bsconfig.json and make reportst non-transitive by default. If set to false, the analysis does not report transitively dead items. So removing the reported item individually can be done in isolation. This is a more fine-grained process for guiding the user to remove dead code one item at a time. #601 #610 This feature comes from a conversation with @jfmengels on how https://github.com/jfmengels/elm-review is designed.

πŸ› Bug Fix

  • Fix issue where module paths in -open in bsc-flags such as "-open ReScriptJs.Js" were not recognized #607

v1.8.1

πŸš€ New Feature

  • Add support for prop completion for JSX V4 #579
  • Add support for create interface file for JSX V4 #580
  • Expand one level of type definition on hover. Dig into record/variant body. #584
  • Add clickable links to type definitions in hovers. #585
  • Add experimental signature help for function calls. #547

πŸ› Bug Fix

  • Fix printing of record types with optional fields #584

v1.6.0

πŸš€ New Feature

  • Inlay Hints (experimental). rescript.settings.inlayHints.enable: true. Turned off by default. #453
  • Code Lenses for functions (experimental). rescript.settings.codeLens: true. Turned off by default. #513
  • Markdown code blocks tagged as rescript now get basic syntax highlighting. #97
  • Hover support for doc comments on v10 compiler /** this is a doc comment */

πŸ› Bug Fix

  • Fix issue where debug output would end up in the JSON file produced by Reanalyze #575
  • Fix issue where autocomplete would not perform type instantiation #561
  • Fix issue where hovering over a field in record construction would show the type without instantiating its type arguments #560
  • Fix Incorrect semantic highlighting of external declarations #517
  • Fix issue where doc comment with nested comments inside is not shown properly on hover #526
  • Fix server crashes when open file is removed from disk with inlayHints enabled #538
  • Fix inlay hint for destructured record/array #536

v1.4.2

πŸ› Bug Fix

  • Fix finding the ReScript bin for even more kinds of setups.
  • Document the process of finding the ReScript bin in README.

v1.4.1

πŸ› Bug Fix

  • Fix formatting not preferring the locally installed formatter (if available), which made formatting potentially different between formatting via rescript format and the extension.
  • Fix finding the ReScript bin in monorepos

v1.4.0

πŸš€ New Feature

  • Add command: ReScript: Restart Language Server
  • Extend integration with reanalyze for code analysis. Support both dce and exception analysis which can be configured to e.g. both run by adding {"reanalyze": {"analysis": ["dce", "exception"]} } in bsconfig.json.
  • Add configuration option for suppressing the "Do you want to start a build?" prompt.
  • Add configuration option for autostarting the Code Analyzer.
  • Report syntax errors as you type.

πŸ› Bug Fix

  • Fix issue with autocompletion for constructors in switch statements.
  • Fix issue with autocompletion inside template expressions.
  • Fix handling of local opens.
  • Fix extension crash when renaming a file.
  • Fix issue where the server would crash on genType's errors.
  • Fix issue where the server would crash if the project contains an OCaml file with a syntax error.
  • Fix issue where @inline was not suported by the command to generate an interface file.

πŸ’… Polish

  • Add hover information with links to documentation for decorators.
  • Sync with latest parser/printer.

🏠 Internal

  • Support paths to rescript executables in arm64 architectures.

πŸ’₯ Breaking Change

  • Drop support for bs-patform. Only rescript supported.

1.3.0

  • Fix issue where using paths of the form ./something would show multiple copies of the same file in vscode.
  • When hovering on a field access, show the instantiated type of the field.
  • Support autocomplete for objects from another module M.x[....
  • Fix command for creating interface files when the project uses namespaces.
  • Added command ReScript: Open the compiled JS file for this implementation file..
  • Use semantic syntax highlighting (#367).
  • Report "Fatal error" when it happens in the compiler log (e.g. a make function with type annotation) and don't crash the extension.
  • Fix issue in functions the form "~foo as name" where the location would only cover "ame".
  • Extend the command to create an interface file, to support components and ReScript decorators used in bindings.
  • Enable formatting files without needing the file to be in an actual ReScript project.
  • New feature: Show Outline which was previously disabled.
  • Add command to quickly switch between implementation and interface file.
  • Support hover on JSX props and labelled arguments.

1.2.1

  • Fix issue with highlighting of interpolation strings (those with backticks) introduced in release 1.2.0.
  • Fix crash when the project contains OCaml files that have warnings.
  • Fix crash on hover when a dependency contains a type with functor application. This is not expressible in ReScript syntax, but can appear in a dependent OCaml package and be pulled in for processing by the extension.
  • Remove obsolete @bs snippets

1.2.0

Features:

  • Add autocompletion for object access of the form foo["x"] and foo["x"]["y"]["z"].
  • Support autocomplete of records for variables defined in other files.
  • Improve autocomplete when several values have the same name, with a heuristic to approximate the correct scope.
  • Add a "Dead Code Analysis" mode that will highlight globally dead values, redundant optional arguments, dead modules, dead types (records and variants) (#334)

Fixes:

  • Fix issue in JSX autocomplete when the component is declared external.
  • Fix jump-to-definition for uncurried calls.
  • Fix issue where values for autocomplete were pulled from implementations instead of interfaces.
  • Fix issue with autocomplete then punned props are used in JSX. E.g. <M foo ...>.
  • Fix issue with JSX autocompletion not working after foo=#variant.
  • Fix issue in JSX autocompletion where the key label would always appear.
  • Fix issue in record field autocomplete not working with type aliases.
  • Fix issue where autocomplete for local values would not work in the presence of @react.component annotations.
  • Fix issue where the server would crash on large output produced by the binary command.
  • Fix issue where the server would crash when a file has a self cycle.

1.1.3

Features:

  • Find references to files as modules.
  • Autocomplete: skip inline comments to decide if a labeled argument was already supplied.
  • Rename: support file rename when renaming a module name.
  • Rename: use renameProvider to give a warning when it's not a symbol that can be renamed.
  • Jump to definition: support jumping to type definition.
  • Jump to definition: jump to the res file when both res and resi are present.
  • Restore creation of interface files (fully supported from compiler 9.1.3 onwards).

1.1.2

Features:

  • Rename has landed! Works across-files!
  • More autocomplete improvements.
  • Wider Linux support.

1.1.1

This update contains lots of autocomplete, hover and jump-to-definition improvements. We'll list only a few below.

Fixes:

  • Jump-to-definition on some Windows paths.
  • -> autocomplete overruled ..
  • Hover on components in interface files.

Features:

  • Show References! Works cross-files too.
  • Hover now supports markdown docs.
  • Hover on labels in component functions with compiler version 9.1, and labels with type annotation.
  • Don't show file path on hover and autocomplete (cleaner).
  • Autocomplete for props in JSX components.
  • -> autocomplete for built-in list, array, string, option types. And for string and array literals.
  • Slimmer download.

Breakages:

  • Very old linux versions are no longer supported.
  • Hover: no more odoc format support (but it'll still display as text).

1.0.8

Fixes:

  • Diagnostics display for long lines.

Features:

  • Full support for the newest rescript npm package!
  • Highlight type parameters.

1.0.7

Fixes:

  • Highlighting for some decorators and keywords.
  • Various hover & autocomplete opportunities.

Features:

  • Autocomplete for -> pipe!
  • Autocomplete for decorators such as @module and @val and @deprecated.
  • Autocomplete for labels func(~...).
  • Support for the upcoming rescript npm package.

1.0.6

Fixes:

  • Diagnostics crashing when a file's range isn't found (advice: use fewer ppxes that cause these bugs!). See #77.
  • Weird behaviors when project path contains white space.
  • Proper audit of the windows bugs. Windows is now officially first-class!

Syntax colors:

  • Highlight operators for default VSCode dark+ theme. This means slightly less diverse highlight for the other themes that previously already highlighted operators.
  • Worked with One Dark Pro and Mariana Pro. We now officially recommend these 2 themes, in addition to the existing recommendations in README.
  • Highlight deprecated elements using the deprecation scopes.
  • JSX bracket highlight fix (still no color; before, some parts were erroneously highlighted).

1.0.5

Features:

  • Custom folding. See README.
  • Support for doc strings when hovering on modules.
  • Jump to type definition for types defined in inner modules.

Fixes:

  • Properly highlight nested comments.
  • Windows diagnostics!
  • Removed a potential infinite loop issue in autocomplete.
  • Don't autocomplete open MyModule inside line comments.
  • Don't print parentheses as in A() for 0-ary variants.

1.0.4

  • Some diagnostics watcher staleness fix.
  • Various type hover fixes.
  • Monorepo/yarn workspace support.

1.0.2

  • All the usual features (type hint, autocomplete) now work on bsconfig.json too!
  • Snippets, to ease a few syntaxes.
  • Improved highlighting for polymorphic variants. Don't abuse them please.

1.0.1

  • Fix temp file creation logic.

1.0.0

Official first release!