summaryrefslogtreecommitdiffstats
path: root/src/test/ui/issues/issue-48276.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/issues/issue-48276.rs')
-rw-r--r--src/test/ui/issues/issue-48276.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-48276.rs b/src/test/ui/issues/issue-48276.rs
new file mode 100644
index 000000000..f55c056fa
--- /dev/null
+++ b/src/test/ui/issues/issue-48276.rs
@@ -0,0 +1,33 @@
+// Regression test for issue #48276 - ICE when self type does not match what is
+// required by a trait and regions are involved.
+
+trait MyFrom<A> {
+ fn from(a: A) -> Self;
+}
+
+struct A;
+
+impl<'a, 'b> MyFrom<A> for &'a str {
+ fn from(self: &'a Self) -> &'b str {
+ //~^ ERROR: method `from` has a `&self` declaration in the impl, but not in the trait
+ "asdf"
+ }
+}
+
+struct B;
+
+impl From<A> for B {
+ fn from(&self) -> B {
+ //~^ ERROR: method `from` has a `&self` declaration in the impl, but not in the trait
+ B
+ }
+}
+
+impl From<A> for &'static str {
+ fn from(&self) -> &'static str {
+ //~^ ERROR: method `from` has a `&self` declaration in the impl, but not in the trait
+ ""
+ }
+}
+
+fn main(){}