<p dir="auto">Two FIXMEs in simpleext: "/* FIXME: handle embedded types and blocks, at least */" in <code class="notranslate">p_t_s_rec</code> and "FIXME: check duplicates (or just simplify the macro arg situation)" in <code class="notranslate">add_new_extension</code>. I don't pretend to have any understanding of this code, so that's all I'll say.</p>
<p dir="auto">The first one at least seems to have been added by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/marijnh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/marijnh">@marijnh</a> , so assigning to him.</p>
<p dir="auto">Given these two files:</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// foo.rs
#[link(name=&quot;foo&quot;,vers=&quot;0.0&quot;)];
#[crate_type = &quot;lib&quot;];
use std::hashmap::HashMap;

pub type map = @mut HashMap&lt;uint, uint&gt;;

// end of foo.rs"><pre class="notranslate"><span class="pl-c">// foo.rs</span>
<span class="pl-c1">#<span class="pl-kos">[</span>link<span class="pl-kos">(</span>name=<span class="pl-s">"foo"</span><span class="pl-kos">,</span>vers=<span class="pl-s">"0.0"</span><span class="pl-kos">)</span><span class="pl-kos">]</span></span><span class="pl-kos">;</span>
<span class="pl-c1">#<span class="pl-kos">[</span>crate_type = <span class="pl-s">"lib"</span><span class="pl-kos">]</span></span><span class="pl-kos">;</span>
<span class="pl-k">use</span> std<span class="pl-kos">::</span>hashmap<span class="pl-kos">::</span><span class="pl-v">HashMap</span><span class="pl-kos">;</span>

<span class="pl-k">pub</span> <span class="pl-k">type</span> <span class="pl-smi">map</span> = @<span class="pl-k">mut</span> <span class="pl-smi">HashMap</span><span class="pl-kos">&lt;</span><span class="pl-smi">uint</span><span class="pl-kos">,</span> <span class="pl-smi">uint</span><span class="pl-kos">&gt;</span><span class="pl-kos">;</span>

<span class="pl-c">// end of foo.rs</span></pre></div>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// bar.rs
extern mod foo;

fn foo(a: foo::map) {
    if false {
        fail!();
    } else {
        let _b = a.get(&amp;2); // error may for this line; doesn't happen if &quot;let _b&quot; is omitted
    }
}

fn main() {}

// end of bar.rs"><pre class="notranslate"><span class="pl-c">// bar.rs</span>
<span class="pl-k">extern</span> <span class="pl-k">mod</span> foo<span class="pl-kos">;</span>

<span class="pl-k">fn</span> <span class="pl-en">foo</span><span class="pl-kos">(</span><span class="pl-s1">a</span><span class="pl-kos">:</span> foo<span class="pl-kos">::</span><span class="pl-smi">map</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">if</span> <span class="pl-c1">false</span> <span class="pl-kos">{</span>
        <span class="pl-en">fail</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span> <span class="pl-k">else</span> <span class="pl-kos">{</span>
        <span class="pl-k">let</span> _b = a<span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-c1">2</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// error may for this line; doesn't happen if "let _b" is omitted</span>
    <span class="pl-kos">}</span>
<span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>

<span class="pl-c">// end of bar.rs</span></pre></div>
<p dir="auto">Yield this result:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ rustc foo.rs &amp;&amp; rustc -L . bar.rs
warning: no debug symbols in executable (-arch x86_64)
error: internal compiler error: no enclosing scope with id 18"><pre class="notranslate"><code class="notranslate">$ rustc foo.rs &amp;&amp; rustc -L . bar.rs
warning: no debug symbols in executable (-arch x86_64)
error: internal compiler error: no enclosing scope with id 18
</code></pre></div>