Ryo Yoshida
6aa03c5d15
Use Cast::cast()
instead of interning GenericArgData
2023-08-09 00:47:29 +09:00
Tadeo Kondrak
92a97c292a
hir: Remove Expr::While
...
The previous commit desugared it to a loop.
2023-08-01 19:08:16 -06:00
bors
037844c8a0
Auto merge of #15271 - lowr:patch/re-castable, r=HKalbasi
...
Properly infer types with type casts
This PR reenables `Expectation::Castable` (previous attempt at #14104 , reverted by #14120 ) and implements type cast checks, which enable us to infer a bit more.
Castable expectations are relatively weak -- they only influence the inference if we cannot infer the types by other means. Therefore, we need to defer possible type unification with the casted type until we type check all expressions of the body. This PR adds a struct and slots in `InferenceContext` for the deferred cast checks (c.f. [`CastCheck`] in `rustc_hir_typeck`).
I only implemented the bits that affect the inference result. It should be possible to return type adjustments for well-formed casts and report diagnostics for invalid casts, but I'm leaving them for future work for now.
Fixes #11571
Fixes #15246
[`CastCheck`]: da1d099f91/compiler/rustc_hir_typeck/src/cast.rs (L55)
2023-07-28 07:17:38 +00:00
hkalbasi
b7d91ca5b2
Normalize expected ty in call arguments
2023-07-22 01:06:58 +03:30
Ryo Yoshida
074488b290
Properly infer types with type casts
2023-07-13 00:14:15 +09:00
hkalbasi
3a1054fc1c
Replace x
with it
2023-07-06 17:33:17 +03:30
Ryo Yoshida
827a0530bc
Don't show unresolved-field
diagnostic for missing names
2023-07-06 20:39:48 +09:00
bors
5703346523
Auto merge of #15118 - alexkirsz:alexkirsz/resolve-deref-raw, r=Veykril
...
Follow raw pointers in autoderef chain when resolving methods with custom receiver
Fixes #15083
I believe this stopped working after e797479651
2023-07-03 14:55:08 +00:00
Ryo Yoshida
4e793e7859
Use anonymous lifetime where possible
2023-06-29 23:27:28 +09:00
Alex Kirszenberg
5991f0d869
Follow raw pointers in autoderef chain when resolving methods with custom receiver
2023-06-23 15:35:41 +02:00
Lukas Wirth
abe249559d
internal: Give ConstBlockId and InTypeConstId named Location types
2023-06-12 18:21:17 +02:00
hkalbasi
a481e004b0
Lower const params with a bad id
2023-06-11 00:39:28 +03:30
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
c21d09f3cc
insert type vars in function arguments
2023-05-26 14:26:13 +03:30
hkalbasi
7ef185d65e
evaluate UnevaluatedConst
in unify
2023-05-25 19:37:20 +03:30
hkalbasi
b55fbd3ad7
Add moved-out-of-ref
diagnostic
2023-05-18 19:17:06 +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
4b577e2bc8
Support c string literals
2023-05-18 11:06:05 +02:00
Lukas Wirth
478705baf5
fix: Diagnose non-value return and break type mismatches
2023-05-16 22:47:27 +02:00
hkalbasi
cbcafd3539
MIR episode 5
2023-05-12 18:17:15 +03:30
Laurențiu Nicola
7197a27028
Use triomphe Arc
2023-05-02 20:02:43 +03:00
hkalbasi
6312fbf521
MIR episode 4
2023-05-01 23:23:10 +03:30
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
hkalbasi
59b6f2d9f2
Compute closure captures
2023-04-10 23:04:34 +03:30
Ryo Yoshida
5ab4e64a4c
fix: unify types in infer_expr_coerce_never()
2023-04-07 05:46:30 +09: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
fbb1bd5880
Re-enable controlflow outside loop diagnostic
2023-04-06 15:37:53 +02:00
Lukas Wirth
0e7117900c
internal: Resolve labels in body lowering
2023-04-06 14:21:20 +02:00
hkalbasi
c26b12d01c
Desugar async fn completely
2023-04-04 23:07:38 +03:30
hkalbasi
8a6ca86247
Use async block in async fn type inference
2023-04-01 04:35:28 +03:30
Lukas Wirth
fc840dbb2d
internal: Don't expose InferenceTable outside of hir-ty
2023-03-30 13:27:10 +02:00
Lukas Wirth
251b3a47af
Simplify
2023-03-30 09:21:10 +02:00
Lukas Wirth
e797479651
fix: Handle box and raw pointers correctly in builtin_deref
2023-03-29 21:38:32 +02:00
Lukas Wirth
798990bf33
fix: Add missing autoborrow adjustment for index expressions
2023-03-29 16:11:48 +02:00
Lukas Wirth
bea1c71f83
Use struct_tail_without_normalization in Expectation::rvalue_hint
2023-03-29 14:49:06 +02:00
bors
7a98e24777
Auto merge of #14431 - Veykril:simplify, r=Veykril
...
minor: Simplify
2023-03-29 07:28:42 +00:00
Lukas Wirth
8ea1afce28
Simplify
2023-03-28 16:32:26 +02:00
Lukas Wirth
342fd2b9f3
fix: Properly handle local trait impls
2023-03-28 08:34:29 +02:00
hkalbasi
8a3ad7c3d5
Support evaluating inherent associated constants with generics
2023-03-21 02:20:30 +03:30
hkalbasi
3303a6eff5
Implement some intrinsics
2023-03-20 21:48:01 +03:30
hkalbasi
8e73ea5253
Desugar try blocks
2023-03-19 13:02:51 +03:30
hkalbasi
eb4939e217
Support overloaded deref MIR lowering
2023-03-17 14:02:55 +03:30
hkalbasi
a063f000ff
Support function pointer MIR lowering
2023-03-17 13:08:35 +03:30
hkalbasi
b7b9ae59a0
desugar ? operator
2023-03-17 13:08:35 +03:30
Lukas Wirth
3bf07a5f04
Simplify
2023-03-15 13:54:06 +01:00
Zachary S
6746a08b44
fix: Fix return type of async closures.
...
(rebased onto 6dfd8ae)
2023-03-15 13:10:00 +01:00
hkalbasi
6377d50bd1
Support "for loop" MIR lowering
2023-03-06 21:09:09 +03:30