aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty
Commit message (Collapse)AuthorAgeFilesLines
* don't poison mutex around chalkAleksey Kladov2019-06-011-2/+3
| | | | | | | | | We use panics for cancellation, so we could trigger panic while holding the solver. std::sync::Mutex will be poisoned as a result, which and all further attempts to use solver (from other threads) will panic as well. This commit switches to parking_lot::Mutex which just unlocks on panic.
* add tests for primitive typesAleksey Kladov2019-05-303-30/+19
|
* add built-in types to scopesAleksey Kladov2019-05-301-16/+0
|
* add ModuleDef::BuiltInTypeAleksey Kladov2019-05-303-6/+45
|
* add cacellation checks to expensive queriesAleksey Kladov2019-05-291-0/+1
|
* fix syntax errors in testsAleksey Kladov2019-05-281-112/+128
|
* add union to code_modelAleksey Kladov2019-05-232-10/+21
|
* Fix crash with int vars in canonicalizationFlorian Diebold2019-05-211-1/+6
|
* Use fuel branch for ChalkFlorian Diebold2019-05-211-1/+1
| | | | This makes sure we don't take too long in trait solving.
* re-enable chalkAleksey Kladov2019-05-211-17/+16
|
* publish gen_lsp_server 0.2Aleksey Kladov2019-05-211-16/+17
|
* profile type inferenceAleksey Kladov2019-05-211-1/+3
|
* profile implements queryAleksey Kladov2019-05-211-0/+2
|
* add _query to query functionsAleksey Kladov2019-05-211-3/+3
|
* remove minor code duplicationAleksey Kladov2019-05-201-18/+14
|
* Use normal iteration instead of walk_mutEdwin Cheng2019-05-201-8/+5
|
* Add infer for generic default typeEdwin Cheng2019-05-192-13/+75
|
* Merge #1271bors[bot]2019-05-131-1/+1
|\ | | | | | | | | | | | | | | 1271: make AstId untyped r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * make AstId untypedAleksey Kladov2019-05-131-1/+1
| |
* | Increase Chalk solver max_size back to 4Florian Diebold2019-05-131-1/+1
|/ | | | | | Reducing it to 2 was just a failed attempt to see whether that would help fix some slow cases; in fact, it can create new slow cases by replacing concrete types by variables.
* Use traits from prelude for method resolutionFlorian Diebold2019-05-122-1/+30
|
* Blacklist some traits from being considered in where clausesFlorian Diebold2019-05-122-7/+34
| | | | | | | For Send/Sync/Sized, we don't handle auto traits correctly yet and because they have a lot of impls, they can easily lead to slowdowns. In the case of Fn/FnMut/FnOnce, we don't parse the special Fn notation correctly yet and don't handle closures yet, so we are very unlikely to find an impl.
* Fix impl blocks with unresolved target trait being treated as inherent implsFlorian Diebold2019-05-121-5/+7
|
* Add support for inline boundsFlorian Diebold2019-05-111-0/+33
| | | | E.g. impl<T: Clone> Foo for T.
* Handle auto traits & negative implsFlorian Diebold2019-05-111-5/+19
| | | | | We don't pass field types to Chalk yet though, so the auto trait inference won't be correct.
* Reduce Chalk max_size parameter, add test for slow caseFlorian Diebold2019-05-113-3/+42
|
* Handle Chalk conversion for FnDefFlorian Diebold2019-05-112-2/+38
|
* Handle resolution errors in where clausesFlorian Diebold2019-05-112-15/+56
| | | | | This is slightly hacky, but maybe more elegant than alternative solutions: We just use a hardcoded Chalk trait ID which we special-case to have no impls.
* Handle where clauses in trait solvingFlorian Diebold2019-05-113-24/+138
|
* Deduplicate impls in impls_for_traitFlorian Diebold2019-05-071-2/+3
| | | | This was duplicating impls in dependencies a lot...
* Turn `implements` into a query againFlorian Diebold2019-05-073-7/+5
|
* fill struct fields diagnosticSergey Parilin2019-05-061-0/+1
|
* Differentiate Tuple / FnPtr type constructors by cardinalityFlorian Diebold2019-05-043-7/+15
| | | | | This is necessary because Chalk (reasonably) expects each 'struct' to know how many type parameters it takes.
* Handle recursive types in canonicalizationFlorian Diebold2019-05-042-4/+14
|
* Remove ToChalk implementation for ApplicationTyFlorian Diebold2019-05-041-29/+16
|
* Make canonicalization API a bit nicerFlorian Diebold2019-05-042-31/+56
|
* Update ChalkFlorian Diebold2019-05-042-5/+13
|
* Turn eprintln!s into debug!sFlorian Diebold2019-05-042-8/+12
|
* Handle Ty::Unknown in Chalk conversionFlorian Diebold2019-05-041-1/+5
| | | | Badly, but at least it doesn't crash.
* Canonicalize before doing method resolutionFlorian Diebold2019-05-045-132/+144
|
* Document the peculiarity of the solver query a bitFlorian Diebold2019-05-041-2/+4
| | | | | Also remove the only remaining mention of chalk outside of the ty::traits module.
* Move Chalk conversion code to its own moduleFlorian Diebold2019-05-042-275/+335
|
* Implement Deref<Target=[Ty]> for SubstsFlorian Diebold2019-05-041-1/+0
|
* Simplify solution_from_chalkFlorian Diebold2019-05-041-12/+11
|
* Chalk integrationFlorian Diebold2019-05-046-133/+533
| | | | | - add proper canonicalization logic - add conversions from/to Chalk IR
* Introduced resolve_macro_call on resolverLenard Pratt2019-04-231-0/+26
| | | | | | changed to manual expansion fix for nested macros
* Add HIR for where clauses & ignore impls with where clauses in trait resolutionFlorian Diebold2019-04-212-3/+23
| | | | | This prevents any `impl<T> Trait for T where ...` from being treated as a blanket impl while we don't handle where clauses yet.
* Add a simple test for str method completionFlorian Diebold2019-04-201-0/+22
|
* lang_item_lookup is now a salsa query.Marco Groppo2019-04-191-6/+5
|
* New krate() method in Resolver.Marco Groppo2019-04-192-49/+33
| | | | Renamed Impl to ImplBlock.