about summary refs log tree commit diff
path: root/src/librustc/traits/specialize/specialization_graph.rs
AgeCommit message (Collapse)AuthorLines
2019-04-05Introduce an arena type which may be used to allocate a list of types with ↵John Kåre Alsaker-7/+6
destructors
2019-02-10rustc: doc commentsAlexander Regueiro-2/+2
2019-02-05move librustc to 2018Mark Mansi-8/+8
2019-01-04implement a hack to make traitobject 0.1.0 compileAriel Ben-Yehuda-5/+39
2019-01-04Revert "add coherence future-compat warnings for marker-only trait objects"Ariel Ben-Yehuda-41/+3
This reverts commit 760639635facb6c9a0926ac9278bcba71880b0b3.
2019-01-02try to detect affected code and direct people to #56105Niko Matsakis-0/+1
2018-12-25Remove licensesMark Rousskov-10/+0
2018-12-18Auto merge of #56481 - arielb1:dynamic-order, r=nikomatsakisbors-3/+41
add coherence future-compat warnings for marker-only trait objects The future-compat warnings break code that assumes that `dyn Send + Sync != dyn Sync + Send`, and are the first step in making them equal. cc #33140. Note: this lint should be made to default-warn before we merge. It is deny only for the crater run. r? @nikomatsakis / @scalexm . cc @Centril & @alexreg.
2018-12-14add coherence future-compat warnings for marker-only trait objectsAriel Ben-Yehuda-3/+41
The future-compat warnings break code that assumes that `dyn Send + Sync != dyn Sync + Send`, and are the first step in making them equal. cc #33140. It should be possible to revert this commit when we're done with the warnings.
2018-12-12specialize: remove Boxes used by Children::insertljedrz-8/+33
2018-12-07Various minor/cosmetic improvements to codeAlexander Regueiro-13/+14
2018-11-15Auto merge of #54906 - qnighy:fix-issue-50452, r=nikomatsakisbors-8/+19
Reattach all grandchildren when constructing specialization graph. Specialization graphs are constructed by incrementally adding impls in the order of declaration. If the impl being added has its specializations in the graph already, they should be reattached under the impl. However, the current implementation only reattaches the one found first. Therefore, in the following specialization graph, ``` Tr1 | I3 / \ I1 I2 ``` If `I1`, `I2`, and `I3` are declared in this order, the compiler mistakenly constructs the following graph: ``` Tr1 / \ I3 I2 | I1 ``` This patch fixes the reattach procedure to include all specializing grandchildren-to-be. Fixes #50452.
2018-11-12Avoid the Box in `TyCtxt::associated_items`.Niko Matsakis-1/+1
This reduces instruction counts on packed_simd by 2%.
2018-10-08Reattach all grandchildren when constructing specialization graph.Masaki Hara-8/+19
This commit fixes the issue #50452.
2018-09-29don't elide lifetimes in paths in librustc/Zack M. Davis-2/+2
This seemed like a good way to kick the tires on the elided-lifetimes-in-paths lint (#52069)—seems to work! This was also pretty tedious—it sure would be nice if `cargo fix` worked on this codebase (#53896)!
2018-09-18A few cleanups and minor improvements to rustc/traitsljedrz-4/+5
2018-08-18Use the new Entry::or_default method where possible.Eduard-Mihai Burtescu-16/+8
2018-07-28Auto merge of #52546 - nikomatsakis:issue-52050, r=pnkfelixbors-21/+78
do not overwrite child def-id in place but rather remove/insert When inserting a node N into the tree of impls, we sometimes find than an existing node C should be replaced with N. We used to overwrite C in place with the new def-id N -- but since the lists of def-ids are separated by simplified type, that could lead to N being inserted in the wrong place. This meant we might miss conflicts. We are now not trying to be so smart -- we remove C and then add N later. Fixes #52050 r? @aturon -- do you still remember this code at all? :)
2018-07-25Add type system canaries for potential future bugsOliver Schneider-1/+5
2018-07-23Implement associated existential typesOliver Schneider-3/+9
2018-07-21do not overwrite child def-id in place but rather remove/insertNiko Matsakis-21/+78
When inserting a node N into the tree of impls, we sometimes find than an existing node C should be replaced with N. We used to overwrite C in place with the new def-id N -- but since the lists of def-ids are separated by simplified type, that could lead to N being inserted in the wrong place. This meant we might miss conflicts. We are now not trying to be so smart -- we remove C and then add N later.
2018-06-28Use `Ident`s for associated item definitions in HIRVadim Petrochenkov-3/+3
Remove emulation of hygiene with gensyms
2018-06-28Use `Ident`s for associated type bindings in HIRVadim Petrochenkov-1/+1
2018-03-21work around fallout from these changes in rustcNiko Matsakis-6/+12
2018-03-14Cache the specialization_graph queryWesley Wiser-0/+2
Fixes #48987
2018-03-08Add InterpretInterner to StableHashingContext for AllocId serializationOliver Schneider-2/+2
2018-03-02Run Rustfix on librustcManish Goregaokar-2/+2
2018-03-02Replace Rc with Lrc for shared dataJohn Kåre Alsaker-2/+2
2018-01-30change `overlapping_impls` to take a tcx and create the infcxNiko Matsakis-33/+29
2018-01-30make `overlapping_impls` call closures instead of returningNiko Matsakis-25/+26
2017-12-05convert the new conflicts to a soft errorAriel Ben-Yehuda-23/+45
2017-10-06Improve resolution of associated types in macros 2.0Vadim Petrochenkov-3/+6
2017-09-18incr.comp.: Remove tcx from StableHashingContext.Michael Woerister-2/+2
2017-09-18incr.comp.: Use StableHash impls instead of functions for hashing most maps.Michael Woerister-17/+4
2017-09-18incr.comp.: Compute hashes of all query results.Michael Woerister-0/+34
2017-09-05Add hints when intercrate ambiguity causes overlap.Masaki Hara-3/+4
2017-08-29rustc: Remove `specailization_cache` in favor of a queryAlex Crichton-3/+3
This commit removes the `specialization_cache` field of `TyCtxt` by moving it to a dedicated query, which it turned out was already quite easily structured to do so!
2017-08-12Fix some typosBastien Orivel-2/+2
2017-08-11Fix some typosBastien Orivel-1/+1
2017-06-10rustc: make the comon case of tcx.infer_ctxt(()) nicer.Eduard-Mihai Burtescu-1/+1
2017-06-01strip param-env from infcxNiko Matsakis-2/+2
2017-06-01move projection mode into parameter environmentNiko Matsakis-1/+1
2017-05-15Remove interior mutability from TraitDef by turning fields into queries.Michael Woerister-9/+16
2017-04-14Further update with response to feedbackSean Griffin-3/+2
2017-04-14Implement RFC 1268Sean Griffin-0/+5
This patch allows overlap to occur between any two impls of a trait for traits which have no associated items. Several compile-fail tests around coherence had to be changed to add at least one item to the trait they test against. Ref #29864
2017-02-25rustc_typeck: rework coherence to be almost completely on-demand.Eduard-Mihai Burtescu-1/+1
2017-01-06rustc: keep track of tables everywhere as if they were per-body.Eduard-Mihai Burtescu-1/+1
2016-11-29rustc: remove type information from TraitDef.Eduard-Mihai Burtescu-8/+6
2016-11-10rustc: unify and simplify managing associated items.Eduard Burtescu-128/+14
2016-11-08Replace FnvHasher use with FxHasher.Nicholas Nethercote-3/+3
This speeds up compilation by 3--6% across most of rustc-benchmarks.