fix: recursive source map resolution parsing ignored locations (#1578)

* fix: recursive source map resolution parsing ignored locations

Fixes https://github.com/microsoft/vscode/issues/169733

* fix long-standing test flake
This commit is contained in:
Connor Peet 2023-02-27 17:44:42 -08:00 коммит произвёл GitHub
Родитель 46c6e8751c
Коммит b208586d8e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 29 добавлений и 4 удалений

Просмотреть файл

@ -5,6 +5,7 @@ This changelog records changes to stable releases since 1.50.2. "TBA" changes he
## Nightly (only)
- fix: repl stacktrace with renames showing too much info ([#1259](https://github.com/microsoft/vscode-js-debug/issues/1259#issuecomment-1409443564))
- fix: recursive source map resolution parsing ignored locations ([vscode#169733](https://github.com/microsoft/vscode/issues/169733))
## v1.76 (February 2023)

Просмотреть файл

@ -3,7 +3,7 @@
*--------------------------------------------------------*/
import { expect } from 'chai';
import { delay } from '../../common/promiseUtil';
import { delay, getDeferred } from '../../common/promiseUtil';
import { ReservationQueue } from './reservationQueue';
describe('ReservationQueue', () => {
@ -28,9 +28,22 @@ describe('ReservationQueue', () => {
});
it('enqueues async with order', async () => {
queue.enqueue(delay(6).then(() => 1));
queue.enqueue(delay(2).then(() => 2));
queue.enqueue(delay(4).then(() => 3));
const gate1 = getDeferred<void>();
const gate2 = getDeferred<void>();
queue.enqueue(gate2.promise.then(() => 1));
queue.enqueue(
delay(1).then(() => {
gate1.resolve();
return 2;
}),
);
queue.enqueue(
gate1.promise.then(() => {
gate2.resolve();
return 3;
}),
);
await delay(10);
expect(sunk).to.deep.equal([[1, 2, 3]]);
});

Просмотреть файл

@ -1124,6 +1124,17 @@ export class SourceContainer {
sourceMapUrl = rawSmUri;
}
}
if (absolutePath && sourceMapUrl) {
const smMetadata: ISourceMapMetadata = {
sourceMapUrl,
compiledPath: absolutePath,
};
if (!this.sourcePathResolver.shouldResolveSourceMap(smMetadata)) {
sourceMapUrl = undefined;
}
}
}
const source = new SourceFromMap(