From b052dd6240b136c02837b1c27bc3b49b4663be02 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Thu, 14 Jul 2016 22:54:36 +0300 Subject: [PATCH] Add test for #28514 Fixes #28514 --- src/test/compile-fail/issue-28514.rs | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/test/compile-fail/issue-28514.rs diff --git a/src/test/compile-fail/issue-28514.rs b/src/test/compile-fail/issue-28514.rs new file mode 100644 index 00000000000..6ee375503c2 --- /dev/null +++ b/src/test/compile-fail/issue-28514.rs @@ -0,0 +1,45 @@ +// Copyright 2016 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub use inner::C; + +mod inner { + trait A { + fn a(&self) { } + } + + pub trait B { + fn b(&self) { } + } + + pub trait C: A + B { //~ ERROR private trait in public interface + //~^ WARN will become a hard error + fn c(&self) { } + } + + impl A for i32 {} + impl B for i32 {} + impl C for i32 {} + +} + +fn main() { + // A is private + // B is pub, not reexported + // C : A + B is pub, reexported + + // 0.a(); // can't call + // 0.b(); // can't call + 0.c(); // ok + + C::a(&0); // can call + C::b(&0); // can call + C::c(&0); // ok +}