diff --git a/_posts/2023-07-24-changelog-199.markdown b/_posts/2023-07-24-changelog-199.markdown new file mode 100644 index 0000000..087dcc4 --- /dev/null +++ b/_posts/2023-07-24-changelog-199.markdown @@ -0,0 +1,123 @@ +--- +layout: post +title: "IntelliJ Rust Changelog #199" +date: 2023-07-24 13:00:00 +0300 +--- + + +## New Features + +* [#10648] Highlight `Unresolved Reference` error for type-independent paths + + + +* Completion improvements: + + * [#10689] Complete chained iterator methods + + {% include gif-img.html path="/assets/posts/changelog-199/chained_iterators" w="600px" %} + + * [#10647] Complete Cargo [instructions](https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script) in build scripts + + {% include gif-img.html path="/assets/posts/changelog-199/cargo_instructions" w="600px" %} + + * [#10651] Show the value of constants in the completion list + + + + * [#10692] Provide `fn` keyword completion in the type context + + * [#10691] Provide completion for `fn main() { ... }` + +* Improved error messages and provide new quick fixes: + + * [#10684] When trying to use a prefix/postfix increment like `i++` + + * [#10661] When incorrectly using `impl` or `dyn` in type parameters bounds + + * [#10681] When trying to inherit one struct from another - a helpful reminder that Rust doesn't support inheritance like `struct Foo: Bar {}` + +* [#10664] Add a new inspection for when the entry point of the program is marked as `async` ([E0752](https://doc.rust-lang.org/error_codes/E0752.html)) + +* [#10592] Add better support for the [`Path statements`](https://doc.rust-lang.org/rustc/lints/listing/warn-by-default.html#path-statements) inspection and enable it by default + +* [#10650] Add `iter` alias for `for` [live template](https://plugins.jetbrains.com/plugin/8182-rust/docs/rust-code-generation.html#live-templates) + +* [#10436] Now the `Trait objects must include the dyn keyword` inspection raises an error in the 2021 edition, and a warning on 2018 (by [@DeoTimeTheGithubUser]) + +## Fixes + +* [#10671] Fix bugs related to grammar error detection in Rust code using new API from [Grazie](https://plugins.jetbrains.com/plugin/12175-grazie-lite) plugin. Note, grammar error detection is disabled by default for now. You can enable it for Rust in `Scope` tab of `Preferences | Editor | Natural Languages | Grammar and Style` settings + +* Completion fixes: + + * [#10679] Show completion auto-popup when literal suffix is typed + + * [#10663] Don't add new line by smart enter action after `;` completion + + * [#10682] Complete `macro` live template only in item context + + * [#10680] Don't complete integer suffixes for literals in scientific notation + + * [#10674] Fix dependency keys completion when another key exists before + +* Macro expansion improvements: + + * [#10678] Increase proc macro expansion timeout to 20 seconds + + * [#10678] Improve error message in the case of too large macro expansion + + * [#10675] Improve error message for a non-expanded macro inside an impl block + +* [#10653] Use [E0403](https://doc.rust-lang.org/error_codes/E0403.html) instead of deprecated [E0263](https://doc.rust-lang.org/error_codes/E0263.html) + +* [#10676] Fix name resolution inside a nested block under a `cfg` attribute + +* [#10645] Fix live templates suggestion in loop labels and other positions + +* [#10669] Fix type inference in case of struct pattern matching + +* [#10688] Match negative numeric literals with `$l:literal` macro fragment spec + +* [#10428] Suggest `Surround with unsafe block` quick fix instead of `Add unsafe to function` for an unsafe call in some cases (e.g. inside a test function, main function, etc.) (by [@DeoTimeTheGithubUser]) + +## Internal Improvements + +* [#10670] Implement initial support for GDB debugging outside CLion. Right now it's disabled by default and works only on Linux + +* [#10668], [#10686] Extract hardcoded strings into a message bundle, allowing its future internationalization + +Full set of changes can be found [here](https://github.com/intellij-rust/intellij-rust/milestone/108?closed=1) + +[@DeoTimeTheGithubUser]: https://github.com/DeoTimeTheGithubUser + +[#10428]: https://github.com/intellij-rust/intellij-rust/pull/10428 +[#10436]: https://github.com/intellij-rust/intellij-rust/pull/10436 +[#10592]: https://github.com/intellij-rust/intellij-rust/pull/10592 +[#10645]: https://github.com/intellij-rust/intellij-rust/pull/10645 +[#10647]: https://github.com/intellij-rust/intellij-rust/pull/10647 +[#10648]: https://github.com/intellij-rust/intellij-rust/pull/10648 +[#10650]: https://github.com/intellij-rust/intellij-rust/pull/10650 +[#10651]: https://github.com/intellij-rust/intellij-rust/pull/10651 +[#10653]: https://github.com/intellij-rust/intellij-rust/pull/10653 +[#10661]: https://github.com/intellij-rust/intellij-rust/pull/10661 +[#10663]: https://github.com/intellij-rust/intellij-rust/pull/10663 +[#10664]: https://github.com/intellij-rust/intellij-rust/pull/10664 +[#10668]: https://github.com/intellij-rust/intellij-rust/pull/10668 +[#10669]: https://github.com/intellij-rust/intellij-rust/pull/10669 +[#10670]: https://github.com/intellij-rust/intellij-rust/pull/10670 +[#10671]: https://github.com/intellij-rust/intellij-rust/pull/10671 +[#10674]: https://github.com/intellij-rust/intellij-rust/pull/10674 +[#10675]: https://github.com/intellij-rust/intellij-rust/pull/10675 +[#10676]: https://github.com/intellij-rust/intellij-rust/pull/10676 +[#10678]: https://github.com/intellij-rust/intellij-rust/pull/10678 +[#10679]: https://github.com/intellij-rust/intellij-rust/pull/10679 +[#10680]: https://github.com/intellij-rust/intellij-rust/pull/10680 +[#10681]: https://github.com/intellij-rust/intellij-rust/pull/10681 +[#10682]: https://github.com/intellij-rust/intellij-rust/pull/10682 +[#10684]: https://github.com/intellij-rust/intellij-rust/pull/10684 +[#10686]: https://github.com/intellij-rust/intellij-rust/pull/10686 +[#10688]: https://github.com/intellij-rust/intellij-rust/pull/10688 +[#10689]: https://github.com/intellij-rust/intellij-rust/pull/10689 +[#10691]: https://github.com/intellij-rust/intellij-rust/pull/10691 +[#10692]: https://github.com/intellij-rust/intellij-rust/pull/10692 diff --git a/assets/posts/changelog-199/cargo_instructions.gif b/assets/posts/changelog-199/cargo_instructions.gif new file mode 100644 index 0000000..9f84702 Binary files /dev/null and b/assets/posts/changelog-199/cargo_instructions.gif differ diff --git a/assets/posts/changelog-199/cargo_instructions.png b/assets/posts/changelog-199/cargo_instructions.png new file mode 100644 index 0000000..3edf7e1 Binary files /dev/null and b/assets/posts/changelog-199/cargo_instructions.png differ diff --git a/assets/posts/changelog-199/chained_iterators.gif b/assets/posts/changelog-199/chained_iterators.gif new file mode 100644 index 0000000..f416be4 Binary files /dev/null and b/assets/posts/changelog-199/chained_iterators.gif differ diff --git a/assets/posts/changelog-199/chained_iterators.png b/assets/posts/changelog-199/chained_iterators.png new file mode 100644 index 0000000..5f0d8f0 Binary files /dev/null and b/assets/posts/changelog-199/chained_iterators.png differ diff --git a/assets/posts/changelog-199/constant-values.png b/assets/posts/changelog-199/constant-values.png new file mode 100644 index 0000000..d56408c Binary files /dev/null and b/assets/posts/changelog-199/constant-values.png differ diff --git a/assets/posts/changelog-199/unresolved_reference.png b/assets/posts/changelog-199/unresolved_reference.png new file mode 100644 index 0000000..a160950 Binary files /dev/null and b/assets/posts/changelog-199/unresolved_reference.png differ