<p dir="auto">Rename locations aren't found correctly for <code class="notranslate">Parent</code> in the code below:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="let Parent = class {};
class Child extends Parent {}"><pre class="notranslate"><span class="pl-k">let</span> <span class="pl-smi">Parent</span> <span class="pl-c1">=</span> <span class="pl-k">class</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">;</span>
<span class="pl-k">class</span> <span class="pl-smi">Child</span> <span class="pl-k">extends</span> <span class="pl-smi">Parent</span> <span class="pl-kos">{</span><span class="pl-kos">}</span></pre></div>
<p dir="auto">Confirmed by testing in Sublime and also by the test below:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="/// &lt;reference path='fourslash.ts' /&gt;

////let [|Parent|] = class { };
////class Child extends class [|Parent|] { }

let ranges = test.ranges()
for (let range of ranges) {
    goTo.position(range.start);

    verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
}"><pre class="notranslate"><span class="pl-c">/// &lt;reference path='fourslash.ts' /&gt;</span>

<span class="pl-c">////let [|Parent|] = class { };</span>
<span class="pl-c">////class Child extends class [|Parent|] { }</span>

<span class="pl-k">let</span> <span class="pl-s1">ranges</span> <span class="pl-c1">=</span> <span class="pl-s1">test</span><span class="pl-kos">.</span><span class="pl-en">ranges</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-k">for</span> <span class="pl-kos">(</span><span class="pl-k">let</span> <span class="pl-s1">range</span> <span class="pl-k">of</span> <span class="pl-s1">ranges</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-s1">goTo</span><span class="pl-kos">.</span><span class="pl-en">position</span><span class="pl-kos">(</span><span class="pl-s1">range</span><span class="pl-kos">.</span><span class="pl-c1">start</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

    <span class="pl-s1">verify</span><span class="pl-kos">.</span><span class="pl-en">renameLocations</span><span class="pl-kos">(</span><span class="pl-c">/*findInStrings*/</span> <span class="pl-c1">false</span><span class="pl-kos">,</span> <span class="pl-c">/*findInComments*/</span> <span class="pl-c1">false</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Related: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="110596456" data-permission-text="Title is private" data-url="https://github.com/palantir/tslint/issues/721" data-hovercard-type="issue" data-hovercard-url="/palantir/tslint/issues/721/hovercard" href="https://github.com/palantir/tslint/issues/721">palantir/tslint#721</a></p>
<p dir="auto">In the following code:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="var base = class {};
class C extends base {}"><pre class="notranslate"><code class="notranslate">var base = class {};
class C extends base {}
</code></pre></div>
<p dir="auto">services does not recognize that the <code class="notranslate">base</code> identifier in the second line refers to the variable declared in the first. Rename, find occurrences, etc do not work on it.</p>
<p dir="auto">The same problem also occurs with JSX spread attributes in .tsx code:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="var props = {};
var div = &lt;div {...props}/&gt;;"><pre class="notranslate"><code class="notranslate">var props = {};
var div = &lt;div {...props}/&gt;;
</code></pre></div>