aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty
Commit message (Collapse)AuthorAgeFilesLines
* make Name::new privateAleksey Kladov2019-03-202-14/+56
|
* Merge #982bors[bot]2019-03-172-17/+136
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 982: Implement BindingMode for pattern matching. r=flodiebold a=mjkillough Implement `BindingMode` for pattern matching, so that types can be correctly inferred using match ergonomics. The binding mode defaults to `Move` (referred to as 'BindingMode::BindByValue` in rustc), and is updated by automatic dereferencing of the value being matched. Fixes #888. - [Binding modes in The Reference](https://doc.rust-lang.org/reference/patterns.html#binding-modes) - [`rustc` implementation](https://github.com/rust-lang/rust/blob/e17c48e2f21eefd59748e364234efc7037a3ec96/src/librustc_typeck/check/_match.rs#L77) (and [definition of `BindingMode`](https://github.com/rust-lang/rust/blob/e957ed9d10ec589bdd523b88b4b44c41b1ecf763/src/librustc/ty/binding.rs)) - [Match Ergonomics RFC](https://github.com/rust-lang/rfcs/blob/master/text/2005-match-ergonomics.md#binding-mode-rules) Co-authored-by: Michael Killough <[email protected]>
| * Split test case and use tested_by!.Michael Killough2019-03-172-76/+102
| |
| * Simplify match statement.Michael Killough2019-03-171-6/+1
| |
| * impl Default for BindingMode.Michael Killough2019-03-171-5/+11
| | | | | | | | | | This decouples callers from knowing what the default binding mode of pattern matching is.
| * Implement BindingMode for pattern matching.Michael Killough2019-03-162-62/+154
| | | | | | | | | | | | | | Implement `BindingMode` for pattern matching, so that types can be correctly inferred using match ergonomics. The binding mode defaults to `Move` (referred to as 'BindingMode::BindByValue` in rustc), and is updated by automatic dereferencing of the value being matched.
* | rename ModuleId -> CrateModuleIdAleksey Kladov2019-03-171-4/+4
| |
* | Reorganize name resolutionAleksey Kladov2019-03-171-1/+1
| |
* | Replace module_tree with CrateDefMapAleksey Kladov2019-03-171-1/+3
| |
* | Remove FnSig from FnDef typeFlorian Diebold2019-03-162-8/+16
| | | | | | | | | | It doesn't need to be in there since it's just information from the def. Another step towards aligning Ty with Chalk's representation.
* | Refactor FnSig a bitFlorian Diebold2019-03-162-36/+57
| |
* | Some more Ty displaying cleanupFlorian Diebold2019-03-161-33/+31
| |
* | Replace Display by a pretty printing trait for TyFlorian Diebold2019-03-163-19/+65
|/ | | | | This allows removing the names from Adt and FnDef (and more later), as a first step towards aligning more with chalk's Ty :)
* Use impl_froms!kjeremy2019-03-041-13/+3
|
* Make ExpOrPatId privatekjeremy2019-03-041-3/+6
|
* Remove commented out codeJeremy Kolb2019-03-041-9/+0
|
* Use ImplItems instead of just FunctionJeremy Kolb2019-03-041-34/+48
|
* Make goto definition/hover resolve constructorskjeremy2019-03-041-3/+40
|
* Inline type inference test snapshotsFlorian Diebold2019-03-0359-1504/+1096
|
* Represent unknown types as {unknown} instead of [unknown]Florian Diebold2019-03-0327-170/+170
| | | | Since the latter could actually be a real type...
* Add a bunch of tests for type inference involving traitsFlorian Diebold2019-03-0213-0/+403
| | | | None of them works correctly yet, of course.
* rename syntax-mapping -> source-mapAleksey Kladov2019-03-021-5/+5
|
* Add static type inferenceVille Penttinen2019-02-253-10/+24
|
* Add const type inferenceVille Penttinen2019-02-256-19/+104
|
* Rename Type => TypeAliasFlorian Diebold2019-02-242-11/+11
|
* Add test for recursive type aliasesFlorian Diebold2019-02-241-0/+14
|
* Implement support for type aliasesFlorian Diebold2019-02-244-10/+70
|
* Refactor associated method resolution a bit and make it work with genericsFlorian Diebold2019-02-234-64/+98
|
* Split ty.rs into several modulesFlorian Diebold2019-02-233-0/+1478
| | | | | | | | | It was just getting too big. We now have: - ty: the `Ty` enum and helpers - ty::infer: actual type inference - ty::lower: lowering from HIR to `Ty` - ty::op: helpers for binary operations, currently
* Fix resolution of associated method calls across cratesFlorian Diebold2019-02-231-2/+39
| | | | | | I think it'll be better to make the path resolution the number of unresolved segments, not the first unresolved index; then this error could simply not have happened. But I'll do that separately.
* Merge #866bors[bot]2019-02-226-0/+223
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 866: Implement basic support for Associated Methods r=flodiebold a=vipentti This is my attempt at learning to understand how the type inference works by adding basic support for associated methods. Currently it does not resolve associated types or constants. The basic idea is that `Resolver::resolve_path` returns a new `PathResult` type, which has two variants, `FullyResolved` and `PartiallyResolved`, fully resolved matches the previous behavior, where as `PartiallyResolved` contains the `PerNs<Resolution` in addition to a `segment_index` which contains the index of the segment which we failed to resolve. This index can then be used to continue inference in `infer_path_expr` using the `Type` we managed to resolve. This changes some of the previous apis, so looking for feedback and suggestions. This should enable fixing #832 Co-authored-by: Ville Penttinen <[email protected]>
| * Ignore failing test for nowVille Penttinen2019-02-211-0/+1
| |
| * Remove Const inference for now, refactor PathResultVille Penttinen2019-02-211-7/+7
| |
| * Implement basic support for Associated Methods and ConstantsVille Penttinen2019-02-216-0/+222
| | | | | | | | | | | | | | This is done in `infer_path_expr`. When `Resolver::resolve_path` returns `PartiallyResolved`, we use the returned `Resolution` together with the given `segment_index` to check if we can find something matching the segment at segment_index in the impls for that particular type.
* | Fix handling of generics in tuple variants and refactor a bitFlorian Diebold2019-02-203-3/+47
|/ | | | | | Also make them display a tiny bit nicer. Fixes #860.
* Merge #852bors[bot]2019-02-182-34/+39
|\ | | | | | | | | | | | | | | 852: Handle != r=flodiebold a=matklad r? @flodiebold Co-authored-by: Aleksey Kladov <[email protected]>
| * handle != operatorAleksey Kladov2019-02-182-34/+39
| |
* | Handle tuple structs / enum variants properly in type inferenceFlorian Diebold2019-02-171-9/+9
|/
* Unify with the autorefed/autoderefed receiver type during method resolutionFlorian Diebold2019-02-173-5/+43
|
* Handle generic args for method callsFlorian Diebold2019-02-161-3/+3
|
* Handle impl generics in method callsFlorian Diebold2019-02-162-47/+47
|
* Add a test for impl genericsFlorian Diebold2019-02-162-0/+71
|
* Turn ImplBlock into a copy type just containing IDsFlorian Diebold2019-02-161-18/+11
| | | | | | | This makes it more like the other code model types. Also make Module::definition_source/declaration_source return HirFileIds, to make them more like the other source functions.
* Fix another crashFlorian Diebold2019-02-122-0/+31
|
* Implement completion for associated itemsLaurențiu Nicola2019-02-121-0/+20
|
* replace clone with copyAleksey Kladov2019-02-121-1/+1
|
* fix obsolete commentAleksey Kladov2019-02-121-2/+2
|
* Add comment and markFlorian Diebold2019-02-091-0/+1
|
* Fix another crash, and try harder to prevent stack overflowsFlorian Diebold2019-02-092-0/+55
|
* Fix another crash found when analyzing rustcFlorian Diebold2019-02-092-0/+31
|