Now bounds inside a path are parsed as DYN_TRAIT_TYPE, previously they would be
parsed as `PATH_TYPE` followed by `TYPE_BOUND_LIST`.
Basically this means `Box<T + 'f>` is now parsed almost the same as
`Box<dyn T + 'f>` with the exception of not having the `dyn` keyword.
These are now used when parsing type bounds. In addition parsing paths inside a
bound now does not recursively parse paths, rather they are treated as separate
bounds, separated by +.
1071: Fix emacs-lsp runnables support with native json r=matklad a=flodiebold
(In that case args is a vector, which string-join doesn't like.)
Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
1061: Use EXE extension for pre-commit hook on Window r=matklad a=hban
Tested on Git Bash, CMD and Powershell.
Closes: #875
Co-authored-by: Hrvoje Ban <hban@users.noreply.github.com>
1052: Flip binary expression assist r=matklad a=marcogroppo
Adds an assist that can flip these binary comparison operators: `==`, `!=`, `>`, `>=`, `<`, `<=`.
This is a small extension to the 'flip ==' assist.
In theory we could easily flip ANY binary expression, but I'm not sure it would be a good idea (IMHO we should try not to change the meaning of the expression).
Does it make sense?
Co-authored-by: Marco Groppo <marco.groppo@gmail.com>
1055: store macro def inside macro id r=matklad a=matklad
This makes macro expansion resilient to changes to code inside the macro
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This solves the problem of "macro expansion can't call into name
resolution, because name resolution calls back into macro expansion"
Because we store macro def as a part of call id, macro expansion just
knows the def!
1040: Trait beginnings r=matklad a=flodiebold
This adds some very simple trait method resolution, going through traits in scope, looking for methods of the given name, and checking very naively whether there's an impl for the given type and trait.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>