aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2021-03-27 00:19:13 -0400
committerDavid Tolnay <dtolnay@gmail.com>2021-03-27 01:23:04 -0400
commitfedc63bfb734b533f50849fb13c821cbc9fc35bb (patch)
tree93c9efdc995d932a2f3a7e44628aaab9febac1d5
parentdde630235b22e47936d34b88fa2c9d1a9a64407a (diff)
downloadcxx-fedc63bfb734b533f50849fb13c821cbc9fc35bb.tar.gz
Simplify type resolution of named impl keys
-rw-r--r--gen/src/write.rs9
-rw-r--r--syntax/resolve.rs7
2 files changed, 10 insertions, 6 deletions
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 406018af..9f9c0391 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -1374,8 +1374,7 @@ fn write_generic_instantiations(out: &mut OutFile) {
}
fn write_rust_box_extern(out: &mut OutFile, key: NamedImplKey) {
- let ident = key.rust;
- let resolve = out.types.resolve(ident);
+ let resolve = out.types.resolve(&key);
let inner = resolve.name.to_fully_qualified();
let instance = resolve.name.to_symbol();
@@ -1441,8 +1440,7 @@ fn write_rust_vec_extern(out: &mut OutFile, key: NamedImplKey) {
}
fn write_rust_box_impl(out: &mut OutFile, key: NamedImplKey) {
- let ident = key.rust;
- let resolve = out.types.resolve(ident);
+ let resolve = out.types.resolve(&key);
let inner = resolve.name.to_fully_qualified();
let instance = resolve.name.to_symbol();
@@ -1741,8 +1739,7 @@ fn write_shared_ptr(out: &mut OutFile, key: NamedImplKey) {
}
fn write_weak_ptr(out: &mut OutFile, key: NamedImplKey) {
- let ident = key.rust;
- let resolve = out.types.resolve(ident);
+ let resolve = out.types.resolve(&key);
let inner = resolve.name.to_fully_qualified();
let instance = resolve.name.to_symbol();
diff --git a/syntax/resolve.rs b/syntax/resolve.rs
index 08fcf165..821f5427 100644
--- a/syntax/resolve.rs
+++ b/syntax/resolve.rs
@@ -1,3 +1,4 @@
+use crate::syntax::instantiate::NamedImplKey;
use crate::syntax::{Lifetimes, NamedType, Pair, Types};
use proc_macro2::Ident;
@@ -31,3 +32,9 @@ impl UnresolvedName for NamedType {
&self.rust
}
}
+
+impl<'a> UnresolvedName for NamedImplKey<'a> {
+ fn ident(&self) -> &Ident {
+ self.rust
+ }
+}