title: IntelliSens doesn't detect type property while updating immuable value
body: <p>While defining an inventory system for an RPG game, I came across an odd issue. So, what I'm trying to do is to add items a player would get from a shop. While adding, I'm make sure not to go over the weight limit and will increase the quantity of an item if it were already in my inventory bag, otherwise I'll plainly add the item. </p>
  
  <p>So far so good, this looks pretty sane. My issue is when I'm updating my abstract class, IntelliSens tries to tell me that I don't have that property define for the type that I'm using. Actually, it can't find any of the property of the abstract class. Could be a bad mistake, but I've been scratching my head over this for quite some time and I would like some support !</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>here's the compiling error:The type 'InventoryItem' does not contain a field 'Quantity'..\InventoryItems.fs 188 </p>
  
  <pre><code>    [&lt;AbstractClass&gt;]
      type InventoryItem() =
  
      abstract member ItemName : string 
  
      abstract member ItemDescription : string 
  
      abstract member ItemWeight : float&lt;kg&gt; 
  
      abstract member ItemPrice : float&lt;usd&gt; 
  
      abstract member Quantity : int with get, set
  
  
      let makeBagItemsDistinct (bag: InventoryItem array) = 
      bag |&gt; Seq.distinct |&gt; Seq.toArray
  
      type Inventory = {
          Bag : InventoryItem array
          Weight: float&lt;kg&gt;
      }
  
      with 
          member x.addItem (ii: InventoryItem): Inventory = 
              if x.Weight &gt;= MaxWeight &lt;&gt; true then x 
              elif (x.Weight + ii.ItemWeight) &gt;= MaxWeight then x
              else 
                  let oItemIndex = x.Bag |&gt; Array.tryFindIndex(fun x -&gt; x = ii)
                  match oItemIndex with 
                  | Some index -&gt; 
                      // There already an item of this type in the bag
                      let item = x.Bag |&gt; Array.find(fun x -&gt; x = ii)
                      let newBag = 
                          x.Bag
                          |&gt; Array.filter((&lt;&gt;) item)
                          |&gt; Array.append [| { item with Quantity = item.Quantity +ii.Quantity |]
                          |&gt; makeBagItemsDistinct
  
                      let inventory = { x with Bag = newBag }
                      { inventory with Weight = inventory.Weight + item.ItemWeight }
                  | None -&gt; 
                      let newBag = x.Bag |&gt; Array.append [|ii|] |&gt; makeBagItemsDistinct
                      let inventory = { x with Bag = newBag }
                      { inventory with Weight = inventory.Weight + ii.ItemWeight }
  </code></pre>