diff options
| author | bors <bors@rust-lang.org> | 2018-06-26 01:42:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-06-26 01:42:14 +0000 |
| commit | fdd9cdc8792d8fa4a64956c7d3263fa5ce18e335 (patch) | |
| tree | 34deb6049374a320b66e7ded0ce3704334bfcd32 /src/test/run-pass | |
| parent | 2a1c4eec40527de45b9d9b81672c8b9220d554fc (diff) | |
| parent | cc60e01581d3bb290a2299a6c2474aa29bf6a15f (diff) | |
| download | rust-fdd9cdc8792d8fa4a64956c7d3263fa5ce18e335.tar.gz rust-fdd9cdc8792d8fa4a64956c7d3263fa5ce18e335.zip | |
Auto merge of #50966 - leodasvacas:self-in-where-clauses-is-not-object-safe, r=nikomatsakis
`Self` in where clauses may not be object safe Needs crater, virtually certain to cause regressions. In #50781 it was discovered that our object safety rules are not sound because we allow `Self` in where clauses without restrain. This PR is a direct fix to the rules so that we disallow methods with unsound where clauses. This currently uses hard error to measure impact, but we will want to downgrade it to a future compat error. Part of #50781. r? @nikomatsakis
Diffstat (limited to 'src/test/run-pass')
| -rw-r--r-- | src/test/run-pass/issue-23435.rs | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/test/run-pass/issue-23435.rs b/src/test/run-pass/issue-23435.rs deleted file mode 100644 index 9b727826e6d..00000000000 --- a/src/test/run-pass/issue-23435.rs +++ /dev/null @@ -1,37 +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. - -// Test that we do not ICE when a default method implementation has -// requirements (in this case, `Self : Baz`) that do not hold for some -// specific impl (in this case, `Foo : Bar`). This causes problems -// only when building a vtable, because that goes along and -// instantiates all the methods, even those that could not otherwise -// be called. - -// pretty-expanded FIXME #23616 - -struct Foo { - x: i32 -} - -trait Bar { - fn bar(&self) where Self : Baz { self.baz(); } -} - -trait Baz { - fn baz(&self); -} - -impl Bar for Foo { -} - -fn main() { - let x: &Bar = &Foo { x: 22 }; -} |
