]> git.lizzy.rs Git - rust.git/commitdiff
Fix a bug with nested impls
authorNick Cameron <ncameron@mozilla.com>
Mon, 23 Nov 2015 02:49:21 +0000 (15:49 +1300)
committerNick Cameron <ncameron@mozilla.com>
Mon, 23 Nov 2015 20:37:52 +0000 (09:37 +1300)
src/items.rs
tests/source/impls.rs
tests/target/impls.rs

index c75fe9a942f99f17abf0017794539ee8411c41a5..6ca82721689972d4ad06deea95ab9c65b52de59f 100644 (file)
@@ -506,10 +506,6 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) -
         result.push('{');
 
         if !items.is_empty() {
-            result.push('\n');
-            let indent_str = context.block_indent.to_string(context.config);
-            result.push_str(&indent_str);
-
             let mut visitor = FmtVisitor::from_codemap(context.parse_session, context.config, None);
             visitor.block_indent = context.block_indent.block_indent(context.config);
 
@@ -521,8 +517,11 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) -
                 visitor.visit_impl_item(&item);
             }
 
+            result.push('\n');
             result.push_str(trim_newlines(&visitor.buffer.to_string()));
             result.push('\n');
+
+            let indent_str = context.block_indent.to_string(context.config);
             result.push_str(&indent_str);
         }
         result.push('}');
index 8e7b561ae4a6c8f2a7ee66de31d99a77b71326ef..499b07afd27b6e939a0e280e861d34023077dde4 100644 (file)
@@ -21,3 +21,23 @@ impl<'a, 'b, X, Y: Foo<Bar>> Foo<'a, X> for Bar<'b, Y> where X: Fooooooooooooooo
 {
     fn foo() { "hi" }    
 }
+
+impl Foo {
+    fn foo() {}
+}
+
+mod a {
+    impl Foo {
+        // Hello!
+        fn foo() {}
+    }
+}
+
+
+mod b {
+    mod a {
+        impl Foo {
+            fn foo() {}
+        }
+    }
+}
index 7530bf16ede06402f6686d32c9a8a26ebeaf68db..d491dbfcea8cc44724f067545fe60e3c74174c71 100644 (file)
@@ -36,3 +36,23 @@ fn foo() {
         "hi"
     }
 }
+
+impl Foo {
+    fn foo() {}
+}
+
+mod a {
+    impl Foo {
+        // Hello!
+        fn foo() {}
+    }
+}
+
+
+mod b {
+    mod a {
+        impl Foo {
+            fn foo() {}
+        }
+    }
+}