<p dir="auto">Was working on trying to inherit from a trait with a <code class="notranslate">&lt;'self&gt;</code> lifetime parameter, like so:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="trait A&lt;'self&gt; { fn foo(&amp;self) -&gt; &amp;'self str; }  trait B : A { fn bar(&amp;self); }"><pre class="notranslate"><code class="notranslate">trait A&lt;'self&gt; { fn foo(&amp;self) -&gt; &amp;'self str; }  trait B : A { fn bar(&amp;self); }
</code></pre></div>
<p dir="auto">and was getting this compile error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="error: Illegal anonymous lifetime: anonymous lifetimes are not permitted here
trait A&lt;'self&gt; { fn foo(&amp;self) -&gt; &amp;'self str; }  trait B : A { fn bar(&amp;self); }
                                                                              ^~
aborting due to previous error"><pre class="notranslate"><code class="notranslate">error: Illegal anonymous lifetime: anonymous lifetimes are not permitted here
trait A&lt;'self&gt; { fn foo(&amp;self) -&gt; &amp;'self str; }  trait B : A { fn bar(&amp;self); }
                                                                              ^~
aborting due to previous error
</code></pre></div>
<p dir="auto">So I thought maybe I could just annotate the inherited trait with the lifetime:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="trait A&lt;'self&gt; { fn foo(&amp;self) -&gt; &amp;'self str; }  trait B&lt;'self&gt; : A&lt;'self&gt; { fn bar(&amp;self); }"><pre class="notranslate"><code class="notranslate">trait A&lt;'self&gt; { fn foo(&amp;self) -&gt; &amp;'self str; }  trait B&lt;'self&gt; : A&lt;'self&gt; { fn bar(&amp;self); }
</code></pre></div>
<p dir="auto">which produced this ice:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="task &lt;unnamed&gt; failed at 'region parameterization should have inferred that this type is RP', /home/rustbuild/src/rust-buildbot/slave/snap3-linux/build/src/librustc/middle/typeck/rscope.rs:238
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug
note: try running with RUST_LOG=rustc=1,::rt::backtrace to get further details and report the results to github.com/mozilla/rust/issues
task &lt;unnamed&gt; failed at 'explicit failure', /home/rustbuild/src/rust-buildbot/slave/snap3-linux/build/src/librustc/rustc.rs:371
make: *** [x86_64-unknown-linux-gnu/stage0/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd.so] Error 101"><pre class="notranslate"><code class="notranslate">task &lt;unnamed&gt; failed at 'region parameterization should have inferred that this type is RP', /home/rustbuild/src/rust-buildbot/slave/snap3-linux/build/src/librustc/middle/typeck/rscope.rs:238
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug
note: try running with RUST_LOG=rustc=1,::rt::backtrace to get further details and report the results to github.com/mozilla/rust/issues
task &lt;unnamed&gt; failed at 'explicit failure', /home/rustbuild/src/rust-buildbot/slave/snap3-linux/build/src/librustc/rustc.rs:371
make: *** [x86_64-unknown-linux-gnu/stage0/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd.so] Error 101
</code></pre></div>
<p dir="auto">AFAICT, it's putting <code class="notranslate">&lt;'self&gt;</code> on <code class="notranslate">A</code> when declaring <code class="notranslate">B</code> is what's causing the ICE.</p>
<p dir="auto">sample code:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="trait Tr&lt;'self&gt; {
    fn f(&amp;self) -&gt; &amp;'self int;
}

fn g&lt;T: Tr&lt;'self&gt;&gt;() {}

fn main() {}"><pre class="notranslate"><code class="notranslate">trait Tr&lt;'self&gt; {
    fn f(&amp;self) -&gt; &amp;'self int;
}

fn g&lt;T: Tr&lt;'self&gt;&gt;() {}

fn main() {}
</code></pre></div>
<p dir="auto">rustc ICE:</p>
<blockquote>
<p dir="auto">rust: task failed at 'region parameterization should have inferred that this type is RP', [...]/rust/src/librustc/middle/typeck/rscope.rs:230</p>
</blockquote>