summary refs log tree commit diff
path: root/src/librustc/traits/structural_impls.rs
AgeCommit message (Collapse)AuthorLines
2017-09-11rustc: evaluate fixed-length array length expressions lazily.Eduard-Mihai Burtescu-0/+3
2017-08-21Merge remote-tracking branch 'origin/master' into genAlex Crichton-1/+1
2017-08-22Auto merge of #43690 - scalexm:issue-28229, r=nikomatsakisbors-1/+1
Generate builtin impls for `Clone` This fixes a long-standing ICE and limitation where some builtin types implement `Copy` but not `Clone` (whereas `Clone` is a super trait of `Copy`). However, this PR has a few side-effects: * `Clone` is now marked as a lang item. * `[T; N]` is now `Clone` if `T: Clone` (currently, only if `T: Copy` and for `N <= 32`). * `fn foo<'a>() where &'a mut (): Clone { }` won't compile anymore because of how bounds for builtin traits are handled (e.g. same thing currently if you replace `Clone` by `Copy` in this example). Of course this function is unusable anyway, an error would pop as soon as it is called. Hence, I'm wondering wether this PR would need an RFC... Also, cc-ing @nikomatsakis, @arielb1. Related issues: #28229, #24000.
2017-08-21Merge remote-tracking branch 'origin/master' into genAlex Crichton-3/+3
2017-08-18Handle structs, unions and enums unsized field/variant separatelyGuillaume Gomez-3/+3
2017-08-14Do not store `ty`scalexm-12/+4
2017-08-14Make `Clone` a lang item and generate builtin impls.scalexm-4/+12
Fixes #28229. Fixes #24000.
2017-07-28Generator literal supportJohn Kåre Alsaker-0/+43
2017-07-05use field init shorthand in src/librustcZack M. Davis-16/+16
The field init shorthand syntax was stabilized in 1.17.0 (aebd94f); we are now free to use it in the compiler.
2017-06-29Check explicitly that tuple initializer is Sized.Masaki Hara-0/+3
2017-06-24Detect missing `;` on methods with return type `()`Esteban Küber-27/+17
- Point out the origin of a type requirement when it is the return type of a method - Point out possibly missing semicolon when the return type is () and the implicit return makes sense as a statement - Suggest changing the return type of methods with default return type - Don't suggest changing the return type on fn main() - Don't suggest changing the return type on impl fn
2017-06-01strip param-env from infcxNiko Matsakis-0/+1
2017-04-11fix long lineNiko Matsakis-1/+2
2017-04-11add Subtype predicateNiko Matsakis-0/+1
2017-03-30add an `ObligationCauseCode` we'll use later (`ReturnNoExpression`)Niko Matsakis-0/+3
2017-02-25rustc_typeck: hook up collect and item/body check to on-demand.Eduard-Mihai Burtescu-27/+0
2016-11-28Remove BuiltinBound and BuiltinBounds.Mark-Simulacrum-5/+0
2016-11-15remove TypeOrigin and use ObligationCause insteadNiko Matsakis-0/+46
In general having all these different structs for "origins" is not great, since equating types can cause obligations and vice-versa. I think we should gradually collapse these things. We almost certainly also need to invest a big more energy into the `error_reporting` code to rationalize it: this PR does kind of the minimal effort in that direction.
2016-11-01introduce new origin for `Trait+'b`Niko Matsakis-0/+11
This helps us to preserve the existing errors.
2016-11-01compare-method lintNiko Matsakis-1/+3
2016-11-01cleanup error reporting and add `ui` testsNiko Matsakis-4/+10
2016-08-12typeck: leak auto trait obligations through impl Trait.Eduard Burtescu-0/+181
2016-05-11Add inferred obligation storage to all Vtable variants and SelectionContextMasood Malekghassemi-10/+40
2016-05-11rustc: Split local type contexts interners from the global one.Eduard Burtescu-0/+52
2016-05-11rustc: More interning for data used in Ty<'tcx>.Eduard Burtescu-2/+1
2016-05-11rustc: Generalize a minimum set of functions over 'tcx != 'gcx.Eduard Burtescu-8/+34
2016-03-27rustc: move cfg, infer, traits and ty from middle to top-level.Eduard Burtescu-0/+256