title: PhpStorm: Argument type is not assignable to parameter type
body: <p>I have come across what appears to be a bug in how PhpStorm interprets <code>@typedef</code> in JSDoc3 when used with <code>@namespace</code>. I receive the following warning..</p>
  
  <blockquote>
    <p>Argument type <strong>item</strong> is not assignable to parameter type <strong>item</strong></p>
  </blockquote>
  
  <p>..when <code>b(item);</code> is called below:</p>
  
  <pre><code>(function() {
    'use strict';
  
    /**
     * @namespace myNamespace
     */
  
    /**
     * @typedef {Object} item
     * @property {string} key
     * @property {string} value
     */
  
    /**
     * @function a
     * @param {item} item
     * @returns {item}
     */
    function a(item) {
      item.key = 'key';
      item.value = 'value';
      return item;
    }
  
    /**
     * @function b
     * @memberOf myNamespace
     * @param {item} item
     * @returns {item}
     */
    function b(item) {
      item.key = 'key';
      item.value = 'value';
      return item;
    }
  
    /** @type item */
    var item = {
      key: 'hello',
      value: 'world'
    };
  
    a(item);
    b(item);
  
  })();
  </code></pre>
  
  <p>I only receive this warning on function b because of the <code>@memberOf</code> definition and when I remove it the warning disappears. Any ideas what would cause this?</p>