hkalbasi
aab7589c40
Fix string pattern matching in mir interpreter
2023-06-02 23:45:29 +03:30
bors
dfaca9398a
Auto merge of #14950 - HKalbasi:render-const, r=HKalbasi
...
Support floating point intrinsics in const eval
2023-06-02 13:59:47 +00:00
hkalbasi
a6a27a7ff8
Support floating point intrinsics in const eval
2023-06-02 17:29:17 +03:30
bors
0677c204ca
Auto merge of #14947 - HKalbasi:render-const, r=HKalbasi
...
Add enum, reference, array and slice to `render_const_scalar`
2023-06-02 10:18:36 +00:00
hkalbasi
f9e3b180b7
Add enum, reference, array and slice to render_const_scalar
2023-06-02 13:47:02 +03:30
Lukas Wirth
dc7c6d43c7
Slightly shrink DefMap
2023-06-01 14:46:36 +02:00
hkalbasi
51368793b4
MIR episode 6
2023-05-28 23:25:15 +03:30
Lukas Wirth
8bc826dd53
Add diagnostic for _
expressions (typed holes)
2023-05-28 14:55:28 +02:00
hkalbasi
cd4bffdd69
Evaluate UnevalutedConst
before trait solving
2023-05-27 00:28:11 +03:30
Lukas Wirth
be9cc0baae
Render size, align and offset hover values in hex
2023-05-26 16:41:45 +02:00
hkalbasi
c21d09f3cc
insert type vars in function arguments
2023-05-26 14:26:13 +03:30
hkalbasi
780349bdaf
fix need-mut
false positive in closure capture of match scrutinee
2023-05-26 02:08:37 +03:30
hkalbasi
7ef185d65e
evaluate UnevaluatedConst
in unify
2023-05-25 19:37:20 +03:30
hkalbasi
b0f17668f7
use ::core
instead of $crate
in option_env!
2023-05-25 18:46:34 +03:30
Lukas Wirth
c7ef6c25b7
internal: Replace Display impl for Name
2023-05-24 20:55:12 +02:00
Ryo Yoshida
01f42d2405
fix: introduce new type var when expectation for ref pat is not ref
2023-05-22 23:13:41 +09:00
hkalbasi
92d6670f72
Consider block impls in lookup_impl_assoc_item_for_trait_ref
2023-05-20 01:11:17 +03:30
bors
bb78059be4
Auto merge of #14847 - HKalbasi:layout, r=HKalbasi
...
Reduce MIR memory usage
2023-05-19 12:06:11 +00:00
hkalbasi
60379dabfb
resolve types in closure capture copy detection
2023-05-19 14:54:57 +03:30
hkalbasi
c5ea2d7adc
handle match scrutinee in closure captures
2023-05-19 12:04:12 +03:30
hkalbasi
23ce228d54
Reduce MIR memory usage
2023-05-19 00:16:52 +03:30
hkalbasi
b55fbd3ad7
Add moved-out-of-ref
diagnostic
2023-05-18 19:17:06 +03:30
hkalbasi
4adfbbfbad
partially support panic message in MirEvalError
2023-05-18 18:30:49 +03:30
bors
9ce95674e8
Auto merge of #14837 - Veykril:rustc-lexer, r=Veykril
...
Support c string literals
2023-05-18 11:55:38 +00:00
Lukas Wirth
3e528b85f9
Fix cstring literals construct &CStr not &str
2023-05-18 12:03:15 +02:00
bors
034d7c8537
Auto merge of #14787 - HKalbasi:mir2, r=HKalbasi
...
MIR episode 5
This PR inits drop support (it is very broken at this stage, some things are dropped multiple time, drop scopes are wrong, ...) and adds stdout support (`println!` doesn't work since its expansion is dummy, but `stdout().write(b"hello world\n")` works if you use `RA_SYSROOT_HACK`) for interpreting. There is no useful unit test that it can interpret yet, but it is a good sign that it didn't hit a major road block yet.
In MIR lowering, it adds support for slice pattern and anonymous const blocks, and some fixes so that we can evaluate `SmolStr::new_inline` in const eval. With these changes, 57 failed mir body remains.
2023-05-18 09:44:26 +00:00
Lukas Wirth
eab295cc73
Fix mir CString lowering not respecting the extra 0 byte for length calc
2023-05-18 11:29:19 +02:00
Lukas Wirth
4b577e2bc8
Support c string literals
2023-05-18 11:06:05 +02:00
hkalbasi
261047d019
Fix layout for hir_ty::Ty
and friends
2023-05-18 11:29:03 +03:30
bors
b7b026bce6
Auto merge of #14825 - HKalbasi:float-const-eval, r=Veykril
...
Fix evaluating negative for floating point types
fix #14704
Unary operators was missed from #14705
2023-05-18 05:22:41 +00:00
bors
a20a08f3e2
Auto merge of #14824 - Veykril:ty-diag-unit, r=Veykril
...
fix: Diagnose non-value return and break type mismatches
Could definitely deserve more polished diagnostics, but this at least brings the message across for now.
2023-05-18 05:03:42 +00:00
hkalbasi
fd034bea1a
Fix evaluating negative for floating point types
2023-05-17 01:27:45 +03:30
Lukas Wirth
478705baf5
fix: Diagnose non-value return and break type mismatches
2023-05-16 22:47:27 +02:00
Lukas Wirth
08dc0e21af
feat: Render hover actions for closure captures and sig
2023-05-15 19:35:27 +02:00
bors
2f8cd66fb4
Auto merge of #14810 - Veykril:inline-module, r=Veykril
...
internal: Inline handlers module
2023-05-15 10:19:21 +00:00
Lukas Wirth
9e80c8571d
internal: Inline handlers module
2023-05-15 11:59:09 +02:00
hkalbasi
431dd32f8a
Unsized temporary is not an implementation error
2023-05-14 21:05:33 +03:30
hkalbasi
cbcafd3539
MIR episode 5
2023-05-12 18:17:15 +03:30
bors
9b3387454d
Auto merge of #14781 - lowr:patch/macro-subns-and-prelude, r=Veykril
...
Introduce macro sub-namespaces and `macro_use` prelude
This PR implements two mechanisms needed for correct macro name resolution: macro sub-namespace and `macro_use` prelude.
- [macro sub-namespaces][subns-ref]
Macros have two sub-namespaces: one for function-like macro and the other for those in attributes (including custom derive macros). When we're resolving a macro name for function-like macro, we should ignore non-function-like macros, and vice versa.
This helps resolve single-segment macro names because we can (and should, as rustc does) fallback to names in preludes when the name in the current module scope is in different sub-namespace.
- [`macro_use` prelude][prelude-ref]
`#[macro_use]`'d extern crate declarations (including the standard library) bring their macros into scope, but they should not be prioritized over local macros (those defined in place and those explicitly imported).
We have been bringing them into legacy (textual) macro scope, which has the highest precedence in name resolution. This PR introduces the `macro_use` prelude in crate-level `DefMap`s, whose precedence is lower than local macros but higher than the standard library prelude.
The first 3 commits are drive-by fixes/refactors.
Fixes #8828 (prelude)
Fixes #12505 (prelude)
Fixes #12734 (prelude)
Fixes #13683 (prelude)
Fixes #13821 (prelude)
Fixes #13974 (prelude)
Fixes #14254 (namespace)
[subns-ref]: https://doc.rust-lang.org/reference/names/namespaces.html#sub-namespaces
[prelude-ref]: https://doc.rust-lang.org/reference/names/preludes.html#macro_use-prelude
2023-05-11 14:26:59 +00:00
Ryo Yoshida
f2a35deb50
Consider macro sub-namespace during name resolution
2023-05-11 21:13:12 +09:00
Ryo Yoshida
34a9129333
fix: column!()
and line!()
built-in macros return u32
2023-05-11 21:13:05 +09:00
bors
d3ce333ec8
Auto merge of #14742 - Veykril:closure-capture-inlays, r=Veykril
...
feat: Closure capture inlay hints
I opted for a fictional `move(foo, &bar, &mut qux)` syntax here, disabled by default as these are not correct rust syntax and hence could cause confusion.
![image](https://user-images.githubusercontent.com/3757771/236447484-649a4ea6-ad61-496e-bad8-765a5236150e.png )
2023-05-08 09:52:29 +00:00
Lukas Wirth
4c5fd19ee5
Render places in capture inlay hints
2023-05-08 09:50:58 +02:00
bors
ff8b969951
Auto merge of #14727 - HKalbasi:mir, r=HKalbasi
...
Lazy evaluate consts in `path_to_const`
fix #14275
2023-05-08 07:14:57 +00:00
bors
260e996140
Auto merge of #14733 - azdavis:master, r=matklad
...
Make line-index a lib, use nohash_hasher
These seem like they are not specific to rust-analyzer and could be pulled out to their own libraries. So I did.
https://github.com/azdavis/millet/issues/31
2023-05-06 23:37:02 +00:00
Ryo Yoshida
9360adccda
Ignore impls with #[rustc_reservation_impl]
2023-05-07 01:31:36 +09:00
Ariel Davis
4a1922fd1a
Depend on nohash-hasher individually
2023-05-06 00:49:23 -07:00
Lukas Wirth
abcdb4bc7d
Fix test fixtures
2023-05-05 14:18:27 +02:00
Lukas Wirth
8081a654da
feat: Closure capture inlay hints
2023-05-05 13:38:22 +02:00
hkalbasi
aafe9b1e06
Lazy evaluate consts in path_to_const
2023-05-05 01:17:11 +03:30
bors
0d5773e04e
Auto merge of #14725 - HKalbasi:derive-impls, r=HKalbasi
...
Emit function bodies in expanding builtin derives
fix #14235
2023-05-04 15:01:44 +00:00
hkalbasi
36c9d5ce17
Fix pattern type mismatch in tuples
2023-05-04 16:03:36 +03:30
hkalbasi
d9f4cbbe8f
Emit function bodies in expanding builtin derives
2023-05-03 14:14:47 +03:30
Laurențiu Nicola
7197a27028
Use triomphe Arc
2023-05-02 20:02:43 +03:00
Lukas Wirth
3fdff0ae4b
Don't merge trait_impls_in_deps results
2023-05-02 14:00:18 +02:00
bors
86b14c2458
Auto merge of #14705 - HKalbasi:mir, r=lnicola
...
Fix some mir related bugs
fix #14701
fix #14704
2023-05-02 09:29:46 +00:00
hkalbasi
38544f56ab
Catch overflow in shift binop evaluation
2023-05-02 12:57:34 +03:30
hkalbasi
266ceb7b4d
Fix floating point binop evaluation
2023-05-02 11:48:04 +03:30
Lukas Wirth
5a97a326a9
Simplify
2023-05-02 09:05:28 +02:00
Lukas Wirth
a64626d99e
Highlight closure captures when cursor is on pipe
2023-05-02 08:59:40 +02:00
hkalbasi
6312fbf521
MIR episode 4
2023-05-01 23:23:10 +03:30
hkalbasi
5df545b3f0
Add hover for closure
2023-04-30 14:31:43 +03:30
Lukas Wirth
10d7d7304b
Revert "Handle dev-dependency cycles"
2023-04-25 14:29:26 +02:00
Lukas Wirth
e205af259d
Prefer test duped crates for ide features
2023-04-25 11:39:58 +02:00
bors
15ef5f5523
Auto merge of #14641 - lowr:fix/obligation-for-value-path, r=Veykril
...
Register obligations during path inference
Fixes #14635
When we infer path expressions that resolve to some generic item, we need to consider their generic bounds. For example, when we resolve a path `Into::into` to `fn into<?0, ?1>` (note that `?0` is the self type of trait ref), we should register an obligation `?0: Into<?1>` or else their relationship would be lost.
Relevant part in rustc is [`add_required_obligations_with_code()`] that's called in [`instantiate_value_path()`].
[`instantiate_value_path()`]: 3462f79e94/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs (L1052)
[`add_required_obligations_with_code()`]: 3462f79e94/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs (L1411)
2023-04-24 19:56:43 +00:00
bors
1b835da0f5
Auto merge of #14639 - HKalbasi:dev2, r=Veykril
...
Fix some typos in `StructFlags`
And a question: what is the benefit of storing things like `IS_BOX` in struct flags over using `lang_attr`?
2023-04-24 05:59:23 +00:00
Ryo Yoshida
12ba5cab11
Register obligations during path inference
2023-04-24 12:39:48 +09:00
hkalbasi
01c1b3dc71
Fix panic in const eval and parameter destructing
2023-04-24 00:49:57 +03:30
hkalbasi
232f293c19
Fix some typos in StructFlags
2023-04-23 21:55:47 +03:30
Ryo Yoshida
c6aea8c2f9
Minor refactorings
2023-04-24 02:19:08 +09:00
bors
1379b5fac7
Auto merge of #14630 - Veykril:arc, r=Veykril
...
internal: `Arc<String>` -> `Arc<str>`
2023-04-22 07:58:13 +00:00
Lukas Wirth
f00dcf9a69
internal: Arc<String> -> Arc<str>
2023-04-22 09:48:37 +02:00
hkalbasi
0c621065fb
Fix need-mut large span in closures and a false positive
2023-04-21 02:15:19 +03:30
bors
2400b36a2e
Auto merge of #14577 - jsoref:spelling, r=lnicola
...
Spelling
This PR corrects misspellings identified by the [check-spelling action](https://github.com/marketplace/actions/check-spelling ).
The misspellings have been reported at https://github.com/jsoref/rust-analyzer/actions/runs/4699991040#summary-12751355796
The action reports that the changes in this PR would make it happy: https://github.com/jsoref/rust-analyzer/actions/runs/4699991284#summary-12751356293
closes #14567
2023-04-19 14:05:40 +00:00
Josh Soref
bc7d84c3ce
Spelling
...
* a rule
* access
* after
* amount
* annotations
* assignment
* assist
* associated
* attribute
* borrowed
* built-in type
* clarification
* command
* const
* constructor
* corresponding
* counterparts
* curlies
* dependencies
* deterministic
* diagnostic
* duplicates
* edge
* edited
* efficient
* elsewhere
* execution
* expression
* extensions
* extracted
* fill
* github
* helper
* heuristic
* incomplete
* indent end
* inlay
* invocation
* lifetime
* looking
* maybe
* move
* mutability
* mutable
* necessarily
* necessary
* negative
* nonexistent
* occurred
* offsets
* offsetted
* overridden
* parameters
* params
* params_and_where_preds_in_scope
* paredit
* parent
* parentheses
* prepended if
* punctuation
* receive
* receiver
* referring
* repeated
* representing
* semantically
* separately
* shouldnot
* siblings
* similar
* something's
* statement
* struct
* structure
* surprise
* the
* this
* transparent
* unimplemented
* unnamed
* unnecessary
* unneeded
* unreachable
* unterminated
* utilities
* variant
* variants
* visibility
* work around (v)
* workaround
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-04-19 09:45:55 -04:00
bors
9b835f334f
Auto merge of #14594 - Veykril:Simplify, r=Veykril
...
internal: Move Expander and LowerCtx into separate modules
2023-04-17 19:00:42 +00:00
Lukas Wirth
bca8029a6e
Move Expander and LowerCtx into separate modules
2023-04-17 20:44:06 +02:00
Laurențiu Nicola
160ab88bb9
Bump bitflags
2023-04-17 18:42:59 +03:00
Lukas Wirth
a2a3fecae3
Option begone part 2
2023-04-16 19:20:48 +02:00
Lukas Wirth
d1632c2727
Report syntax errors from item level macro expansions
2023-04-16 17:22:06 +02:00
Lukas Wirth
0bb9a17312
internal: Move layout logic from hir-def to hir-ty
2023-04-16 12:21:12 +02:00
bors
b218009f46
Auto merge of #14576 - HKalbasi:dev2, r=HKalbasi
...
Fix explicit deref problems in closure capture
fix the `need-mut` part of #14562
Perhaps surprisingly, it wasn't unique immutable borrow. The code still doesn't emit any of them, and I think those won't happen in edition 2021 (which is currently the only thing implemented), since we always capture `&mut *x` instead of `&mut x`. But I'm not very sure about it.
2023-04-14 13:23:49 +00:00
Laurențiu Nicola
febd5065ad
Make inherent_impls_in_block and trait_impls_in_block infallible
2023-04-14 16:03:45 +03:00
hkalbasi
7cb4318331
Fix explicit deref problems in closure capture
2023-04-14 15:32:40 +03:30
Lukas Wirth
c32d51979d
internal: Make block_def_map infallible
2023-04-14 13:17:38 +02:00
Ryo Yoshida
ac03de773f
Add flag to disallow opaque types for DisplayTarget::SourceCode
2023-04-12 19:03:48 +09:00
bors
7afd2048f0
Auto merge of #14544 - HKalbasi:dev, r=Veykril
...
Infer types of nested RPITs
fix https://github.com/rust-lang/rust-analyzer/issues/14474#issuecomment-1501235394
2023-04-11 14:49:04 +00:00
hkalbasi
85f9235de8
fix inference in nested closure
2023-04-11 17:02:00 +03:30
hkalbasi
a584cb998f
Infer types of nested RPITs
2023-04-11 04:32:11 +03:30
hkalbasi
59b6f2d9f2
Compute closure captures
2023-04-10 23:04:34 +03:30
hkalbasi
c54cb88950
Add bounds for associated types in derive macro
2023-04-07 19:33:14 +03:30
bors
d73161b491
Auto merge of #14524 - Veykril:hir-pretty, r=Veykril
...
internal: Render function parameters in hir-def pretty printing
2023-04-07 07:34:45 +00:00
Lukas Wirth
513d4a9c9a
Render function parameters in hir-def pretty printing
2023-04-07 09:34:04 +02:00
bors
e739c999cd
Auto merge of #14511 - HKalbasi:dev, r=Veykril
...
Always reborrow mutable reference receiver in methods
Dependency of #14470
2023-04-06 21:18:15 +00:00
hkalbasi
7ba93cb8cf
Always reborrow reference receiver in methods
2023-04-07 00:32:28 +03:30
Ryo Yoshida
5ab4e64a4c
fix: unify types in infer_expr_coerce_never()
2023-04-07 05:46:30 +09:00
Lukas Wirth
f742943a4b
Don't recreate Hygiene unnecessarily
2023-04-06 21:16:11 +02:00
Lukas Wirth
a1b96b1e00
Remove unnecessary Names from FunctionData::params
2023-04-06 20:14:51 +02:00
Lukas Wirth
99b69525f4
hir_def::expr -> hir_def::hir, hir_def::type_ref -> hir_def::hir::type_ref
2023-04-06 19:36:25 +02:00
Lukas Wirth
8e7c104b3a
Move hir_def::adt to hir_def::data::adt
2023-04-06 19:23:29 +02:00