diff options
| author | Jonas Platte <jplatte+git@posteo.de> | 2017-10-16 21:07:26 +0200 |
|---|---|---|
| committer | Jonas Platte <jplatte+git@posteo.de> | 2017-12-21 13:38:10 +0100 |
| commit | 78493ed21aaeb20a8d5f7bd08f26c0c9fd496ed4 (patch) | |
| tree | 628b8d1cc99f88db6f47d5f07e1ff3d10b8adb3c /src/librustc/hir/map | |
| parent | ab7abfcf3457ebc67ac7fef5c3028a6ae4402156 (diff) | |
| download | rust-78493ed21aaeb20a8d5f7bd08f26c0c9fd496ed4.tar.gz rust-78493ed21aaeb20a8d5f7bd08f26c0c9fd496ed4.zip | |
Add GenericParam, refactor Generics in ast, hir, rustdoc
The Generics now contain one Vec of an enum for the generic parameters, rather than two separate Vec's for lifetime and type parameters. Additionally, places that previously used Vec<LifetimeDef> now use Vec<GenericParam> instead.
Diffstat (limited to 'src/librustc/hir/map')
| -rw-r--r-- | src/librustc/hir/map/collector.rs | 2 | ||||
| -rw-r--r-- | src/librustc/hir/map/def_collector.rs | 29 |
2 files changed, 18 insertions, 13 deletions
diff --git a/src/librustc/hir/map/collector.rs b/src/librustc/hir/map/collector.rs index 02a1e33eeb9..e3ca6f1591e 100644 --- a/src/librustc/hir/map/collector.rs +++ b/src/librustc/hir/map/collector.rs @@ -326,7 +326,7 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> { } fn visit_generics(&mut self, generics: &'hir Generics) { - for ty_param in generics.ty_params.iter() { + for ty_param in generics.ty_params() { self.insert(ty_param.id, NodeTyParam(ty_param)); } diff --git a/src/librustc/hir/map/def_collector.rs b/src/librustc/hir/map/def_collector.rs index 2978f1eb409..002849c0399 100644 --- a/src/librustc/hir/map/def_collector.rs +++ b/src/librustc/hir/map/def_collector.rs @@ -183,14 +183,25 @@ impl<'a> visit::Visitor<'a> for DefCollector<'a> { }); } - fn visit_generics(&mut self, generics: &'a Generics) { - for ty_param in generics.ty_params.iter() { - self.create_def(ty_param.id, - DefPathData::TypeParam(ty_param.ident.name.as_str()), - REGULAR_SPACE); + fn visit_generic_param(&mut self, param: &'a GenericParam) { + match *param { + GenericParam::Lifetime(ref lifetime_def) => { + self.create_def( + lifetime_def.lifetime.id, + DefPathData::LifetimeDef(lifetime_def.lifetime.ident.name.as_str()), + REGULAR_SPACE + ); + } + GenericParam::Type(ref ty_param) => { + self.create_def( + ty_param.id, + DefPathData::TypeParam(ty_param.ident.name.as_str()), + REGULAR_SPACE + ); + } } - visit::walk_generics(self, generics); + visit::walk_generic_param(self, param); } fn visit_trait_item(&mut self, ti: &'a TraitItem) { @@ -268,12 +279,6 @@ impl<'a> visit::Visitor<'a> for DefCollector<'a> { visit::walk_ty(self, ty); } - fn visit_lifetime_def(&mut self, def: &'a LifetimeDef) { - self.create_def(def.lifetime.id, - DefPathData::LifetimeDef(def.lifetime.ident.name.as_str()), - REGULAR_SPACE); - } - fn visit_stmt(&mut self, stmt: &'a Stmt) { match stmt.node { StmtKind::Mac(..) => self.visit_macro_invoc(stmt.id, false), |
