about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-10-26 09:16:05 -0700
committerAlex Crichton <alex@alexcrichton.com>2015-10-26 09:16:05 -0700
commitcb0ce69026e895b41e7512d4665be05e212e8a7f (patch)
tree7902a76dd18505d326b4fb8bdd9f1e2242266f41
parent0cfdb33720c2c1585595124ea6529f1ae059decd (diff)
downloadrust-cb0ce69026e895b41e7512d4665be05e212e8a7f.tar.gz
rust-cb0ce69026e895b41e7512d4665be05e212e8a7f.zip
Revert "Remove unnecessary trait accessibility check."
This reverts commit f4f95eb3a9f2c3c38679db84aabbb7cdb46d2641.
-rw-r--r--src/librustc_privacy/lib.rs8
-rw-r--r--src/test/run-pass/issue-16264.rs27
2 files changed, 6 insertions, 29 deletions
diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs
index 608558ac2bd..ea20d2b4238 100644
--- a/src/librustc_privacy/lib.rs
+++ b/src/librustc_privacy/lib.rs
@@ -852,8 +852,12 @@ impl<'a, 'tcx> PrivacyVisitor<'a, 'tcx> {
             ty::ImplContainer(_) => {
                 self.check_static_method(span, method_def_id, name)
             }
-            // Trait methods are always accessible if the trait is in scope.
-            ty::TraitContainer(_) => {}
+            // Trait methods are always all public. The only controlling factor
+            // is whether the trait itself is accessible or not.
+            ty::TraitContainer(trait_def_id) => {
+                self.report_error(self.ensure_public(span, trait_def_id,
+                                                     None, "source trait"));
+            }
         }
     }
 }
diff --git a/src/test/run-pass/issue-16264.rs b/src/test/run-pass/issue-16264.rs
deleted file mode 100644
index 67701de6386..00000000000
--- a/src/test/run-pass/issue-16264.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use outer::Foo;
-
-mod outer {
-    pub use self::inner::Foo;
-
-    mod inner {
-        pub trait Foo {
-            fn bar(&self) {}
-        }
-        impl Foo for i32 {}
-    }
-}
-
-fn main() {
-    let x: i32 = 0;
-    x.bar();
-}