aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty
Commit message (Collapse)AuthorAgeFilesLines
...
* Do autoderef for indexingFlorian Diebold2020-02-294-7/+74
|
* Do array unsizing for method receiversFlorian Diebold2020-02-292-2/+37
| | | | | | | It turns out rustc actually only unsizes array method receivers, so we don't need to do any trait solving for this (at least for now). Fixes #2670.
* Rename ast::ImplBlock -> ast::ImplDefAleksey Kladov2020-02-296-29/+28
|
* Fix a common false-positive type mismatchFlorian Diebold2020-02-293-9/+71
| | | | | | | | | E.g. for `&{ some_string() }` in a context where a `&str` is expected, we reported a mismatch inside the block. The problem is that we're passing an expectation of `str` down, but the expectation is more of a hint in this case. There's a long comment in rustc about this, which I just copied. Also, fix reported location for type mismatches in macros.
* Basic injectionsAleksey Kladov2020-02-271-2/+2
|
* Bump chalk and replace TypeFamily with InternerLaurențiu Nicola2020-02-243-59/+68
|
* Shorten some codeFlorian Diebold2020-02-221-4/+1
|
* Rework find_super_trait_path to protect against cyclesFlorian Diebold2020-02-225-23/+74
|
* Fix shift_bound_varsFlorian Diebold2020-02-221-3/+3
| | | | It should only shift free vars (maybe the name isn't the best...)
* Fix wrong handling of bare `dyn Trait` exposed by canonicalizer fixFlorian Diebold2020-02-221-1/+3
| | | | | The self type in the `dyn Trait` trait ref should always be ^0, but we didn't put that in there in the bare case.
* Add &dyn Trait -> &dyn SuperTrait coercion, and fix &T -> &dyn TraitFlorian Diebold2020-02-224-44/+132
|
* Fix handling of binders in canonicalizationFlorian Diebold2020-02-221-64/+35
| | | | I'm looking forward to getting rid of this in favor of Chalk's implementation.
* Implement dyn Trait unsizing as wellFlorian Diebold2020-02-225-9/+136
|
* Implement unsize coercion using proper trait solvingFlorian Diebold2020-02-225-187/+170
|
* Fix handling of const patternsFlorian Diebold2020-02-212-2/+48
| | | | | | | | | E.g. in `match x { None => ... }`, `None` is a path pattern (resolving to the option variant), not a binding. To determine this, we need to try to resolve the name during lowering. This isn't too hard since we already need to resolve names for macro expansion anyway (though maybe a bit hacky). Fixes #1618.
* Normalize associated types in types coming from ChalkFlorian Diebold2020-02-212-1/+46
| | | | Fixes #3232.
* Merge #3215bors[bot]2020-02-192-6/+34
|\ | | | | | | | | | | | | | | | | | | 3215: Exclude methods from non-parameter types introduced by generic constraints r=flodiebold a=lnicola Fixes #3184. r? @flodiebold Co-authored-by: Laurențiu Nicola <[email protected]>
| * Exclude methods from non-parameter types introduced by generic constraintsLaurențiu Nicola2020-02-192-6/+34
| |
* | Fill missing fields of enum variantsAleksey Kladov2020-02-191-7/+11
|/
* Update versionsKirill Bulatov2020-02-181-4/+4
|
* More manual clippy fixesKirill Bulatov2020-02-1812-54/+38
|
* Run cargo +nightly fix --clippy -Z unstable-optionsKirill Bulatov2020-02-1810-76/+66
|
* Merge #3169bors[bot]2020-02-171-4/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3169: Show record field names in Enum completion r=flodiebold a=adamrk Adresses https://github.com/rust-analyzer/rust-analyzer/issues/2947. Previously the details shown when autocompleting an Enum variant would look like the variant was a tuple even if it was a record: ![2020-02-16-15:59:32_crop](https://user-images.githubusercontent.com/16367467/74607233-64f21980-50d7-11ea-99db-e973e29c71d7.png) This change will show the names of the fields for a record and use curly braces instead of parentheses: ![2020-02-16-15:33:00_crop](https://user-images.githubusercontent.com/16367467/74607251-8ce17d00-50d7-11ea-9d4d-38d198a4aec0.png) This required exposing the type `adt::StructKind` from `ra_hir` and adding a function ``` kind(self, db: &impl HirDatabase) -> StructKind ``` in the `impl` of `EnumVariant`. There was also a previously existing function `is_unit(self, db: &impl HirDatabase) -> bool` for `EnumVariant` which I removed because it seemed redundant after adding `kind`. Co-authored-by: adamrk <[email protected]>
| * use 'if let' instead of match on kind in lower.rsadamrk2020-02-171-6/+4
| |
| * replace uses of VariantData::is_unit with VariantData::kindadamrk2020-02-161-4/+7
| |
* | Fix coercion of &T to itselfFlorian Diebold2020-02-162-0/+24
| | | | | | | | | | The autoderef coercion logic did not handle matching placeholders. This led to some type mismatches.
* | Extend analysis-stats a bitFlorian Diebold2020-02-151-0/+3
|/ | | | | | | | | | | | This adds some tools helpful when debugging nondeterminism in analysis-stats: - a `--randomize` option that analyses everything in random order - a `-vv` option that prints even more detail Also add a debug log if Chalk fuel is exhausted (which would be a source of nondeterminism, but didn't happen in my tests). I found one source of nondeterminism (rust-lang/chalk#331), but there are still other cases remaining.
* Merge #3147bors[bot]2020-02-143-0/+42
|\ | | | | | | | | | | | | | | 3147: Check that impl self type matches up with expected self type in path mode r=matklad a=flodiebold Fixes #3144. Co-authored-by: Florian Diebold <[email protected]>
| * Check that impl self type matches up with expected self type in path modeFlorian Diebold2020-02-143-0/+42
| | | | | | | | Fixes #3144.
* | Make Self implement the trait inside trait default methodsFlorian Diebold2020-02-143-4/+77
|/
* Move hir_fmt code to display moduleFlorian Diebold2020-02-142-372/+376
|
* Rename Ty::Param => Ty::PlaceholderFlorian Diebold2020-02-143-11/+11
| | | | This aligns more with Chalk.
* Don't let unknown match arms fall back to !Florian Diebold2020-02-112-1/+22
|
* Add or- and parenthesized-patternsMatthew Jasper2020-02-092-3/+13
|
* Add two more testsFlorian Diebold2020-02-071-0/+51
|
* Fix some TODOsFlorian Diebold2020-02-073-11/+17
|
* Don't print implicit type args from impl TraitFlorian Diebold2020-02-072-14/+21
|
* Deal better with implicit type parameters and argument listsFlorian Diebold2020-02-074-26/+138
|
* FormattingFlorian Diebold2020-02-079-38/+82
|
* Clean up RPIT a bitFlorian Diebold2020-02-074-41/+13
|
* Fix compilation of other cratesFlorian Diebold2020-02-072-4/+10
|
* Use variables in predicates as wellFlorian Diebold2020-02-075-63/+52
|
* Comment fixes / todosFlorian Diebold2020-02-073-6/+8
|
* Fix APIT some moreFlorian Diebold2020-02-074-101/+115
|
* Fix APITFlorian Diebold2020-02-071-0/+2
|
* Change Ty::Param to contain param IDFlorian Diebold2020-02-0711-127/+136
|
* WIP use params for APITFlorian Diebold2020-02-073-1/+64
|
* Fix assoc type selectionFlorian Diebold2020-02-072-32/+43
|
* Fix another testFlorian Diebold2020-02-072-7/+3
|
* First stab at desugaring bounds for APITFlorian Diebold2020-02-072-6/+33
|