Skip to content

Rollup of 4 pull requests - #65229

Merged
bors merged 21 commits into
rust-lang:masterfrom
Centril:rollup-wnr46vg
Oct 9, 2019
Merged

Rollup of 4 pull requests#65229
bors merged 21 commits into
rust-lang:masterfrom
Centril:rollup-wnr46vg

Conversation

@Centril

Copy link
Copy Markdown
Contributor

Successful merges:

Failed merges:

r? @ghost

csmoeand others added 21 commits October 6, 2019 14:07
- The attribute is behind a feature gate.
- Error if both #[naked] and #[track_caller] are applied to the same function.
- Error if #[track_caller] is applied to a non-function item.
- Error if ABI is not "rust"
- Error if #[track_caller] is applied to a trait function.
Error codes and descriptions are pending.
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
Prevents number collision with another approved PR.
Implement (HashMap) Entry::insert as per rust-lang#60142
Implementation of `Entry::insert` as per @SimonSapin's comment on rust-lang#60142. This requires a patch to hashbrown:
```diff
diff --git a/src/rustc_entry.rs b/src/rustc_entry.rs
index fefa5c3..7de8300 100644
--- a/src/rustc_entry.rs
+++ b/src/rustc_entry.rs
@@ -546,6 +546,32 @@ impl<'a, K, V> RustcVacantEntry<'a, K, V> {
let bucket = self.table.insert_no_grow(self.hash, (self.key, value));
unsafe { &mut bucket.as_mut().1 }
}
+
+ /// Sets the value of the entry with the RustcVacantEntry's key,
+ /// and returns a RustcOccupiedEntry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use hashbrown::HashMap;
+ /// use hashbrown::hash_map::RustcEntry;
+ ///
+ /// let mut map: HashMap<&str, u32> = HashMap::new();
+ ///
+ /// if let RustcEntry::Vacant(v) = map.rustc_entry("poneyland") {
+ /// let o = v.insert_and_return(37);
+ /// assert_eq!(o.get(), &37);
+ /// }
+ /// ```
+ #[inline]
+ pub fn insert_and_return(self, value: V) -> RustcOccupiedEntry<'a, K, V> {
+ let bucket = self.table.insert_no_grow(self.hash, (self.key, value));
+ RustcOccupiedEntry {
+ key: None,
+ elem: bucket,
+ table: self.table
+ }
+ }
}
impl<K, V> IterMut<'_, K, V> {
```
This is also only an implementation for HashMap. I tried implementing for BTreeMap, but I don't really understand BTreeMap's internals and require more guidance on implementing the equivalent `VacantEntry::insert_and_return` such that it returns an `OccupiedEntry`. Notably, following the original PR's modifications I end up needing a `Handle<NodeRef<marker::Mut<'_>, _, _, marker::LeafOrInternal>, _>` while I only have a `Handle<NodeRef<marker::Mut<'_>, _, _, marker::Internal>, _>` and don't know how to proceed.
(To be clear, I'm not asking for guidance right now; I'd be happy getting only the HashMap implementation — the subject of this PR — reviewed and ready, and leave the BTreeMap implementation for a latter PR.)
`#[track_caller]` feature gate (RFC 2091 1/N)
RFC text: https://github.com/rust-lang/rfcs/blob/master/text/2091-inline-semantic.md
Tracking issue: rust-lang#47809
I started with @ayosec's commit to add the feature gate with tests and rebased it onto current master. I fixed up some tidy lints and added a test.
Suggest to add `move` keyword for generator capture
Closesrust-lang#64382
r? @estebank
add more info in debug traces for gcu merging
to help in investigation of CGU partitioning problems e.g rust-lang#64913
@borsbors added the rollup A PR which is a rollup label Oct 9, 2019
@Centril

Copy link
Copy Markdown
ContributorAuthor

@bors r+ p=4 rollup=never

@bors

bors commented Oct 9, 2019

Copy link
Copy Markdown
Collaborator

📌 Commit e27f029 has been approved by Centril

@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Oct 9, 2019
@bors

bors commented Oct 9, 2019

Copy link
Copy Markdown
Collaborator

⌛ Testing commit e27f029 with merge 275cf4b...

bors added a commit that referenced this pull request Oct 9, 2019
Rollup of 4 pull requests
Successful merges:
- #64656 (Implement (HashMap) Entry::insert as per #60142)
- #65037 (`#[track_caller]` feature gate (RFC 2091 1/N))
- #65166 (Suggest to add `move` keyword for generator capture)
- #65175 (add more info in debug traces for gcu merging)
Failed merges:
r? @ghost
@bors

bors commented Oct 9, 2019

Copy link
Copy Markdown
Collaborator

☀️ Test successful - checks-azure
Approved by: Centril
Pushing 275cf4b to master...

@borsbors added the merged-by-bors This PR was explicitly merged by bors. label Oct 9, 2019
@bors
bors merged commit e27f029 into rust-lang:masterOct 9, 2019
@Centril
Centril deleted the rollup-wnr46vg branch October 9, 2019 09:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-borsThis PR was explicitly merged by bors.rollupA PR which is a rollupS-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@Centril@bors@csmoe@andjo403@ayosec@anp@passcod