]> git.lizzy.rs Git - rust.git/commitdiff
Adding type paramter ribs for generic associated types
authorSunjay Varma <varma.sunjay@gmail.com>
Tue, 21 Nov 2017 06:46:55 +0000 (01:46 -0500)
committerSunjay Varma <varma.sunjay@gmail.com>
Fri, 1 Dec 2017 06:26:29 +0000 (01:26 -0500)
src/librustc_resolve/lib.rs

index 44db030b2b242bab474e707f3b2e380154b0be33..42eac5e49491bc64fcfbc79eba3b1be80ef53464 100644 (file)
@@ -1910,7 +1910,9 @@ fn resolve_item(&mut self, item: &Item) {
                                     });
                                 }
                                 TraitItemKind::Type(..) => {
-                                    this.with_type_parameter_rib(NoTypeParameters, |this| {
+                                    let type_parameters = HasTypeParameters(&trait_item.generics,
+                                                                            ItemRibKind);
+                                    this.with_type_parameter_rib(type_parameters, |this| {
                                         visit::walk_trait_item(this, trait_item)
                                     });
                                 }
@@ -2160,7 +2162,13 @@ fn resolve_implementation(&mut self,
                                                             impl_item.span,
                                             |n, s| ResolutionError::TypeNotMemberOfTrait(n, s));
 
-                                        this.visit_ty(ty);
+                                        // We also need a new scope for the associated type
+                                        // specific type parameters.
+                                        let type_parameters =
+                                            HasTypeParameters(&impl_item.generics, ItemRibKind);
+                                        this.with_type_parameter_rib(type_parameters, |this| {
+                                            this.visit_ty(ty);
+                                        });
                                     }
                                     ImplItemKind::Macro(_) =>
                                         panic!("unexpanded macro in resolve!"),