From 1453b3a67dfe73329e07c17cd07b55bd71d7350b Mon Sep 17 00:00:00 2001 From: "leonardo.yvens" Date: Tue, 22 May 2018 12:09:35 -0300 Subject: `Self` in where clauses may not be object safe This is virtually certain to cause regressions, needs crater. 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. Fixes #50781. r? @nikomatsakis --- src/test/run-pass/issue-23435.rs | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 src/test/run-pass/issue-23435.rs (limited to 'src/test/run-pass') 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 or the MIT license -// , 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 }; -} -- cgit 1.4.1-3-g733a5