aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src
Commit message (Collapse)AuthorAgeFilesLines
* Rename resolve_relative_path -> resolve_pathAleksey Kladov2020-06-051-6/+2
| | | | For things like `concant!(env!("OUT_DIR"))`, we need to support abs paths
* correctly infer labelled breaksrobojumper2020-05-313-26/+50
|
* labelled break testrobojumper2020-05-311-0/+54
|
* Merge #4653bors[bot]2020-05-302-5/+61
|\ | | | | | | | | | | | | | | 4653: Fix match ergonomics in closure parameters r=matklad a=flodiebold Fixes #4476. Co-authored-by: Florian Diebold <[email protected]>
| * Fix match ergonomics in closure parametersFlorian Diebold2020-05-292-5/+61
| | | | | | | | Fixes #4476.
* | Merge #4651bors[bot]2020-05-292-4/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4651: Use first match branch in case of type mismatch, not last r=kjeremy a=flodiebold The comment says this was intentional, but I do agree with #4304 that it makes more sense the other way around (for if/else as well). Fixes #4304. Co-authored-by: Florian Diebold <[email protected]>
| * | Use first match branch in case of type mismatch, not lastFlorian Diebold2020-05-292-4/+2
| | | | | | | | | | | | | | | | | | | | | The comment says this was intentional, but I do agree with #4304 that it makes more sense the other way around (for if/else as well). Fixes #4304.
* | | Merge #4652bors[bot]2020-05-291-5/+49
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | 4652: Upgrade Chalk r=kjeremy a=flodiebold Fixes #4072. Co-authored-by: Florian Diebold <[email protected]>
| * | Upgrade ChalkFlorian Diebold2020-05-291-5/+49
| |/ | | | | | | Fixes #4072.
* / Support raw_ref_op's raw reference operatorrobojumper2020-05-284-22/+70
|/
* Merge #4641bors[bot]2020-05-283-52/+52
|\ | | | | | | | | | | | | | | | | 4641: Upgrade Chalk r=matklad a=flodiebold Chalk newly added TypeName::Never and Array; I implemented the conversion for Never, but not Array since that expects a const argument. Co-authored-by: Florian Diebold <[email protected]>
| * Upgrade ChalkFlorian Diebold2020-05-273-52/+52
| | | | | | | | | | Chalk newly added TypeName::Never and Array; I implemented the conversion for Never, but not Array since that expects a const argument.
* | Fixed missing newline on each field on "Missing structure fields".Cadu2020-05-271-2/+2
|/
* Fix some clippy perf warningsJeremy Kolb2020-05-251-2/+1
|
* Use Chalk's Ty::Function for function pointer typesFlorian Diebold2020-05-222-8/+51
| | | | | | Function pointers can be 'higher-ranked' over lifetimes, which is why they're not an application type in Chalk, but since we don't model lifetimes it doesn't matter for us yet.
* Use Chalk's built-in representation of function item typesFlorian Diebold2020-05-227-10/+128
|
* Provide missing Chalk debug methodsFlorian Diebold2020-05-222-0/+112
|
* Use TypeCtorId as AdtId directly, and rename the type alias StructId -> AdtIdFlorian Diebold2020-05-225-14/+14
|
* Split up chalk module a bitFlorian Diebold2020-05-223-958/+982
|
* Add some tests for Chalk built-in trait implsFlorian Diebold2020-05-221-0/+78
|
* Provide Chalk well-known traitsFlorian Diebold2020-05-221-6/+33
|
* Use Chalk's built-in representations of primitive typesFlorian Diebold2020-05-221-10/+160
| | | | For references, we make sure Chalk actually gets a lifetime here.
* Update ChalkFlorian Diebold2020-05-222-49/+78
| | | | | As always, this just makes compilation work, we don't use the newly available functionality yet.
* Switch to new magic marksAleksey Kladov2020-05-2012-42/+28
|
* Apply suggestion of @flodiebold: Get rid of multiple unwrapsRoland Ruckerbauer2020-05-191-12/+10
|
* loop return value inference: add testsRoland Ruckerbauer2020-05-191-0/+63
|
* Move false negative expr_diverges_missing_arm() to working testsRoland Ruckerbauer2020-05-191-21/+18
|
* loop return value inference: coerce_merge branchesRoland Ruckerbauer2020-05-191-15/+23
|
* Infer return type of loops with value breaks.Roland Ruckerbauer2020-05-182-6/+16
|
* Merge #4497bors[bot]2020-05-181-0/+31
|\ | | | | | | | | | | | | | | | | | | | | | | 4497: Create LowerCtx on the fly r=matklad a=edwin0cheng Previously we create `LowerCtx` at the beginning of lowering, however, the hygiene content is in fact changing between macro expression expanding. This PR change it to create the `LowerCtx` on the fly to fix above bug. However, #4465 is not fixed by this PR, the goto-def is still not work yet. It only fixed the infer part. Co-authored-by: Edwin Cheng <[email protected]>
| * Create LowerCtx on the flyEdwin Cheng2020-05-171-0/+31
| |
* | Add more tests for Fn traitsHrvoje Ban2020-05-181-0/+132
| |
* | Allow calling dyn trait super trait methods without the super trait in scopeFlorian Diebold2020-05-163-15/+40
|/ | | | | This also removes some vestiges of the old impl trait support which I think aren't currently in use.
* Chalk upgradeFlorian Diebold2020-05-161-19/+38
|
* Handle `Self` in values and patternsFlorian Diebold2020-05-154-14/+183
| | | | | | | | | I.e. - `Self(x)` or `Self` in tuple/unit struct impls - `Self::Variant(x)` or `Self::Variant` in enum impls - the same in patterns Fixes #4454.
* Adds a param_idx helperFedor Sakharov2020-05-141-0/+5
|
*-. Merge #4394 #4414bors[bot]2020-05-101-2/+6
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4394: Simplify r=matklad a=Veetaha 4414: Highlighting improvements r=matklad a=matthewjasper - `static mut`s are highlighted as `mutable`. - The name of the macro declared by `macro_rules!` is now highlighted. Co-authored-by: veetaha <[email protected]> Co-authored-by: Matthew Jasper <[email protected]>
| | * Highlight mutable statics as mutableMatthew Jasper2020-05-101-2/+6
| | |
* | | Omit default types in HirDisplay SourceCode modeTimo Freiberg2020-05-102-27/+63
| | |
* | | infer: Make expected rhs type for plain assign the lhs typeEmil Lauridsen2020-05-102-1/+31
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | This fixes an issue where the following code sample would fail to infer the type contained in the option: ```rust fn main() { let mut end = None; // TODO: Fix inference for this in RA loop { end = Some(true); } } ```
* | Merge #4175bors[bot]2020-05-093-38/+178
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | 4175: Introduce HirDisplay method for rendering source code & use it in add_function assist r=flodiebold a=TimoFreiberg Next feature for #3639. So far the only change in the new `HirDisplay` method is that paths are qualified, but more changes will be necessary (omitting the function name from function types, returning an error instead of printing `"{unknown}"`, probably more). Is that approach okay? Co-authored-by: Timo Freiberg <[email protected]>
| * New HirDisplay method for displaying sourcecodeTimo Freiberg2020-05-083-38/+178
| |
* | Handle coercing function types to function pointers in matchFlorian Diebold2020-05-084-11/+72
| | | | | | | | | | | | | | | | | | | | | | | | E.g. in ```rust match x { 1 => function1, 2 => function2, } ``` we need to try coercing both to pointers. Turns out this is a special case in rustc as well (see the link in the comment).
* | Add diagnostic for break outside of loopFlorian Diebold2020-05-084-1/+62
| |
* | Use matches!Florian Diebold2020-05-081-4/+1
| |
* | Handle break somewhat betterFlorian Diebold2020-05-083-3/+105
| | | | | | | | | | Still no break-with-value or labels, but at least we know that `loop { break; }` doesn't diverge.
* | Implement better handling of divergenceFlorian Diebold2020-05-087-23/+200
|/ | | | | | | | Divergence here means that for some reason, the end of a block will not be reached. We tried to model this just using the never type, but that doesn't work fully (e.g. in `let x = { loop {}; "foo" };` x should still have type `&str`); so this introduces a `diverges` flag that the type checker keeps track of, like rustc does.
* Fix type of byte literalsFlorian Diebold2020-05-083-10/+11
| | | | They're `&[u8; N]`, not `&[u8]` (see #4374).
* Fix usefulness check for never typeMikail Bagishov2020-05-061-6/+23
|
* Rename ImplItem to AssocItemEdwin Cheng2020-05-051-2/+2
|