title: Error on Extension Methods when Inlining
body: <p>I want to extend some system types and later use them via inlining</p>
  
  <pre><code>type System.String with  
      member this.foo n = this + "!" + n 
  
  type System.Boolean with  
      member this.foo n = sprintf "%A!%A" this n 
  </code></pre>
  
  <p>Now I call these extension methods </p>
  
  <pre><code>let x = "foo".foo "bar"
  let y = true.foo "bar"
  </code></pre>
  
  <p>which gives me this </p>
  
  <pre><code>- val x : System.String = "foobar"
  - val y : string = "true!"bar""
  </code></pre>
  
  <p>All fine and dandy - but now I want to wrap the call to <code>.foo</code> into an inline function</p>
  
  <pre><code>let inline foo n v = (^T : (member foo : ^N  -&gt; ^S) v, n)
  let z = foo "bar" "baz" 
  </code></pre>
  
  <p>Only now I get a compiler error telling me that </p>
  
  <pre><code>&gt; The type 'string' does not support the operator 'foo':
  </code></pre>
  
  <p>well ... it does!</p>
  
  <p>Can somebody explain whats going on?</p>