From 2a77746ca2892efd6497c93bf63bf8133bf2c199 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Tue, 1 Nov 2022 13:13:32 +0100 Subject: [PATCH 1/8] Implements diffing fixture tests. Fixes #165041 --- src/vs/editor/test/node/diffing/README.md | 7 + .../editor/test/node/diffing/diffing.test.ts | 93 ++++ .../diffing/fixtures/bracket-aligning/1.tsx | 131 +++++ .../diffing/fixtures/bracket-aligning/2.tsx | 134 +++++ .../experimental.actual.diff.json | 110 ++++ .../bracket-aligning/smart.actual.diff.json | 16 + .../diffing/fixtures/fuzzy-matching/1.txt | 8 + .../diffing/fixtures/fuzzy-matching/2.txt | 9 + .../experimental.actual.diff.json | 26 + .../fuzzy-matching/smart.actual.diff.json | 16 + .../node/diffing/fixtures/indentation/1.tsx | 36 ++ .../node/diffing/fixtures/indentation/2.tsx | 38 ++ .../indentation/experimental.actual.diff.json | 78 +++ .../indentation/smart.actual.diff.json | 16 + .../diffing/fixtures/intra-block-align/1.txt | 4 + .../diffing/fixtures/intra-block-align/2.txt | 3 + .../experimental.actual.diff.json | 24 + .../intra-block-align/smart.actual.diff.json | 24 + .../diffing/fixtures/json-brackets/1.json | 478 ++++++++++++++++ .../diffing/fixtures/json-brackets/2.json | 482 +++++++++++++++++ .../experimental.actual.diff.json | 16 + .../json-brackets/smart.actual.diff.json | 11 + .../diffing/fixtures/just-whitespace/1.js | 1 + .../diffing/fixtures/just-whitespace/2.js | 1 + .../experimental.actual.diff.json | 16 + .../just-whitespace/smart.actual.diff.json | 16 + .../diffing/fixtures/method-splitting/1.tsx | 71 +++ .../diffing/fixtures/method-splitting/2.tsx | 67 +++ .../experimental.actual.diff.json | 278 ++++++++++ .../method-splitting/smart.actual.diff.json | 78 +++ .../fixtures/minimal-diff-character/1.tsx | 5 + .../fixtures/minimal-diff-character/2.tsx | 5 + .../experimental.actual.diff.json | 30 ++ .../smart.actual.diff.json | 26 + .../test/node/diffing/fixtures/subword/1.tsx | 5 + .../test/node/diffing/fixtures/subword/2.tsx | 6 + .../subword/experimental.actual.diff.json | 26 + .../fixtures/subword/smart.actual.diff.json | 21 + .../test/node/diffing/fixtures/trivial/1.txt | 0 .../test/node/diffing/fixtures/trivial/2.txt | 1 + .../trivial/experimental.actual.diff.json | 16 + .../fixtures/trivial/smart.actual.diff.json | 11 + .../node/diffing/fixtures/ts-comments/1.tsx | 12 + .../node/diffing/fixtures/ts-comments/2.tsx | 17 + .../ts-comments/experimental.actual.diff.json | 16 + .../ts-comments/smart.actual.diff.json | 11 + .../diffing/fixtures/ts-confusing-2/1.tsx | 33 ++ .../diffing/fixtures/ts-confusing-2/2.tsx | 40 ++ .../experimental.actual.diff.json | 508 ++++++++++++++++++ .../ts-confusing-2/smart.actual.diff.json | 155 ++++++ .../node/diffing/fixtures/ts-confusing/1.tsx | 26 + .../node/diffing/fixtures/ts-confusing/2.tsx | 27 + .../experimental.actual.diff.json | 112 ++++ .../ts-confusing/smart.actual.diff.json | 48 ++ .../diffing/fixtures/ts-diff-word-split/1.tsx | 10 + .../diffing/fixtures/ts-diff-word-split/2.tsx | 10 + .../experimental.actual.diff.json | 46 ++ .../ts-diff-word-split/smart.actual.diff.json | 46 ++ .../node/diffing/fixtures/ts-example1/1.tsx | 15 + .../node/diffing/fixtures/ts-example1/2.tsx | 80 +++ .../ts-example1/experimental.actual.diff.json | 226 ++++++++ .../ts-example1/smart.actual.diff.json | 38 ++ .../diffing/fixtures/ts-example2-ts/1.tsx | 8 + .../diffing/fixtures/ts-example2-ts/2.tsx | 25 + .../experimental.actual.diff.json | 38 ++ .../ts-example2-ts/smart.actual.diff.json | 33 ++ .../fixtures/ts-experimental-bug/1.tsx | 8 + .../fixtures/ts-experimental-bug/2.tsx | 9 + .../experimental.actual.diff.json | 50 ++ .../smart.actual.diff.json | 42 ++ .../ts-fragmented-eager-diffing/1.tsx | 138 +++++ .../ts-fragmented-eager-diffing/2.tsx | 138 +++++ .../experimental.actual.diff.json | 104 ++++ .../smart.actual.diff.json | 73 +++ .../ts-fragmented-eager-diffing2/1.tsx | 6 + .../ts-fragmented-eager-diffing2/2.tsx | 6 + .../experimental.actual.diff.json | 16 + .../smart.actual.diff.json | 16 + .../ts-fragmented-eager-diffing3/1.tsx | 9 + .../ts-fragmented-eager-diffing3/2.tsx | 9 + .../experimental.actual.diff.json | 40 ++ .../smart.actual.diff.json | 40 ++ .../fixtures/ts-import-ws-affinity/1.tsx | 3 + .../fixtures/ts-import-ws-affinity/2.tsx | 3 + .../experimental.actual.diff.json | 16 + .../smart.actual.diff.json | 16 + .../node/diffing/fixtures/ts-insert/1.tsx | 1 + .../node/diffing/fixtures/ts-insert/2.tsx | 1 + .../ts-insert/experimental.actual.diff.json | 24 + .../fixtures/ts-insert/smart.actual.diff.json | 24 + .../node/diffing/fixtures/ts-methods/1.tsx | 5 + .../node/diffing/fixtures/ts-methods/2.tsx | 6 + .../ts-methods/experimental.actual.diff.json | 24 + .../ts-methods/smart.actual.diff.json | 24 + .../diffing/fixtures/ts-shift-to-ws/1.tsx | 12 + .../diffing/fixtures/ts-shift-to-ws/2.tsx | 12 + .../experimental.actual.diff.json | 16 + .../ts-shift-to-ws/smart.actual.diff.json | 16 + .../node/diffing/fixtures/ts-shifting/1.tsx | 28 + .../node/diffing/fixtures/ts-shifting/2.tsx | 19 + .../ts-shifting/experimental.actual.diff.json | 16 + .../ts-shifting/smart.actual.diff.json | 11 + .../node/diffing/fixtures/ts-strings/1.tsx | 7 + .../node/diffing/fixtures/ts-strings/2.tsx | 7 + .../ts-strings/experimental.actual.diff.json | 16 + .../ts-strings/smart.actual.diff.json | 16 + .../fixtures/ts-too-much-minimization/1.tsx | 20 + .../fixtures/ts-too-much-minimization/2.tsx | 25 + .../experimental.actual.diff.json | 16 + .../smart.actual.diff.json | 16 + .../fixtures/ts-unfragmented-diffing/1.tsx | 14 + .../fixtures/ts-unfragmented-diffing/2.tsx | 16 + .../experimental.actual.diff.json | 30 ++ .../smart.actual.diff.json | 21 + .../node/diffing/fixtures/ts-unit-test/1.tsx | 17 + .../node/diffing/fixtures/ts-unit-test/2.tsx | 26 + .../experimental.actual.diff.json | 26 + .../ts-unit-test/smart.actual.diff.json | 16 + 118 files changed, 5290 insertions(+) create mode 100644 src/vs/editor/test/node/diffing/README.md create mode 100644 src/vs/editor/test/node/diffing/diffing.test.ts create mode 100644 src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/1.txt create mode 100644 src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/2.txt create mode 100644 src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/indentation/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/indentation/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/intra-block-align/1.txt create mode 100644 src/vs/editor/test/node/diffing/fixtures/intra-block-align/2.txt create mode 100644 src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/json-brackets/1.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/json-brackets/2.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/just-whitespace/1.js create mode 100644 src/vs/editor/test/node/diffing/fixtures/just-whitespace/2.js create mode 100644 src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/subword/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/subword/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/trivial/1.txt create mode 100644 src/vs/editor/test/node/diffing/fixtures/trivial/2.txt create mode 100644 src/vs/editor/test/node/diffing/fixtures/trivial/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/trivial/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tsx create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json diff --git a/src/vs/editor/test/node/diffing/README.md b/src/vs/editor/test/node/diffing/README.md new file mode 100644 index 00000000000..321cf06e65e --- /dev/null +++ b/src/vs/editor/test/node/diffing/README.md @@ -0,0 +1,7 @@ +# Diffing Fixture Tests + +Every folder in `fixtures` represents a test. +The file that starts with `1.` is diffed against the file that starts with `2.`. Use `tsx` instead of `ts` to avoid compiler/linter errors for typescript diff files. + +* When you delete `*.actual.diff.json`, they are regenerated. +* Make sure to delete `*.expected.diff.json`, as they make the tests fail. diff --git a/src/vs/editor/test/node/diffing/diffing.test.ts b/src/vs/editor/test/node/diffing/diffing.test.ts new file mode 100644 index 00000000000..00b4d4c3200 --- /dev/null +++ b/src/vs/editor/test/node/diffing/diffing.test.ts @@ -0,0 +1,93 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import assert = require('assert'); +import { readdirSync, readFileSync, existsSync, writeFileSync } from 'fs'; +import { join } from 'path'; +import { URI } from 'vs/base/common/uri'; +import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComputer'; +import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer'; + +suite('diff fixtures', () => { + + const fixturesDir = join(URI.parse(__dirname.replace('out/vs/editor', 'src/vs/editor')).fsPath, 'fixtures'); + const folders = readdirSync(fixturesDir); + + for (const folder of folders) { + for (const diffingAlgoName of ['smart', 'experimental']) { + + test(`${folder}-${diffingAlgoName}`, () => { + const folderPath = join(fixturesDir, folder); + const files = readdirSync(folderPath); + + const firstFileName = files.find(f => f.startsWith('1.'))!; + const secondFileName = files.find(f => f.startsWith('2.'))!; + + const firstContentLines = readFileSync(join(folderPath, firstFileName), 'utf8').split(/\r\n|\r|\n/); + const secondContentLines = readFileSync(join(folderPath, secondFileName), 'utf8').split(/\r\n|\r|\n/); + + const diffingAlgo = diffingAlgoName === 'smart' ? new SmartLinesDiffComputer() : new StandardLinesDiffComputer(); + + const diff = diffingAlgo.computeDiff(firstContentLines, secondContentLines, { ignoreTrimWhitespace: false, maxComputationTime: Number.MAX_SAFE_INTEGER }); + + const diffingResult: DiffingResult = { + originalFileName: `./${firstFileName}`, + modifiedFileName: `./${secondFileName}`, + diffs: diff.changes.map(c => ({ + originalRange: c.originalRange.toString(), + modifiedRange: c.modifiedRange.toString(), + innerChanges: c.innerChanges?.map(c => ({ + originalRange: c.originalRange.toString(), + modifiedRange: c.modifiedRange.toString(), + })) || null + })) + }; + + const actualFilePath = join(folderPath, `${diffingAlgoName}.actual.diff.json`); + const expectedFilePath = join(folderPath, `${diffingAlgoName}.expected.diff.json`); + + const expectedFileContent = JSON.stringify(diffingResult, null, '\t'); + + if (!existsSync(actualFilePath)) { + writeFileSync(actualFilePath, expectedFileContent); + writeFileSync(expectedFilePath, expectedFileContent); + throw new Error('No actual file! Actual and expected files were written.'); + } else { + const actualFileContent = readFileSync(actualFilePath, 'utf8'); + const actualFileDiffResult: DiffingResult = JSON.parse(actualFileContent); + + try { + assert.deepStrictEqual(actualFileDiffResult, diffingResult); + } catch (e) { + writeFileSync(expectedFilePath, expectedFileContent); + throw e; + } + } + + if (existsSync(expectedFilePath)) { + throw new Error('Expected file exists! Please delete it.'); + } + }); + } + } +}); + +interface DiffingResult { + originalFileName: string; + modifiedFileName: string; + + diffs: IDetailedDiff[]; +} + +interface IDetailedDiff { + originalRange: string; // [startLineNumber, endLineNumberExclusive) + modifiedRange: string; // [startLineNumber, endLineNumberExclusive) + innerChanges: IDiff[] | null; +} + +interface IDiff { + originalRange: string; // [1,18 -> 1,19] + modifiedRange: string; // [1,18 -> 1,19] +} diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tsx b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tsx new file mode 100644 index 00000000000..e1557eb0c9a --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tsx @@ -0,0 +1,131 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { CompareResult } from 'vs/base/common/arrays'; +import { autorun, derived } from 'vs/base/common/observable'; +import { IModelDeltaDecoration, MinimapPosition, OverviewRulerLane } from 'vs/editor/common/model'; +import { localize } from 'vs/nls'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRange'; +import { applyObservableDecorations, join } from 'vs/workbench/contrib/mergeEditor/browser/utils'; +import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors'; +import { CodeEditorView } from './codeEditorView'; + +export class ResultCodeEditorView extends CodeEditorView { + private readonly decorations = derived('result.decorations', reader => { + const viewModel = this.viewModel.read(reader); + if (!viewModel) { + return []; + } + const model = viewModel.model; + const result = new Array(); + + const baseRangeWithStoreAndTouchingDiffs = join( + model.modifiedBaseRanges.read(reader), + model.resultDiffs.read(reader), + (baseRange, diff) => baseRange.baseRange.touches(diff.inputRange) + ? CompareResult.neitherLessOrGreaterThan + : LineRange.compareByStart( + baseRange.baseRange, + diff.inputRange + ) + ); + + const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader); + + for (const m of baseRangeWithStoreAndTouchingDiffs) { + const modifiedBaseRange = m.left; + + if (modifiedBaseRange) { + const range = model.getRangeInResult(modifiedBaseRange.baseRange, reader).toInclusiveRange(); + if (range) { + const blockClassNames = ['merge-editor-block']; + const isHandled = model.isHandled(modifiedBaseRange).read(reader); + if (isHandled) { + blockClassNames.push('handled'); + } + if (modifiedBaseRange === activeModifiedBaseRange) { + blockClassNames.push('focused'); + } + blockClassNames.push('result'); + + result.push({ + range, + options: { + isWholeLine: true, + blockClassName: blockClassNames.join(' '), + description: 'Result Diff', + minimap: { + position: MinimapPosition.Gutter, + color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor }, + }, + overviewRuler: { + position: OverviewRulerLane.Center, + color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor }, + } + } + }); + } + } + + for (const diff of m.rights) { + const range = diff.outputRange.toInclusiveRange(); + if (range) { + result.push({ + range, + options: { + className: `merge-editor-diff result`, + description: 'Merge Editor', + isWholeLine: true, + } + }); + } + + if (diff.rangeMappings) { + for (const d of diff.rangeMappings) { + result.push({ + range: d.outputRange, + options: { + className: `merge-editor-diff-word result`, + description: 'Merge Editor' + } + }); + } + } + } + } + return result; + }); + + constructor( + @IInstantiationService instantiationService: IInstantiationService + ) { + super(instantiationService); + + this._register(applyObservableDecorations(this.editor, this.decorations)); + + + this._register(autorun('update remainingConflicts label', reader => { + const model = this.model.read(reader); + if (!model) { + return; + } + const count = model.unhandledConflictsCount.read(reader); + + this.htmlElements.detail.innerText = count === 1 + ? localize( + 'mergeEditor.remainingConflicts', + '{0} Conflict Remaining', + count + ) + : localize( + 'mergeEditor.remainingConflict', + '{0} Conflicts Remaining ', + count + ); + + })); + } +} diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tsx b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tsx new file mode 100644 index 00000000000..f775a30f62a --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tsx @@ -0,0 +1,134 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { CompareResult } from 'vs/base/common/arrays'; +import { autorun, derived } from 'vs/base/common/observable'; +import { IModelDeltaDecoration, MinimapPosition, OverviewRulerLane } from 'vs/editor/common/model'; +import { localize } from 'vs/nls'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRange'; +import { applyObservableDecorations, join } from 'vs/workbench/contrib/mergeEditor/browser/utils'; +import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors'; +import { CodeEditorView } from './codeEditorView'; + +export class ResultCodeEditorView extends CodeEditorView { + private readonly decorations = derived('result.decorations', reader => { + const viewModel = this.viewModel.read(reader); + if (!viewModel) { + return []; + } + const model = viewModel.model; + const result = new Array(); + + const baseRangeWithStoreAndTouchingDiffs = join( + model.modifiedBaseRanges.read(reader), + model.resultDiffs.read(reader), + (baseRange, diff) => baseRange.baseRange.touches(diff.inputRange) + ? CompareResult.neitherLessOrGreaterThan + : LineRange.compareByStart( + baseRange.baseRange, + diff.inputRange + ) + ); + + const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader); + + for (const m of baseRangeWithStoreAndTouchingDiffs) { + const modifiedBaseRange = m.left; + + if (modifiedBaseRange) { + const range = model.getRangeInResult(modifiedBaseRange.baseRange, reader).toInclusiveRange(); + if (range) { + const blockClassNames = ['merge-editor-block']; + const isHandled = model.isHandled(modifiedBaseRange).read(reader); + if (isHandled) { + blockClassNames.push('handled'); + } + if (modifiedBaseRange === activeModifiedBaseRange) { + blockClassNames.push('focused'); + } + blockClassNames.push('result'); + + result.push({ + range, + options: { + isWholeLine: true, + blockClassName: blockClassNames.join(' '), + description: 'Result Diff', + minimap: { + position: MinimapPosition.Gutter, + color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor }, + }, + overviewRuler: { + position: OverviewRulerLane.Center, + color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor }, + } + } + }); + } + } + + + if (!modifiedBaseRange || modifiedBaseRange.isConflicting) { + for (const diff of m.rights) { + const range = diff.outputRange.toInclusiveRange(); + if (range) { + result.push({ + range, + options: { + className: `merge-editor-diff result`, + description: 'Merge Editor', + isWholeLine: true, + } + }); + } + + if (diff.rangeMappings) { + for (const d of diff.rangeMappings) { + result.push({ + range: d.outputRange, + options: { + className: `merge-editor-diff-word result`, + description: 'Merge Editor' + } + }); + } + } + } + } + } + return result; + }); + + constructor( + @IInstantiationService instantiationService: IInstantiationService + ) { + super(instantiationService); + + this._register(applyObservableDecorations(this.editor, this.decorations)); + + + this._register(autorun('update remainingConflicts label', reader => { + const model = this.model.read(reader); + if (!model) { + return; + } + const count = model.unhandledConflictsCount.read(reader); + + this.htmlElements.detail.innerText = count === 1 + ? localize( + 'mergeEditor.remainingConflicts', + '{0} Conflict Remaining', + count + ) + : localize( + 'mergeEditor.remainingConflict', + '{0} Conflicts Remaining ', + count + ); + + })); + } +} diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json new file mode 100644 index 00000000000..ba9765b288b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json @@ -0,0 +1,110 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[73,85)", + "modifiedRange": "[73,87)", + "innerChanges": [ + { + "originalRange": "[73,1 -> 73,1]", + "modifiedRange": "[73,1 -> 75,1]" + }, + { + "originalRange": "[73,1 -> 73,1]", + "modifiedRange": "[75,1 -> 75,2]" + }, + { + "originalRange": "[74,1 -> 74,1]", + "modifiedRange": "[76,1 -> 76,2]" + }, + { + "originalRange": "[75,1 -> 75,1]", + "modifiedRange": "[77,1 -> 77,2]" + }, + { + "originalRange": "[76,1 -> 76,1]", + "modifiedRange": "[78,1 -> 78,2]" + }, + { + "originalRange": "[77,1 -> 77,1]", + "modifiedRange": "[79,1 -> 79,2]" + }, + { + "originalRange": "[78,1 -> 78,1]", + "modifiedRange": "[80,1 -> 80,2]" + }, + { + "originalRange": "[79,1 -> 79,1]", + "modifiedRange": "[81,1 -> 81,2]" + }, + { + "originalRange": "[80,1 -> 80,1]", + "modifiedRange": "[82,1 -> 82,2]" + }, + { + "originalRange": "[81,1 -> 81,1]", + "modifiedRange": "[83,1 -> 83,2]" + }, + { + "originalRange": "[82,1 -> 82,1]", + "modifiedRange": "[84,1 -> 84,2]" + }, + { + "originalRange": "[83,1 -> 83,1]", + "modifiedRange": "[85,1 -> 85,2]" + }, + { + "originalRange": "[84,1 -> 84,1]", + "modifiedRange": "[86,1 -> 86,2]" + } + ] + }, + { + "originalRange": "[86,95)", + "modifiedRange": "[88,98)", + "innerChanges": [ + { + "originalRange": "[86,1 -> 86,1]", + "modifiedRange": "[88,1 -> 88,2]" + }, + { + "originalRange": "[87,1 -> 87,1]", + "modifiedRange": "[89,1 -> 89,2]" + }, + { + "originalRange": "[88,1 -> 88,1]", + "modifiedRange": "[90,1 -> 90,2]" + }, + { + "originalRange": "[89,1 -> 89,1]", + "modifiedRange": "[91,1 -> 91,2]" + }, + { + "originalRange": "[90,1 -> 90,1]", + "modifiedRange": "[92,1 -> 92,2]" + }, + { + "originalRange": "[91,1 -> 91,1]", + "modifiedRange": "[93,1 -> 93,2]" + }, + { + "originalRange": "[92,1 -> 92,1]", + "modifiedRange": "[94,1 -> 94,2]" + }, + { + "originalRange": "[93,1 -> 93,1]", + "modifiedRange": "[95,1 -> 95,2]" + }, + { + "originalRange": "[94,1 -> 94,1]", + "modifiedRange": "[96,1 -> 96,2]" + }, + { + "originalRange": "[95,1 -> 95,1]", + "modifiedRange": "[97,1 -> 98,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json new file mode 100644 index 00000000000..3812c8e7527 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[73,85)", + "modifiedRange": "[73,87)", + "innerChanges": null + }, + { + "originalRange": "[86,95)", + "modifiedRange": "[88,98)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/1.txt b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/1.txt new file mode 100644 index 00000000000..8530beeba82 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/1.txt @@ -0,0 +1,8 @@ + +console.log(1) +console.log(2) +console.log(3) +console.log(4) +console.log(5) +console.log(6) +console.log(7) diff --git a/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/2.txt b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/2.txt new file mode 100644 index 00000000000..808189c8bec --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/2.txt @@ -0,0 +1,9 @@ +console.log(1); +console.log(2); +console.log(3); +console.log(4); + +console.log(5); +console.log(6); +console.log(7); + diff --git a/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.actual.diff.json new file mode 100644 index 00000000000..52c3f93400f --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.actual.diff.json @@ -0,0 +1,26 @@ +{ + "originalFileName": "./1.txt", + "modifiedFileName": "./2.txt", + "diffs": [ + { + "originalRange": "[1,1)", + "modifiedRange": "[1,9)", + "innerChanges": [ + { + "originalRange": "[1,1 -> 1,1]", + "modifiedRange": "[1,1 -> 9,1]" + } + ] + }, + { + "originalRange": "[2,9)", + "modifiedRange": "[10,10)", + "innerChanges": [ + { + "originalRange": "[2,1 -> 9,1]", + "modifiedRange": "[10,1 -> 10,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.actual.diff.json new file mode 100644 index 00000000000..3a2b5cf1e02 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.txt", + "modifiedFileName": "./2.txt", + "diffs": [ + { + "originalRange": "[1,1)", + "modifiedRange": "[1,9)", + "innerChanges": null + }, + { + "originalRange": "[2,9)", + "modifiedRange": "[10,10)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/1.tsx b/src/vs/editor/test/node/diffing/fixtures/indentation/1.tsx new file mode 100644 index 00000000000..f41bf28983f --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/1.tsx @@ -0,0 +1,36 @@ +export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[]): LineRangeMapping[] { + const changes: LineRangeMapping[] = []; + for (const g of group( + alignments, + (a1, a2) => + (a2.originalRange.startLineNumber - (a1.originalRange.endLineNumber - (a1.originalRange.endColumn > 1 ? 0 : 1)) <= 1) + || (a2.modifiedRange.startLineNumber - (a1.modifiedRange.endLineNumber - (a1.modifiedRange.endColumn > 1 ? 0 : 1)) <= 1) + )) { + const first = g[0]; + const last = g[g.length - 1]; + + changes.push(new LineRangeMapping( + new LineRange( + first.originalRange.startLineNumber, + last.originalRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0) + ), + new LineRange( + first.modifiedRange.startLineNumber, + last.modifiedRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0) + ), + g + )); + } + + assertFn(() => { + return checkAdjacentItems(changes, + (m1, m2) => m2.originalRange.startLineNumber - m1.originalRange.endLineNumberExclusive === m2.modifiedRange.startLineNumber - m1.modifiedRange.endLineNumberExclusive && + // There has to be an unchanged line in between (otherwise both diffs should have been joined) + m1.originalRange.endLineNumberExclusive < m2.originalRange.startLineNumber && + m1.modifiedRange.endLineNumberExclusive < m2.modifiedRange.startLineNumber, + ); + }); + + + return changes; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/2.tsx b/src/vs/editor/test/node/diffing/fixtures/indentation/2.tsx new file mode 100644 index 00000000000..30845a978ee --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/2.tsx @@ -0,0 +1,38 @@ +export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[]): LineRangeMapping[] { + const changes: LineRangeMapping[] = []; + for (const g of group( + alignments, + (a1, a2) => + (a2.originalRange.startLineNumber - (a1.originalRange.endLineNumber - (a1.originalRange.endColumn > 1 ? 0 : 1)) <= 1) + || (a2.modifiedRange.startLineNumber - (a1.modifiedRange.endLineNumber - (a1.modifiedRange.endColumn > 1 ? 0 : 1)) <= 1) + )) { + if (true) { + const first = g[0]; + const last = g[g.length - 1]; + + changes.push(new LineRangeMapping( + new LineRange( + first.originalRange.startLineNumber, + last.originalRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0) + ), + new LineRange( + first.modifiedRange.startLineNumber, + last.modifiedRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0) + ), + g + )); + } + } + + assertFn(() => { + return checkAdjacentItems(changes, + (m1, m2) => m2.originalRange.startLineNumber - m1.originalRange.endLineNumberExclusive === m2.modifiedRange.startLineNumber - m1.modifiedRange.endLineNumberExclusive && + // There has to be an unchanged line in between (otherwise both diffs should have been joined) + m1.originalRange.endLineNumberExclusive < m2.originalRange.startLineNumber && + m1.modifiedRange.endLineNumberExclusive < m2.modifiedRange.startLineNumber, + ); + }); + + + return changes; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json new file mode 100644 index 00000000000..0e19223110b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json @@ -0,0 +1,78 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,11)", + "modifiedRange": "[9,12)", + "innerChanges": [ + { + "originalRange": "[9,1 -> 9,1]", + "modifiedRange": "[9,1 -> 10,1]" + }, + { + "originalRange": "[9,1 -> 9,1]", + "modifiedRange": "[10,1 -> 10,2]" + }, + { + "originalRange": "[10,1 -> 10,1]", + "modifiedRange": "[11,1 -> 11,2]" + } + ] + }, + { + "originalRange": "[12,23)", + "modifiedRange": "[13,25)", + "innerChanges": [ + { + "originalRange": "[12,1 -> 12,1]", + "modifiedRange": "[13,1 -> 13,2]" + }, + { + "originalRange": "[13,1 -> 13,1]", + "modifiedRange": "[14,1 -> 14,2]" + }, + { + "originalRange": "[14,1 -> 14,1]", + "modifiedRange": "[15,1 -> 15,2]" + }, + { + "originalRange": "[15,1 -> 15,1]", + "modifiedRange": "[16,1 -> 16,2]" + }, + { + "originalRange": "[16,1 -> 16,1]", + "modifiedRange": "[17,1 -> 17,2]" + }, + { + "originalRange": "[17,1 -> 17,1]", + "modifiedRange": "[18,1 -> 18,2]" + }, + { + "originalRange": "[18,1 -> 18,1]", + "modifiedRange": "[19,1 -> 19,2]" + }, + { + "originalRange": "[19,1 -> 19,1]", + "modifiedRange": "[20,1 -> 20,2]" + }, + { + "originalRange": "[20,1 -> 20,1]", + "modifiedRange": "[21,1 -> 21,2]" + }, + { + "originalRange": "[21,1 -> 21,1]", + "modifiedRange": "[22,1 -> 22,2]" + }, + { + "originalRange": "[22,1 -> 22,1]", + "modifiedRange": "[23,1 -> 23,2]" + }, + { + "originalRange": "[23,1 -> 23,1]", + "modifiedRange": "[24,1 -> 25,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json new file mode 100644 index 00000000000..e0b6759d861 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,11)", + "modifiedRange": "[9,12)", + "innerChanges": null + }, + { + "originalRange": "[12,23)", + "modifiedRange": "[13,25)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/intra-block-align/1.txt b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/1.txt new file mode 100644 index 00000000000..5b1da6edfa1 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/1.txt @@ -0,0 +1,4 @@ +console.log(1); +console.log(2); +console.log(3); +console.log(4); diff --git a/src/vs/editor/test/node/diffing/fixtures/intra-block-align/2.txt b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/2.txt new file mode 100644 index 00000000000..1def7d3472a --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/2.txt @@ -0,0 +1,3 @@ +console.log(1) +console.log(2) +console.log(4) diff --git a/src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.actual.diff.json new file mode 100644 index 00000000000..7ac4028731d --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.actual.diff.json @@ -0,0 +1,24 @@ +{ + "originalFileName": "./1.txt", + "modifiedFileName": "./2.txt", + "diffs": [ + { + "originalRange": "[1,5)", + "modifiedRange": "[1,4)", + "innerChanges": [ + { + "originalRange": "[1,15 -> 1,16]", + "modifiedRange": "[1,15 -> 1,15]" + }, + { + "originalRange": "[2,15 -> 3,16]", + "modifiedRange": "[2,15 -> 2,15]" + }, + { + "originalRange": "[4,15 -> 4,16]", + "modifiedRange": "[3,15 -> 3,15]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.actual.diff.json new file mode 100644 index 00000000000..7ac4028731d --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.actual.diff.json @@ -0,0 +1,24 @@ +{ + "originalFileName": "./1.txt", + "modifiedFileName": "./2.txt", + "diffs": [ + { + "originalRange": "[1,5)", + "modifiedRange": "[1,4)", + "innerChanges": [ + { + "originalRange": "[1,15 -> 1,16]", + "modifiedRange": "[1,15 -> 1,15]" + }, + { + "originalRange": "[2,15 -> 3,16]", + "modifiedRange": "[2,15 -> 2,15]" + }, + { + "originalRange": "[4,15 -> 4,16]", + "modifiedRange": "[3,15 -> 3,15]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/1.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/1.json new file mode 100644 index 00000000000..7fa1a6519a7 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/json-brackets/1.json @@ -0,0 +1,478 @@ +{ + "editor": [ + { + "name": "vs/platform", + "project": "vscode-editor" + }, + { + "name": "vs/editor/contrib", + "project": "vscode-editor" + }, + { + "name": "vs/editor", + "project": "vscode-editor" + }, + { + "name": "vs/base", + "project": "vscode-editor" + } + ], + "workbench": [ + { + "name": "vs/code", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/api/common", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/bulkEdit", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/cli", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/codeEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/callHierarchy", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/typeHierarchy", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/codeActions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/comments", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/debug", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/dialogs", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/emmet", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/experiments", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/extensions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/externalTerminal", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/feedback", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/files", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/html", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/issue", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/inlayHints", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/interactive", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/languageStatus", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/keybindings", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/markers", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/mergeEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/localization", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/logs", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/output", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/performance", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/preferences", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/notebook", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/quickaccess", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/userData", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/remote", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/relauncher", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/sash", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/scm", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/search", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/searchEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/snippets", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/format", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/tags", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/surveys", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/tasks", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/testing", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/terminal", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/themes", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/trust", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/update", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/url", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/watermark", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/webview", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/webviewPanel", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/workspace", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/workspaces", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/customEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/externalUriOpener", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeGettingStarted", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeOverlay", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomePage", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeViews", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeWalkthrough", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/outline", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/userDataSync", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/editSessions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/views", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/languageDetection", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/audioCues", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/deprecatedExtensionMigrator", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/offline", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/actions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/authToken", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/backup", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/bulkEdit", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/clipboard", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/commands", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/configuration", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/configurationResolver", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/dialogs", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/editor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/extensions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/extensionManagement", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/files", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/history", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/log", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/integrity", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/keybinding", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/lifecycle", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/language", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/progress", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/remote", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/search", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/textfile", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/themes", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/textMate", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/workingCopy", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/workspaces", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/decorations", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/label", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/preferences", + "project": "vscode-preferences" + }, + { + "name": "vs/workbench/services/notification", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/userData", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/userDataSync", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/editSessions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/views", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/timeline", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/localHistory", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/authentication", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/extensionRecommendations", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/gettingStarted", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/host", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/userDataProfile", + "project": "vscode-profiles" + }, + { + "name": "vs/workbench/services/userDataProfile", + "project": "vscode-profiles" + } + ] +} diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/2.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/2.json new file mode 100644 index 00000000000..dd949e618f2 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/json-brackets/2.json @@ -0,0 +1,482 @@ +{ + "editor": [ + { + "name": "vs/platform", + "project": "vscode-editor" + }, + { + "name": "vs/editor/contrib", + "project": "vscode-editor" + }, + { + "name": "vs/editor", + "project": "vscode-editor" + }, + { + "name": "vs/base", + "project": "vscode-editor" + } + ], + "workbench": [ + { + "name": "vs/code", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/api/common", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/bulkEdit", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/cli", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/codeEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/callHierarchy", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/typeHierarchy", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/codeActions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/comments", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/debug", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/dialogs", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/emmet", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/experiments", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/extensions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/externalTerminal", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/feedback", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/files", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/html", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/issue", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/inlayHints", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/interactive", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/languageStatus", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/keybindings", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/markers", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/mergeEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/localization", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/logs", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/output", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/performance", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/preferences", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/notebook", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/quickaccess", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/userData", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/remote", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/relauncher", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/sash", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/scm", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/search", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/searchEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/snippets", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/format", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/tags", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/surveys", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/tasks", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/testing", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/terminal", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/themes", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/trust", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/update", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/url", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/watermark", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/webview", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/webviewPanel", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/workspace", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/workspaces", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/customEditor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/externalUriOpener", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeGettingStarted", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeOverlay", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomePage", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeViews", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/welcomeWalkthrough", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/outline", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/userDataSync", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/editSessions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/views", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/languageDetection", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/audioCues", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/deprecatedExtensionMigrator", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/bracketPairColorizer2Telemetry", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/offline", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/actions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/authToken", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/backup", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/bulkEdit", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/clipboard", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/commands", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/configuration", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/configurationResolver", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/dialogs", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/editor", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/extensions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/extensionManagement", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/files", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/history", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/log", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/integrity", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/keybinding", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/lifecycle", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/language", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/progress", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/remote", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/search", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/textfile", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/themes", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/textMate", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/workingCopy", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/workspaces", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/decorations", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/label", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/preferences", + "project": "vscode-preferences" + }, + { + "name": "vs/workbench/services/notification", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/userData", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/userDataSync", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/editSessions", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/views", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/timeline", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/localHistory", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/authentication", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/extensionRecommendations", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/gettingStarted", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/services/host", + "project": "vscode-workbench" + }, + { + "name": "vs/workbench/contrib/userDataProfile", + "project": "vscode-profiles" + }, + { + "name": "vs/workbench/services/userDataProfile", + "project": "vscode-profiles" + } + ] +} diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json new file mode 100644 index 00000000000..d446bbeaa3c --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.json", + "modifiedFileName": "./2.json", + "diffs": [ + { + "originalRange": "[302,302)", + "modifiedRange": "[302,306)", + "innerChanges": [ + { + "originalRange": "[302,1 -> 302,1]", + "modifiedRange": "[302,1 -> 306,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.actual.diff.json new file mode 100644 index 00000000000..93b4f55206e --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.actual.diff.json @@ -0,0 +1,11 @@ +{ + "originalFileName": "./1.json", + "modifiedFileName": "./2.json", + "diffs": [ + { + "originalRange": "[302,302)", + "modifiedRange": "[302,306)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/just-whitespace/1.js b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/1.js new file mode 100644 index 00000000000..78f00467983 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/1.js @@ -0,0 +1 @@ +console.log('foo'); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/just-whitespace/2.js b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/2.js new file mode 100644 index 00000000000..3c800d3a788 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/2.js @@ -0,0 +1 @@ +console.log('foo'); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.actual.diff.json new file mode 100644 index 00000000000..cf6f3ec5f25 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.js", + "modifiedFileName": "./2.js", + "diffs": [ + { + "originalRange": "[1,2)", + "modifiedRange": "[1,2)", + "innerChanges": [ + { + "originalRange": "[1,20 -> 1,21]", + "modifiedRange": "[1,20 -> 1,20]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.actual.diff.json new file mode 100644 index 00000000000..cf6f3ec5f25 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.js", + "modifiedFileName": "./2.js", + "diffs": [ + { + "originalRange": "[1,2)", + "modifiedRange": "[1,2)", + "innerChanges": [ + { + "originalRange": "[1,20 -> 1,21]", + "modifiedRange": "[1,20 -> 1,20]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tsx b/src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tsx new file mode 100644 index 00000000000..41ec64f1b1e --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tsx @@ -0,0 +1,71 @@ +class Test { + public getDecorationsViewportData(viewRange: Range): IDecorationsViewportData { + return null!; + } + + public getInlineDecorationsOnLine(lineNumber: number): InlineDecoration[] { + const range = new Range(lineNumber, this._linesCollection.getViewLineMinColumn(lineNumber), lineNumber, this._linesCollection.getViewLineMaxColumn(lineNumber)); + return this._getDecorationsInRange(range).inlineDecorations[0]; + } + + private _getDecorationsInRange(viewRange: Range): IDecorationsViewportData { + const modelDecorations = this._linesCollection.getDecorationsInRange(viewRange, this.editorId, filterValidationDecorations(this.configuration.options)); + const startLineNumber = viewRange.startLineNumber; + const endLineNumber = viewRange.endLineNumber; + + const decorationsInViewport: ViewModelDecoration[] = []; + let decorationsInViewportLen = 0; + const inlineDecorations: InlineDecoration[][] = []; + for (let j = startLineNumber; j <= endLineNumber; j++) { + inlineDecorations[j - startLineNumber] = []; + } + + for (let i = 0, len = modelDecorations.length; i < len; i++) { + const modelDecoration = modelDecorations[i]; + const decorationOptions = modelDecoration.options; + + if (!isModelDecorationVisible(this.model, modelDecoration)) { + continue; + } + + const viewModelDecoration = this._getOrCreateViewModelDecoration(modelDecoration); + const viewRange = viewModelDecoration.range; + + decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration; + + if (decorationOptions.inlineClassName) { + const inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? InlineDecorationType.RegularAffectingLetterSpacing : InlineDecorationType.Regular); + const intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber); + const intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber); + for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) { + inlineDecorations[j - startLineNumber].push(inlineDecoration); + } + } + if (decorationOptions.beforeContentClassName) { + if (startLineNumber <= viewRange.startLineNumber && viewRange.startLineNumber <= endLineNumber) { + const inlineDecoration = new InlineDecoration( + new Range(viewRange.startLineNumber, viewRange.startColumn, viewRange.startLineNumber, viewRange.startColumn), + decorationOptions.beforeContentClassName, + InlineDecorationType.Before + ); + inlineDecorations[viewRange.startLineNumber - startLineNumber].push(inlineDecoration); + } + } + if (decorationOptions.afterContentClassName) { + if (startLineNumber <= viewRange.endLineNumber && viewRange.endLineNumber <= endLineNumber) { + const inlineDecoration = new InlineDecoration( + new Range(viewRange.endLineNumber, viewRange.endColumn, viewRange.endLineNumber, viewRange.endColumn), + decorationOptions.afterContentClassName, + InlineDecorationType.After + ); + inlineDecorations[viewRange.endLineNumber - startLineNumber].push(inlineDecoration); + } + } + } + + return { + decorations: decorationsInViewport, + inlineDecorations: inlineDecorations + }; + } +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tsx b/src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tsx new file mode 100644 index 00000000000..f74aaa81fc2 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tsx @@ -0,0 +1,67 @@ +class Test { + public getDecorationsViewportData(viewRange: Range): IDecorationsViewportData { + return null!; + } + + private _getDecorationsViewportData(viewportRange: Range, onlyMinimapDecorations: boolean): IDecorationsViewportData { + const modelDecorations = this._linesCollection.getDecorationsInRange(viewportRange, this.editorId, filterValidationDecorations(this.configuration.options), onlyMinimapDecorations); + + const startLineNumber = viewportRange.startLineNumber; + const endLineNumber = viewportRange.endLineNumber; + + const decorationsInViewport: ViewModelDecoration[] = []; + let decorationsInViewportLen = 0; + const inlineDecorations: InlineDecoration[][] = []; + for (let j = startLineNumber; j <= endLineNumber; j++) { + inlineDecorations[j - startLineNumber] = []; + } + + for (let i = 0, len = modelDecorations.length; i < len; i++) { + const modelDecoration = modelDecorations[i]; + const decorationOptions = modelDecoration.options; + + if (!isModelDecorationVisible(this.model, modelDecoration)) { + continue; + } + + const viewModelDecoration = this._getOrCreateViewModelDecoration(modelDecoration); + const viewRange = viewModelDecoration.range; + + decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration; + + if (decorationOptions.inlineClassName) { + const inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? InlineDecorationType.RegularAffectingLetterSpacing : InlineDecorationType.Regular); + const intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber); + const intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber); + for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) { + inlineDecorations[j - startLineNumber].push(inlineDecoration); + } + } + if (decorationOptions.beforeContentClassName) { + if (startLineNumber <= viewRange.startLineNumber && viewRange.startLineNumber <= endLineNumber) { + const inlineDecoration = new InlineDecoration( + new Range(viewRange.startLineNumber, viewRange.startColumn, viewRange.startLineNumber, viewRange.startColumn), + decorationOptions.beforeContentClassName, + InlineDecorationType.Before + ); + inlineDecorations[viewRange.startLineNumber - startLineNumber].push(inlineDecoration); + } + } + if (decorationOptions.afterContentClassName) { + if (startLineNumber <= viewRange.endLineNumber && viewRange.endLineNumber <= endLineNumber) { + const inlineDecoration = new InlineDecoration( + new Range(viewRange.endLineNumber, viewRange.endColumn, viewRange.endLineNumber, viewRange.endColumn), + decorationOptions.afterContentClassName, + InlineDecorationType.After + ); + inlineDecorations[viewRange.endLineNumber - startLineNumber].push(inlineDecoration); + } + } + } + + return { + decorations: decorationsInViewport, + inlineDecorations: inlineDecorations + }; + } +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json new file mode 100644 index 00000000000..9be8c6f076f --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json @@ -0,0 +1,278 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[6,10)", + "modifiedRange": "[6,8)", + "innerChanges": [ + { + "originalRange": "[6,3 -> 6,6]", + "modifiedRange": "[6,3 -> 6,4]" + }, + { + "originalRange": "[6,7 -> 6,8]", + "modifiedRange": "[6,5 -> 6,9]" + }, + { + "originalRange": "[6,9 -> 6,9]", + "modifiedRange": "[6,10 -> 6,11]" + }, + { + "originalRange": "[6,12 -> 6,18]", + "modifiedRange": "[6,14 -> 6,14]" + }, + { + "originalRange": "[6,29 -> 6,32]", + "modifiedRange": "[6,25 -> 6,26]" + }, + { + "originalRange": "[6,33 -> 6,34]", + "modifiedRange": "[6,27 -> 6,27]" + }, + { + "originalRange": "[6,35 -> 6,35]", + "modifiedRange": "[6,28 -> 6,37]" + }, + { + "originalRange": "[6,36 -> 6,37]", + "modifiedRange": "[6,38 -> 6,39]" + }, + { + "originalRange": "[6,38 -> 6,38]", + "modifiedRange": "[6,40 -> 6,48]" + }, + { + "originalRange": "[6,39 -> 6,39]", + "modifiedRange": "[6,49 -> 6,50]" + }, + { + "originalRange": "[6,40 -> 6,42]", + "modifiedRange": "[6,51 -> 6,68]" + }, + { + "originalRange": "[6,43 -> 6,44]", + "modifiedRange": "[6,69 -> 6,72]" + }, + { + "originalRange": "[6,45 -> 6,45]", + "modifiedRange": "[6,73 -> 6,75]" + }, + { + "originalRange": "[6,46 -> 6,46]", + "modifiedRange": "[6,76 -> 6,82]" + }, + { + "originalRange": "[6,48 -> 6,51]", + "modifiedRange": "[6,84 -> 6,84]" + }, + { + "originalRange": "[6,52 -> 6,52]", + "modifiedRange": "[6,85 -> 6,88]" + }, + { + "originalRange": "[6,53 -> 6,54]", + "modifiedRange": "[6,89 -> 6,91]" + }, + { + "originalRange": "[6,58 -> 6,63]", + "modifiedRange": "[6,95 -> 6,95]" + }, + { + "originalRange": "[6,73 -> 6,75]", + "modifiedRange": "[6,105 -> 6,118]" + }, + { + "originalRange": "[7,9 -> 7,13]", + "modifiedRange": "[7,9 -> 7,12]" + }, + { + "originalRange": "[7,14 -> 7,18]", + "modifiedRange": "[7,13 -> 7,15]" + }, + { + "originalRange": "[7,19 -> 7,22]", + "modifiedRange": "[7,16 -> 7,19]" + }, + { + "originalRange": "[7,23 -> 7,28]", + "modifiedRange": "[7,20 -> 7,21]" + }, + { + "originalRange": "[7,29 -> 7,29]", + "modifiedRange": "[7,22 -> 7,23]" + }, + { + "originalRange": "[7,30 -> 7,38]", + "modifiedRange": "[7,24 -> 7,27]" + }, + { + "originalRange": "[7,64 -> 7,66]", + "modifiedRange": "[7,53 -> 7,54]" + }, + { + "originalRange": "[7,67 -> 7,69]", + "modifiedRange": "[7,55 -> 7,60]" + }, + { + "originalRange": "[7,70 -> 7,70]", + "modifiedRange": "[7,61 -> 7,62]" + }, + { + "originalRange": "[7,71 -> 7,74]", + "modifiedRange": "[7,63 -> 7,65]" + }, + { + "originalRange": "[7,75 -> 7,80]", + "modifiedRange": "[7,66 -> 7,68]" + }, + { + "originalRange": "[7,81 -> 7,81]", + "modifiedRange": "[7,69 -> 7,71]" + }, + { + "originalRange": "[7,82 -> 7,83]", + "modifiedRange": "[7,72 -> 7,73]" + }, + { + "originalRange": "[7,84 -> 7,85]", + "modifiedRange": "[7,74 -> 7,74]" + }, + { + "originalRange": "[7,86 -> 7,91]", + "modifiedRange": "[7,75 -> 7,78]" + }, + { + "originalRange": "[7,92 -> 7,97]", + "modifiedRange": "[7,79 -> 7,82]" + }, + { + "originalRange": "[7,98 -> 7,98]", + "modifiedRange": "[7,83 -> 7,84]" + }, + { + "originalRange": "[7,99 -> 7,105]", + "modifiedRange": "[7,85 -> 7,85]" + }, + { + "originalRange": "[7,112 -> 7,116]", + "modifiedRange": "[7,92 -> 7,92]" + }, + { + "originalRange": "[7,117 -> 7,119]", + "modifiedRange": "[7,93 -> 7,96]" + }, + { + "originalRange": "[7,120 -> 7,120]", + "modifiedRange": "[7,97 -> 7,104]" + }, + { + "originalRange": "[7,121 -> 7,124]", + "modifiedRange": "[7,105 -> 7,105]" + }, + { + "originalRange": "[7,125 -> 7,130]", + "modifiedRange": "[7,106 -> 7,106]" + }, + { + "originalRange": "[7,131 -> 7,132]", + "modifiedRange": "[7,107 -> 7,108]" + }, + { + "originalRange": "[7,133 -> 7,133]", + "modifiedRange": "[7,109 -> 7,111]" + }, + { + "originalRange": "[7,134 -> 7,137]", + "modifiedRange": "[7,112 -> 7,115]" + }, + { + "originalRange": "[7,138 -> 7,138]", + "modifiedRange": "[7,116 -> 7,117]" + }, + { + "originalRange": "[7,139 -> 7,139]", + "modifiedRange": "[7,118 -> 7,119]" + }, + { + "originalRange": "[7,140 -> 7,141]", + "modifiedRange": "[7,120 -> 7,123]" + }, + { + "originalRange": "[7,142 -> 7,144]", + "modifiedRange": "[7,124 -> 7,126]" + }, + { + "originalRange": "[7,145 -> 7,148]", + "modifiedRange": "[7,127 -> 7,127]" + }, + { + "originalRange": "[7,149 -> 7,149]", + "modifiedRange": "[7,128 -> 7,129]" + }, + { + "originalRange": "[7,150 -> 8,5]", + "modifiedRange": "[7,130 -> 7,130]" + }, + { + "originalRange": "[8,5 -> 8,10]", + "modifiedRange": "[7,130 -> 7,130]" + }, + { + "originalRange": "[8,15 -> 8,21]", + "modifiedRange": "[7,135 -> 7,135]" + }, + { + "originalRange": "[8,23 -> 8,23]", + "modifiedRange": "[7,137 -> 7,142]" + }, + { + "originalRange": "[8,29 -> 8,44]", + "modifiedRange": "[7,148 -> 7,148]" + }, + { + "originalRange": "[8,45 -> 8,45]", + "modifiedRange": "[7,149 -> 7,152]" + }, + { + "originalRange": "[8,46 -> 8,46]", + "modifiedRange": "[7,153 -> 7,160]" + }, + { + "originalRange": "[8,48 -> 8,48]", + "modifiedRange": "[7,162 -> 7,164]" + }, + { + "originalRange": "[8,50 -> 8,51]", + "modifiedRange": "[7,166 -> 7,170]" + }, + { + "originalRange": "[8,62 -> 8,65]", + "modifiedRange": "[7,181 -> 7,182]" + }, + { + "originalRange": "[9,1 -> 10,1]", + "modifiedRange": "[8,1 -> 8,1]" + } + ] + }, + { + "originalRange": "[11,15)", + "modifiedRange": "[9,11)", + "innerChanges": [ + { + "originalRange": "[11,1 -> 13,1]", + "modifiedRange": "[9,1 -> 9,1]" + }, + { + "originalRange": "[13,31 -> 13,31]", + "modifiedRange": "[9,31 -> 9,35]" + }, + { + "originalRange": "[14,29 -> 14,29]", + "modifiedRange": "[10,29 -> 10,33]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json new file mode 100644 index 00000000000..e8f65023ff3 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json @@ -0,0 +1,78 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[6,10)", + "modifiedRange": "[6,8)", + "innerChanges": [ + { + "originalRange": "[6,3 -> 6,9]", + "modifiedRange": "[6,3 -> 6,11]" + }, + { + "originalRange": "[6,12 -> 6,18]", + "modifiedRange": "[6,14 -> 6,14]" + }, + { + "originalRange": "[6,29 -> 6,54]", + "modifiedRange": "[6,25 -> 6,91]" + }, + { + "originalRange": "[6,58 -> 6,63]", + "modifiedRange": "[6,95 -> 6,95]" + }, + { + "originalRange": "[6,73 -> 6,75]", + "modifiedRange": "[6,105 -> 6,118]" + }, + { + "originalRange": "[7,9 -> 7,38]", + "modifiedRange": "[7,9 -> 7,27]" + }, + { + "originalRange": "[7,64 -> 7,105]", + "modifiedRange": "[7,53 -> 7,85]" + }, + { + "originalRange": "[7,112 -> 7,124]", + "modifiedRange": "[7,92 -> 7,114]" + }, + { + "originalRange": "[7,128 -> 8,10]", + "modifiedRange": "[7,118 -> 7,130]" + }, + { + "originalRange": "[8,15 -> 8,23]", + "modifiedRange": "[7,135 -> 7,142]" + }, + { + "originalRange": "[8,29 -> 8,51]", + "modifiedRange": "[7,148 -> 7,170]" + }, + { + "originalRange": "[8,62 -> 9,3]", + "modifiedRange": "[7,181 -> 7,183]" + } + ] + }, + { + "originalRange": "[11,15)", + "modifiedRange": "[9,11)", + "innerChanges": [ + { + "originalRange": "[11,1 -> 13,1]", + "modifiedRange": "[9,1 -> 9,1]" + }, + { + "originalRange": "[13,31 -> 13,31]", + "modifiedRange": "[9,31 -> 9,35]" + }, + { + "originalRange": "[14,29 -> 14,29]", + "modifiedRange": "[10,29 -> 10,33]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tsx b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tsx new file mode 100644 index 00000000000..b9fd35ebace --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tsx @@ -0,0 +1,5 @@ +import * as path from 'path'; +import { Command } from 'vscode'; +import * as nls from 'vscode-nls'; + +"()()()()()()()()()()()()()" \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tsx b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tsx new file mode 100644 index 00000000000..44b380e2bdb --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tsx @@ -0,0 +1,5 @@ +import * as path from 'path'; +import { Command, commands } from 'vscode'; +import * as nls from 'vscode-nls'; + +"Gallicum()est()divisa()in()partres()tres()quarum()unam()est()()()()()()()()()()()()" \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json new file mode 100644 index 00000000000..f15c45914b4 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json @@ -0,0 +1,30 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,3)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,17 -> 2,17]", + "modifiedRange": "[2,17 -> 2,27]" + } + ] + }, + { + "originalRange": "[5,6)", + "modifiedRange": "[5,6)", + "innerChanges": [ + { + "originalRange": "[5,2 -> 5,2]", + "modifiedRange": "[5,2 -> 5,56]" + }, + { + "originalRange": "[5,4 -> 5,4]", + "modifiedRange": "[5,58 -> 5,61]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json new file mode 100644 index 00000000000..43f0862ade0 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json @@ -0,0 +1,26 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,3)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,17 -> 2,17]", + "modifiedRange": "[2,17 -> 2,27]" + } + ] + }, + { + "originalRange": "[5,6)", + "modifiedRange": "[5,6)", + "innerChanges": [ + { + "originalRange": "[5,2 -> 5,4]", + "modifiedRange": "[5,2 -> 5,61]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/1.tsx b/src/vs/editor/test/node/diffing/fixtures/subword/1.tsx new file mode 100644 index 00000000000..d4e043303e5 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/subword/1.tsx @@ -0,0 +1,5 @@ +import { EditorSimpleWorker } from 'vs/editor/common/services/editorSimpleWorker'; +import { IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker'; +import { IModelService } from 'vs/editor/common/services/model'; + +let x: [IEditorWorkerService, EditorSimpleWorker, IModelService, IUnicodeHighlightsResult]; \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/2.tsx b/src/vs/editor/test/node/diffing/fixtures/subword/2.tsx new file mode 100644 index 00000000000..94f016c889b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/subword/2.tsx @@ -0,0 +1,6 @@ +import { EditorSimpleWorker } from 'vs/editor/common/services/editorSimpleWorker'; +import { IDiffComputationResult, IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker'; +import { IModelService } from 'vs/editor/common/services/model'; + +let x: [IEditorWorkerService, EditorSimpleWorker, IModelService, IUnicodeHighlightsResult]; +let y: IDiffComputationResult; \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json new file mode 100644 index 00000000000..bdf3b788912 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json @@ -0,0 +1,26 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,3)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,9 -> 2,9]", + "modifiedRange": "[2,9 -> 2,33]" + } + ] + }, + { + "originalRange": "[6,6)", + "modifiedRange": "[6,7)", + "innerChanges": [ + { + "originalRange": "[6,1 -> 6,1]", + "modifiedRange": "[6,1 -> 7,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json new file mode 100644 index 00000000000..72e55b6533c --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json @@ -0,0 +1,21 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,3)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,11 -> 2,11]", + "modifiedRange": "[2,11 -> 2,35]" + } + ] + }, + { + "originalRange": "[6,6)", + "modifiedRange": "[6,7)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/trivial/1.txt b/src/vs/editor/test/node/diffing/fixtures/trivial/1.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/vs/editor/test/node/diffing/fixtures/trivial/2.txt b/src/vs/editor/test/node/diffing/fixtures/trivial/2.txt new file mode 100644 index 00000000000..c1b0730e013 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/trivial/2.txt @@ -0,0 +1 @@ +x \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/trivial/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/trivial/experimental.actual.diff.json new file mode 100644 index 00000000000..82196225144 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/trivial/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.txt", + "modifiedFileName": "./2.txt", + "diffs": [ + { + "originalRange": "[1,2)", + "modifiedRange": "[1,2)", + "innerChanges": [ + { + "originalRange": "[1,1 -> 1,1]", + "modifiedRange": "[1,1 -> 1,2]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/trivial/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/trivial/smart.actual.diff.json new file mode 100644 index 00000000000..6068fbfd5b1 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/trivial/smart.actual.diff.json @@ -0,0 +1,11 @@ +{ + "originalFileName": "./1.txt", + "modifiedFileName": "./2.txt", + "diffs": [ + { + "originalRange": "[1,2)", + "modifiedRange": "[1,2)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tsx new file mode 100644 index 00000000000..cc22cad9aae --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tsx @@ -0,0 +1,12 @@ +interface Test { + /** + * Render +/- indicators for added/deleted changes. + * Defaults to true. + */ + renderIndicators?: boolean; + /** + * Original model should be editable? + * Defaults to false. + */ + originalEditable?: boolean; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tsx new file mode 100644 index 00000000000..3650024093c --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tsx @@ -0,0 +1,17 @@ +interface Test { + /** + * Render +/- indicators for added/deleted changes. + * Defaults to true. + */ + renderIndicators?: boolean; + /** + * Shows icons in the glyph margin to revert changes. + * Default to true. + */ + renderMarginRevertIcon?: boolean; + /** + * Original model should be editable? + * Defaults to false. + */ + originalEditable?: boolean; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json new file mode 100644 index 00000000000..8ef7778d439 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[8,8)", + "modifiedRange": "[8,13)", + "innerChanges": [ + { + "originalRange": "[8,1 -> 8,1]", + "modifiedRange": "[8,1 -> 13,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json new file mode 100644 index 00000000000..a7004a3e6e8 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json @@ -0,0 +1,11 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[8,8)", + "modifiedRange": "[8,13)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tsx new file mode 100644 index 00000000000..d709bbb57e9 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tsx @@ -0,0 +1,33 @@ +class Test { + // ---- BEGIN diff -------------------------------------------------------------------------- + + public async computeDiff(originalUrl: string, modifiedUrl: string, ignoreTrimWhitespace: boolean, maxComputationTime: number): Promise { + const original = this._getModel(originalUrl); + const modified = this._getModel(modifiedUrl); + if (!original || !modified) { + return null; + } + + return EditorSimpleWorker.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime); + } + + public static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, ignoreTrimWhitespace: boolean, maxComputationTime: number): IDiffComputationResult | null { + const originalLines = originalTextModel.getLinesContent(); + const modifiedLines = modifiedTextModel.getLinesContent(); + const diffComputer = new DiffComputer(originalLines, modifiedLines, { + shouldComputeCharChanges: true, + shouldPostProcessCharChanges: true, + shouldIgnoreTrimWhitespace: ignoreTrimWhitespace, + shouldMakePrettyDiff: true, + maxComputationTime: maxComputationTime + }); + + const diffResult = diffComputer.computeDiff(); + const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel)); + return { + quitEarly: diffResult.quitEarly, + identical: identical, + changes: diffResult.changes + }; + } +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tsx new file mode 100644 index 00000000000..7de284ec7a0 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tsx @@ -0,0 +1,40 @@ +class Test { + // ---- BEGIN diff -------------------------------------------------------------------------- + + public async computeDiff(originalUrl: string, modifiedUrl: string, options: ILinesDiffComputerOptions): Promise { + const original = this._getModel(originalUrl); + const modified = this._getModel(modifiedUrl); + if (!original || !modified) { + return null; + } + + return EditorSimpleWorker.computeDiff(original, modified, options); + } + + public static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, options: ILinesDiffComputerOptions): IDiffComputationResult { + + const diffAlgorithm: ILinesDiffComputer = options.diffAlgorithm === 'experimental' ? linesDiffComputers.experimental : linesDiffComputers.smart; + + const originalLines = originalTextModel.getLinesContent(); + const modifiedLines = modifiedTextModel.getLinesContent(); + + const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options); + + const identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel)); + + return { + identical, + quitEarly: result.quitEarly, + changes: result.changes.map(m => ([m.originalRange.startLineNumber, m.originalRange.endLineNumberExclusive, m.modifiedRange.startLineNumber, m.modifiedRange.endLineNumberExclusive, m.innerChanges?.map(m => [ + m.originalRange.startLineNumber, + m.originalRange.startColumn, + m.originalRange.endLineNumber, + m.originalRange.endColumn, + m.modifiedRange.startLineNumber, + m.modifiedRange.startColumn, + m.modifiedRange.endLineNumber, + m.modifiedRange.endColumn, + ])])) + }; + } +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json new file mode 100644 index 00000000000..61022b9f25d --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json @@ -0,0 +1,508 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,3)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,1 -> 2,5]", + "modifiedRange": "[2,1 -> 2,2]" + } + ] + }, + { + "originalRange": "[4,5)", + "modifiedRange": "[4,5)", + "innerChanges": [ + { + "originalRange": "[4,69 -> 4,69]", + "modifiedRange": "[4,69 -> 4,72]" + }, + { + "originalRange": "[4,70 -> 4,71]", + "modifiedRange": "[4,73 -> 4,74]" + }, + { + "originalRange": "[4,72 -> 4,84]", + "modifiedRange": "[4,75 -> 4,75]" + }, + { + "originalRange": "[4,85 -> 4,89]", + "modifiedRange": "[4,76 -> 4,76]" + }, + { + "originalRange": "[4,91 -> 4,95]", + "modifiedRange": "[4,78 -> 4,82]" + }, + { + "originalRange": "[4,96 -> 4,103]", + "modifiedRange": "[4,83 -> 4,88]" + }, + { + "originalRange": "[4,109 -> 4,110]", + "modifiedRange": "[4,94 -> 4,98]" + }, + { + "originalRange": "[4,114 -> 4,126]", + "modifiedRange": "[4,102 -> 4,103]" + } + ] + }, + { + "originalRange": "[11,12)", + "modifiedRange": "[11,12)", + "innerChanges": [ + { + "originalRange": "[11,61 -> 11,87]", + "modifiedRange": "[11,61 -> 11,61]" + }, + { + "originalRange": "[11,88 -> 11,89]", + "modifiedRange": "[11,62 -> 11,62]" + }, + { + "originalRange": "[11,90 -> 11,93]", + "modifiedRange": "[11,63 -> 11,63]" + }, + { + "originalRange": "[11,97 -> 11,101]", + "modifiedRange": "[11,67 -> 11,68]" + } + ] + }, + { + "originalRange": "[14,15)", + "modifiedRange": "[14,18)", + "innerChanges": [ + { + "originalRange": "[14,120 -> 14,120]", + "modifiedRange": "[14,120 -> 14,123]" + }, + { + "originalRange": "[14,121 -> 14,123]", + "modifiedRange": "[14,124 -> 14,124]" + }, + { + "originalRange": "[14,124 -> 14,125]", + "modifiedRange": "[14,125 -> 14,133]" + }, + { + "originalRange": "[14,126 -> 14,128]", + "modifiedRange": "[14,134 -> 14,136]" + }, + { + "originalRange": "[14,129 -> 14,129]", + "modifiedRange": "[14,137 -> 14,141]" + }, + { + "originalRange": "[14,130 -> 14,133]", + "modifiedRange": "[14,142 -> 14,144]" + }, + { + "originalRange": "[14,135 -> 14,136]", + "modifiedRange": "[14,146 -> 14,148]" + }, + { + "originalRange": "[14,137 -> 14,143]", + "modifiedRange": "[14,149 -> 14,151]" + }, + { + "originalRange": "[14,144 -> 14,148]", + "modifiedRange": "[14,152 -> 14,152]" + }, + { + "originalRange": "[14,149 -> 14,150]", + "modifiedRange": "[14,153 -> 14,156]" + }, + { + "originalRange": "[14,151 -> 14,154]", + "modifiedRange": "[14,157 -> 14,162]" + }, + { + "originalRange": "[14,165 -> 14,168]", + "modifiedRange": "[14,173 -> 14,174]" + }, + { + "originalRange": "[14,169 -> 14,170]", + "modifiedRange": "[14,175 -> 14,179]" + }, + { + "originalRange": "[14,171 -> 14,171]", + "modifiedRange": "[14,180 -> 16,5]" + }, + { + "originalRange": "[14,172 -> 14,176]", + "modifiedRange": "[16,6 -> 16,17]" + }, + { + "originalRange": "[14,177 -> 14,178]", + "modifiedRange": "[16,18 -> 16,22]" + }, + { + "originalRange": "[14,181 -> 14,181]", + "modifiedRange": "[16,25 -> 16,30]" + }, + { + "originalRange": "[14,191 -> 14,192]", + "modifiedRange": "[16,40 -> 16,47]" + }, + { + "originalRange": "[14,196 -> 14,198]", + "modifiedRange": "[16,51 -> 16,51]" + }, + { + "originalRange": "[14,199 -> 14,200]", + "modifiedRange": "[16,52 -> 16,58]" + }, + { + "originalRange": "[14,201 -> 14,201]", + "modifiedRange": "[16,59 -> 16,63]" + }, + { + "originalRange": "[14,202 -> 14,202]", + "modifiedRange": "[16,64 -> 16,66]" + }, + { + "originalRange": "[14,203 -> 14,204]", + "modifiedRange": "[16,67 -> 16,70]" + }, + { + "originalRange": "[14,205 -> 14,205]", + "modifiedRange": "[16,71 -> 16,80]" + }, + { + "originalRange": "[14,206 -> 14,207]", + "modifiedRange": "[16,81 -> 16,83]" + }, + { + "originalRange": "[14,208 -> 14,208]", + "modifiedRange": "[16,84 -> 16,118]" + }, + { + "originalRange": "[14,210 -> 14,211]", + "modifiedRange": "[16,120 -> 17,1]" + } + ] + }, + { + "originalRange": "[17,24)", + "modifiedRange": "[20,24)", + "innerChanges": [ + { + "originalRange": "[17,1 -> 17,1]", + "modifiedRange": "[20,1 -> 21,1]" + }, + { + "originalRange": "[17,8 -> 17,8]", + "modifiedRange": "[21,8 -> 21,17]" + }, + { + "originalRange": "[17,13 -> 17,14]", + "modifiedRange": "[21,22 -> 21,33]" + }, + { + "originalRange": "[17,20 -> 17,28]", + "modifiedRange": "[21,39 -> 21,39]" + }, + { + "originalRange": "[17,32 -> 17,40]", + "modifiedRange": "[21,43 -> 21,43]" + }, + { + "originalRange": "[17,71 -> 17,72]", + "modifiedRange": "[21,74 -> 22,1]" + }, + { + "originalRange": "[18,3 -> 18,4]", + "modifiedRange": "[23,3 -> 23,6]" + }, + { + "originalRange": "[18,5 -> 18,9]", + "modifiedRange": "[23,7 -> 23,10]" + }, + { + "originalRange": "[18,10 -> 18,15]", + "modifiedRange": "[23,11 -> 23,13]" + }, + { + "originalRange": "[18,16 -> 18,19]", + "modifiedRange": "[23,14 -> 23,16]" + }, + { + "originalRange": "[18,20 -> 18,29]", + "modifiedRange": "[23,17 -> 23,20]" + }, + { + "originalRange": "[18,30 -> 18,31]", + "modifiedRange": "[23,21 -> 23,22]" + }, + { + "originalRange": "[18,32 -> 18,33]", + "modifiedRange": "[23,23 -> 23,23]" + }, + { + "originalRange": "[18,34 -> 19,4]", + "modifiedRange": "[23,24 -> 23,24]" + }, + { + "originalRange": "[19,5 -> 19,7]", + "modifiedRange": "[23,25 -> 23,25]" + }, + { + "originalRange": "[19,9 -> 19,13]", + "modifiedRange": "[23,27 -> 23,27]" + }, + { + "originalRange": "[19,14 -> 19,17]", + "modifiedRange": "[23,28 -> 23,29]" + }, + { + "originalRange": "[19,18 -> 19,26]", + "modifiedRange": "[23,30 -> 23,30]" + }, + { + "originalRange": "[19,32 -> 19,32]", + "modifiedRange": "[23,36 -> 23,56]" + }, + { + "originalRange": "[19,35 -> 20,4]", + "modifiedRange": "[23,59 -> 23,61]" + }, + { + "originalRange": "[20,5 -> 20,6]", + "modifiedRange": "[23,62 -> 23,65]" + }, + { + "originalRange": "[20,7 -> 20,9]", + "modifiedRange": "[23,66 -> 23,66]" + }, + { + "originalRange": "[20,10 -> 20,15]", + "modifiedRange": "[23,67 -> 23,67]" + }, + { + "originalRange": "[20,16 -> 20,17]", + "modifiedRange": "[23,68 -> 23,71]" + }, + { + "originalRange": "[20,18 -> 20,24]", + "modifiedRange": "[23,72 -> 23,72]" + }, + { + "originalRange": "[20,25 -> 20,29]", + "modifiedRange": "[23,73 -> 23,75]" + }, + { + "originalRange": "[20,30 -> 20,32]", + "modifiedRange": "[23,76 -> 23,78]" + }, + { + "originalRange": "[20,33 -> 20,35]", + "modifiedRange": "[23,79 -> 23,83]" + }, + { + "originalRange": "[20,37 -> 20,40]", + "modifiedRange": "[23,85 -> 23,85]" + }, + { + "originalRange": "[20,41 -> 20,44]", + "modifiedRange": "[23,86 -> 23,87]" + }, + { + "originalRange": "[20,45 -> 20,49]", + "modifiedRange": "[23,88 -> 23,89]" + }, + { + "originalRange": "[20,50 -> 20,51]", + "modifiedRange": "[23,90 -> 23,92]" + }, + { + "originalRange": "[20,52 -> 21,6]", + "modifiedRange": "[23,93 -> 23,96]" + }, + { + "originalRange": "[21,7 -> 21,9]", + "modifiedRange": "[23,97 -> 23,97]" + }, + { + "originalRange": "[21,10 -> 21,13]", + "modifiedRange": "[23,98 -> 23,98]" + }, + { + "originalRange": "[21,14 -> 21,25]", + "modifiedRange": "[23,99 -> 23,101]" + }, + { + "originalRange": "[21,26 -> 22,4]", + "modifiedRange": "[23,102 -> 23,102]" + }, + { + "originalRange": "[22,5 -> 22,8]", + "modifiedRange": "[23,103 -> 23,103]" + }, + { + "originalRange": "[22,9 -> 22,15]", + "modifiedRange": "[23,104 -> 23,107]" + }, + { + "originalRange": "[22,16 -> 22,18]", + "modifiedRange": "[23,108 -> 23,110]" + }, + { + "originalRange": "[22,19 -> 22,21]", + "modifiedRange": "[23,111 -> 23,111]" + }, + { + "originalRange": "[22,22 -> 22,26]", + "modifiedRange": "[23,112 -> 23,112]" + }, + { + "originalRange": "[22,27 -> 22,32]", + "modifiedRange": "[23,113 -> 23,113]" + }, + { + "originalRange": "[22,33 -> 22,36]", + "modifiedRange": "[23,114 -> 23,115]" + }, + { + "originalRange": "[22,37 -> 22,41]", + "modifiedRange": "[23,116 -> 23,117]" + }, + { + "originalRange": "[22,42 -> 23,4]", + "modifiedRange": "[23,118 -> 23,120]" + } + ] + }, + { + "originalRange": "[25,27)", + "modifiedRange": "[25,25)", + "innerChanges": [ + { + "originalRange": "[25,1 -> 27,1]", + "modifiedRange": "[25,1 -> 25,1]" + } + ] + }, + { + "originalRange": "[28,31)", + "modifiedRange": "[26,38)", + "innerChanges": [ + { + "originalRange": "[28,1 -> 28,1]", + "modifiedRange": "[26,1 -> 27,1]" + }, + { + "originalRange": "[28,15 -> 28,20]", + "modifiedRange": "[27,15 -> 27,16]" + }, + { + "originalRange": "[29,4 -> 29,7]", + "modifiedRange": "[28,4 -> 28,7]" + }, + { + "originalRange": "[29,8 -> 29,8]", + "modifiedRange": "[28,8 -> 28,18]" + }, + { + "originalRange": "[29,9 -> 29,10]", + "modifiedRange": "[28,19 -> 28,20]" + }, + { + "originalRange": "[29,11 -> 29,11]", + "modifiedRange": "[28,21 -> 28,47]" + }, + { + "originalRange": "[29,13 -> 29,14]", + "modifiedRange": "[28,49 -> 28,71]" + }, + { + "originalRange": "[29,15 -> 29,15]", + "modifiedRange": "[28,72 -> 28,76]" + }, + { + "originalRange": "[29,16 -> 29,16]", + "modifiedRange": "[28,77 -> 28,90]" + }, + { + "originalRange": "[29,17 -> 29,17]", + "modifiedRange": "[28,91 -> 28,94]" + }, + { + "originalRange": "[29,18 -> 29,18]", + "modifiedRange": "[28,95 -> 28,124]" + }, + { + "originalRange": "[29,19 -> 29,19]", + "modifiedRange": "[28,125 -> 28,129]" + }, + { + "originalRange": "[29,20 -> 29,20]", + "modifiedRange": "[28,130 -> 28,134]" + }, + { + "originalRange": "[29,21 -> 29,21]", + "modifiedRange": "[28,135 -> 28,176]" + }, + { + "originalRange": "[29,22 -> 29,22]", + "modifiedRange": "[28,177 -> 29,13]" + }, + { + "originalRange": "[29,24 -> 29,24]", + "modifiedRange": "[29,15 -> 29,36]" + }, + { + "originalRange": "[30,4 -> 30,6]", + "modifiedRange": "[30,4 -> 30,16]" + }, + { + "originalRange": "[30,10 -> 30,10]", + "modifiedRange": "[30,20 -> 30,21]" + }, + { + "originalRange": "[30,11 -> 30,13]", + "modifiedRange": "[30,22 -> 31,23]" + }, + { + "originalRange": "[30,14 -> 30,14]", + "modifiedRange": "[31,24 -> 33,10]" + }, + { + "originalRange": "[30,16 -> 30,17]", + "modifiedRange": "[33,12 -> 33,15]" + }, + { + "originalRange": "[30,18 -> 30,18]", + "modifiedRange": "[33,16 -> 33,19]" + }, + { + "originalRange": "[30,19 -> 30,19]", + "modifiedRange": "[33,20 -> 33,21]" + }, + { + "originalRange": "[30,20 -> 30,22]", + "modifiedRange": "[33,22 -> 33,22]" + }, + { + "originalRange": "[30,23 -> 30,23]", + "modifiedRange": "[33,23 -> 34,6]" + }, + { + "originalRange": "[30,24 -> 30,26]", + "modifiedRange": "[34,7 -> 34,16]" + }, + { + "originalRange": "[30,30 -> 30,30]", + "modifiedRange": "[34,20 -> 34,21]" + }, + { + "originalRange": "[30,31 -> 30,31]", + "modifiedRange": "[34,22 -> 37,9]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json new file mode 100644 index 00000000000..bfb998bbbc3 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json @@ -0,0 +1,155 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,3)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,1 -> 2,5]", + "modifiedRange": "[2,1 -> 2,2]" + } + ] + }, + { + "originalRange": "[4,5)", + "modifiedRange": "[4,5)", + "innerChanges": [ + { + "originalRange": "[4,69 -> 4,103]", + "modifiedRange": "[4,69 -> 4,88]" + }, + { + "originalRange": "[4,109 -> 4,110]", + "modifiedRange": "[4,94 -> 4,98]" + }, + { + "originalRange": "[4,114 -> 4,126]", + "modifiedRange": "[4,102 -> 4,103]" + } + ] + }, + { + "originalRange": "[11,12)", + "modifiedRange": "[11,12)", + "innerChanges": [ + { + "originalRange": "[11,61 -> 11,93]", + "modifiedRange": "[11,61 -> 11,63]" + }, + { + "originalRange": "[11,97 -> 11,101]", + "modifiedRange": "[11,67 -> 11,68]" + } + ] + }, + { + "originalRange": "[14,15)", + "modifiedRange": "[14,18)", + "innerChanges": [ + { + "originalRange": "[14,120 -> 14,154]", + "modifiedRange": "[14,120 -> 14,162]" + }, + { + "originalRange": "[14,165 -> 14,178]", + "modifiedRange": "[14,173 -> 16,22]" + }, + { + "originalRange": "[14,181 -> 14,181]", + "modifiedRange": "[16,25 -> 16,30]" + }, + { + "originalRange": "[14,191 -> 14,192]", + "modifiedRange": "[16,40 -> 16,47]" + }, + { + "originalRange": "[14,196 -> 14,211]", + "modifiedRange": "[16,51 -> 17,1]" + } + ] + }, + { + "originalRange": "[17,24)", + "modifiedRange": "[20,24)", + "innerChanges": [ + { + "originalRange": "[17,1 -> 17,1]", + "modifiedRange": "[20,1 -> 21,1]" + }, + { + "originalRange": "[17,9 -> 17,21]", + "modifiedRange": "[21,9 -> 21,15]" + }, + { + "originalRange": "[17,24 -> 17,29]", + "modifiedRange": "[21,18 -> 21,19]" + }, + { + "originalRange": "[17,32 -> 17,33]", + "modifiedRange": "[21,22 -> 21,33]" + }, + { + "originalRange": "[17,39 -> 17,40]", + "modifiedRange": "[21,39 -> 21,43]" + }, + { + "originalRange": "[17,71 -> 17,72]", + "modifiedRange": "[21,74 -> 22,1]" + }, + { + "originalRange": "[18,3 -> 19,26]", + "modifiedRange": "[23,3 -> 23,30]" + }, + { + "originalRange": "[19,32 -> 19,32]", + "modifiedRange": "[23,36 -> 23,56]" + }, + { + "originalRange": "[19,35 -> 23,4]", + "modifiedRange": "[23,59 -> 23,120]" + } + ] + }, + { + "originalRange": "[25,27)", + "modifiedRange": "[25,25)", + "innerChanges": null + }, + { + "originalRange": "[28,31)", + "modifiedRange": "[26,38)", + "innerChanges": [ + { + "originalRange": "[28,1 -> 28,1]", + "modifiedRange": "[26,1 -> 27,1]" + }, + { + "originalRange": "[28,15 -> 28,20]", + "modifiedRange": "[27,15 -> 27,16]" + }, + { + "originalRange": "[29,4 -> 29,24]", + "modifiedRange": "[28,4 -> 32,30]" + }, + { + "originalRange": "[30,4 -> 30,6]", + "modifiedRange": "[33,4 -> 33,16]" + }, + { + "originalRange": "[30,10 -> 30,13]", + "modifiedRange": "[33,20 -> 34,9]" + }, + { + "originalRange": "[30,16 -> 30,26]", + "modifiedRange": "[34,12 -> 36,16]" + }, + { + "originalRange": "[30,30 -> 30,31]", + "modifiedRange": "[36,20 -> 37,9]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tsx new file mode 100644 index 00000000000..ae2fd98b2ca --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tsx @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { URI } from 'vs/base/common/uri'; +import { IRange } from 'vs/editor/common/core/range'; +import { IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker'; +import { TextEdit, IInplaceReplaceSupportResult } from 'vs/editor/common/languages'; +import { IChange, IDiffComputationResult } from 'vs/editor/common/diff/diffComputer'; + +export class TestEditorWorkerService implements IEditorWorkerService { + + declare readonly _serviceBrand: undefined; + + canComputeUnicodeHighlights(uri: URI): boolean { return false; } + async computedUnicodeHighlights(uri: URI): Promise { return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 }; } + async computeDiff(original: URI, modified: URI, ignoreTrimWhitespace: boolean, maxComputationTime: number): Promise { return null; } + canComputeDirtyDiff(original: URI, modified: URI): boolean { return false; } + async computeDirtyDiff(original: URI, modified: URI, ignoreTrimWhitespace: boolean): Promise { return null; } + async computeMoreMinimalEdits(resource: URI, edits: TextEdit[] | null | undefined): Promise { return undefined; } + canComputeWordRanges(resource: URI): boolean { return false; } + async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> { return null; } + canNavigateValueSet(resource: URI): boolean { return false; } + async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise { return null; } +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tsx new file mode 100644 index 00000000000..9c5c6519088 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tsx @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { URI } from 'vs/base/common/uri'; +import { IRange } from 'vs/editor/common/core/range'; +import { IDiffComputationResult, IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker'; +import { TextEdit, IInplaceReplaceSupportResult } from 'vs/editor/common/languages'; +import { IDocumentDiffProviderOptions } from 'vs/editor/common/diff/documentDiffProvider'; +import { IChange } from 'vs/editor/common/diff/smartLinesDiffComputer'; + +export class TestEditorWorkerService implements IEditorWorkerService { + + declare readonly _serviceBrand: undefined; + + canComputeUnicodeHighlights(uri: URI): boolean { return false; } + async computedUnicodeHighlights(uri: URI): Promise { return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 }; } + async computeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions): Promise { return null; } + canComputeDirtyDiff(original: URI, modified: URI): boolean { return false; } + async computeDirtyDiff(original: URI, modified: URI, ignoreTrimWhitespace: boolean): Promise { return null; } + async computeMoreMinimalEdits(resource: URI, edits: TextEdit[] | null | undefined): Promise { return undefined; } + canComputeWordRanges(resource: URI): boolean { return false; } + async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> { return null; } + canNavigateValueSet(resource: URI): boolean { return false; } + async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise { return null; } +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json new file mode 100644 index 00000000000..53613f902d3 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json @@ -0,0 +1,112 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[8,9)", + "modifiedRange": "[8,9)", + "innerChanges": [ + { + "originalRange": "[8,9 -> 8,9]", + "modifiedRange": "[8,9 -> 8,33]" + } + ] + }, + { + "originalRange": "[10,11)", + "modifiedRange": "[10,12)", + "innerChanges": [ + { + "originalRange": "[10,11 -> 10,14]", + "modifiedRange": "[10,11 -> 10,17]" + }, + { + "originalRange": "[10,15 -> 10,20]", + "modifiedRange": "[10,18 -> 10,19]" + }, + { + "originalRange": "[10,24 -> 10,25]", + "modifiedRange": "[10,23 -> 10,25]" + }, + { + "originalRange": "[10,26 -> 10,27]", + "modifiedRange": "[10,26 -> 10,32]" + }, + { + "originalRange": "[10,28 -> 10,31]", + "modifiedRange": "[10,33 -> 10,33]" + }, + { + "originalRange": "[10,35 -> 10,36]", + "modifiedRange": "[10,37 -> 10,50]" + }, + { + "originalRange": "[10,37 -> 10,38]", + "modifiedRange": "[10,51 -> 10,72]" + }, + { + "originalRange": "[10,39 -> 10,40]", + "modifiedRange": "[10,73 -> 11,6]" + }, + { + "originalRange": "[10,42 -> 10,42]", + "modifiedRange": "[11,8 -> 11,18]" + }, + { + "originalRange": "[10,72 -> 10,73]", + "modifiedRange": "[11,48 -> 11,59]" + } + ] + }, + { + "originalRange": "[18,19)", + "modifiedRange": "[19,20)", + "innerChanges": [ + { + "originalRange": "[18,50 -> 18,50]", + "modifiedRange": "[19,50 -> 19,53]" + }, + { + "originalRange": "[18,51 -> 18,52]", + "modifiedRange": "[19,54 -> 19,55]" + }, + { + "originalRange": "[18,53 -> 18,65]", + "modifiedRange": "[19,56 -> 19,56]" + }, + { + "originalRange": "[18,66 -> 18,70]", + "modifiedRange": "[19,57 -> 19,57]" + }, + { + "originalRange": "[18,72 -> 18,73]", + "modifiedRange": "[19,59 -> 19,61]" + }, + { + "originalRange": "[18,74 -> 18,76]", + "modifiedRange": "[19,62 -> 19,65]" + }, + { + "originalRange": "[18,77 -> 18,78]", + "modifiedRange": "[19,66 -> 19,66]" + }, + { + "originalRange": "[18,79 -> 18,85]", + "modifiedRange": "[19,67 -> 19,74]" + }, + { + "originalRange": "[18,86 -> 18,87]", + "modifiedRange": "[19,75 -> 19,81]" + }, + { + "originalRange": "[18,88 -> 18,91]", + "modifiedRange": "[19,82 -> 19,82]" + }, + { + "originalRange": "[18,95 -> 18,107]", + "modifiedRange": "[19,86 -> 19,87]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json new file mode 100644 index 00000000000..c7817297c09 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json @@ -0,0 +1,48 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[8,9)", + "modifiedRange": "[8,9)", + "innerChanges": [ + { + "originalRange": "[8,11 -> 8,11]", + "modifiedRange": "[8,11 -> 8,35]" + } + ] + }, + { + "originalRange": "[10,11)", + "modifiedRange": "[10,12)", + "innerChanges": [ + { + "originalRange": "[10,11 -> 10,20]", + "modifiedRange": "[10,11 -> 10,77]" + }, + { + "originalRange": "[10,24 -> 10,41]", + "modifiedRange": "[10,81 -> 11,17]" + }, + { + "originalRange": "[10,72 -> 10,73]", + "modifiedRange": "[11,48 -> 11,59]" + } + ] + }, + { + "originalRange": "[18,19)", + "modifiedRange": "[19,20)", + "innerChanges": [ + { + "originalRange": "[18,50 -> 18,91]", + "modifiedRange": "[19,50 -> 19,82]" + }, + { + "originalRange": "[18,95 -> 18,107]", + "modifiedRange": "[19,86 -> 19,87]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tsx new file mode 100644 index 00000000000..0a612a235e2 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tsx @@ -0,0 +1,10 @@ +import { findLast } from 'vs/base/common/arrays'; +import { Disposable } from 'vs/base/common/lifecycle'; +import { ITransaction, observableValue, transaction } from 'vs/base/common/observable'; +import { Range } from 'vs/editor/common/core/range'; +import { ScrollType } from 'vs/editor/common/editorCommon'; +import { IFooBar, IFoo } from 'foo'; + +console.log(observableValue); + +console.log(observableValue); diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tsx new file mode 100644 index 00000000000..968e08f00f8 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tsx @@ -0,0 +1,10 @@ +import { findLast } from 'vs/base/common/arrays'; +import { Disposable } from 'vs/base/common/lifecycle'; +import { ITransaction, observableFromEvent, observableValue, transaction } from 'vs/base/common/observable'; +import { Range } from 'vs/editor/common/core/range'; +import { ScrollType } from 'vs/editor/common/editorCommon'; +import { IFooBar, IBar, IFoo } from 'foo'; + +console.log(observableFromEvent, observableValue); + +console.log(observableValue, observableFromEvent); diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json new file mode 100644 index 00000000000..3eefa012c09 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json @@ -0,0 +1,46 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,23 -> 3,23]", + "modifiedRange": "[3,23 -> 3,44]" + } + ] + }, + { + "originalRange": "[6,7)", + "modifiedRange": "[6,7)", + "innerChanges": [ + { + "originalRange": "[6,18 -> 6,18]", + "modifiedRange": "[6,18 -> 6,24]" + } + ] + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[8,9)", + "innerChanges": [ + { + "originalRange": "[8,13 -> 8,13]", + "modifiedRange": "[8,13 -> 8,34]" + } + ] + }, + { + "originalRange": "[10,11)", + "modifiedRange": "[10,11)", + "innerChanges": [ + { + "originalRange": "[10,28 -> 10,28]", + "modifiedRange": "[10,28 -> 10,49]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json new file mode 100644 index 00000000000..0039a7e1d42 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json @@ -0,0 +1,46 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,34 -> 3,34]", + "modifiedRange": "[3,34 -> 3,55]" + } + ] + }, + { + "originalRange": "[6,7)", + "modifiedRange": "[6,7)", + "innerChanges": [ + { + "originalRange": "[6,20 -> 6,20]", + "modifiedRange": "[6,20 -> 6,26]" + } + ] + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[8,9)", + "innerChanges": [ + { + "originalRange": "[8,23 -> 8,23]", + "modifiedRange": "[8,23 -> 8,44]" + } + ] + }, + { + "originalRange": "[10,11)", + "modifiedRange": "[10,11)", + "innerChanges": [ + { + "originalRange": "[10,28 -> 10,28]", + "modifiedRange": "[10,28 -> 10,49]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tsx new file mode 100644 index 00000000000..5615fb34001 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tsx @@ -0,0 +1,15 @@ +export class EditorWorkerServiceDiffComputer implements IDiffComputer { + constructor(@IEditorWorkerService private readonly editorWorkerService: IEditorWorkerService) { } + + async computeDiff(textModel1: ITextModel, textModel2: ITextModel): Promise { + const diffs = await this.editorWorkerService.computeDiff(textModel1.uri, textModel2.uri, false, 1000); + if (!diffs || diffs.quitEarly) { + return null; + } + return diffs.changes.map((c) => LineDiff.fromLineChange(c, textModel1, textModel2)); + } +} + +function wait(ms: number): Promise { + return new Promise(r => setTimeout(r, ms)); +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tsx new file mode 100644 index 00000000000..e923d0ec4de --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tsx @@ -0,0 +1,80 @@ +export class EditorWorkerServiceDiffComputer implements IDiffComputer { + constructor(@IEditorWorkerService private readonly editorWorkerService: IEditorWorkerService) { } + + async computeDiff(textModel1: ITextModel, textModel2: ITextModel): Promise { + const diffs = await this.editorWorkerService.computeDiff(textModel1.uri, textModel2.uri, false, 1000); + if (!diffs || diffs.quitEarly) { + return null; + } + return EditorWorkerServiceDiffComputer.fromDiffComputationResult(diffs, textModel1, textModel2); + } + + public static fromDiffComputationResult(result: IDiffComputationResult, textModel1: ITextModel, textModel2: ITextModel): LineDiff[] { + return result.changes.map((c) => fromLineChange(c, textModel1, textModel2)); + } +} + +function fromLineChange(lineChange: ILineChange, originalTextModel: ITextModel, modifiedTextModel: ITextModel): LineDiff { + let originalRange: LineRange; + if (lineChange.originalEndLineNumber === 0) { + // Insertion + originalRange = new LineRange(lineChange.originalStartLineNumber + 1, 0); + } else { + originalRange = new LineRange(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1); + } + + let modifiedRange: LineRange; + if (lineChange.modifiedEndLineNumber === 0) { + // Deletion + modifiedRange = new LineRange(lineChange.modifiedStartLineNumber + 1, 0); + } else { + modifiedRange = new LineRange(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1); + } + + let innerDiffs = lineChange.charChanges?.map(c => fromCharChange(c)); + if (!innerDiffs) { + innerDiffs = [diffFromLineRanges(originalRange, modifiedRange)]; + } + + return new LineDiff( + originalTextModel, + originalRange, + modifiedTextModel, + modifiedRange, + innerDiffs + ); +} + +function diffFromLineRanges(originalRange: LineRange, modifiedRange: LineRange): Diff { + // [1,1) -> [100, 101) + + if (originalRange.startLineNumber !== 1 && modifiedRange.startLineNumber !== 1) { + + } + + let original = new Range( + originalRange.startLineNumber - 1, + Number.MAX_SAFE_INTEGER, + originalRange.endLineNumberExclusive - 1, + Number.MAX_SAFE_INTEGER, + ); + + let modified = new Range( + modifiedRange.startLineNumber - 1, + Number.MAX_SAFE_INTEGER, + modifiedRange.endLineNumberExclusive - 1, + Number.MAX_SAFE_INTEGER, + ); + + return new Diff( + original, + modified + ); +} + +function fromCharChange(charChange: ICharChange): Diff { + return new Diff( + new Range(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn), + new Range(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn) + ); +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json new file mode 100644 index 00000000000..4ab40ef76c3 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json @@ -0,0 +1,226 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,10)", + "modifiedRange": "[9,14)", + "innerChanges": [ + { + "originalRange": "[9,10 -> 9,10]", + "modifiedRange": "[9,10 -> 9,68]" + }, + { + "originalRange": "[9,15 -> 9,15]", + "modifiedRange": "[9,73 -> 13,16]" + }, + { + "originalRange": "[9,35 -> 9,44]", + "modifiedRange": "[13,36 -> 13,36]" + } + ] + }, + { + "originalRange": "[13,15)", + "modifiedRange": "[17,80)", + "innerChanges": [ + { + "originalRange": "[13,10 -> 13,11]", + "modifiedRange": "[17,10 -> 17,20]" + }, + { + "originalRange": "[13,12 -> 13,12]", + "modifiedRange": "[17,21 -> 17,26]" + }, + { + "originalRange": "[13,13 -> 13,13]", + "modifiedRange": "[17,27 -> 17,61]" + }, + { + "originalRange": "[13,14 -> 13,14]", + "modifiedRange": "[17,62 -> 19,5]" + }, + { + "originalRange": "[13,15 -> 13,15]", + "modifiedRange": "[19,6 -> 19,34]" + }, + { + "originalRange": "[13,17 -> 13,17]", + "modifiedRange": "[19,36 -> 20,9]" + }, + { + "originalRange": "[13,17 -> 13,18]", + "modifiedRange": "[20,9 -> 21,18]" + }, + { + "originalRange": "[13,20 -> 13,20]", + "modifiedRange": "[21,20 -> 21,62]" + }, + { + "originalRange": "[13,25 -> 13,25]", + "modifiedRange": "[21,67 -> 21,74]" + }, + { + "originalRange": "[13,26 -> 13,26]", + "modifiedRange": "[21,75 -> 26,19]" + }, + { + "originalRange": "[13,28 -> 13,29]", + "modifiedRange": "[26,21 -> 27,37]" + }, + { + "originalRange": "[13,30 -> 13,30]", + "modifiedRange": "[27,38 -> 28,12]" + }, + { + "originalRange": "[13,31 -> 13,31]", + "modifiedRange": "[28,13 -> 29,3]" + }, + { + "originalRange": "[13,32 -> 13,32]", + "modifiedRange": "[29,4 -> 29,6]" + }, + { + "originalRange": "[13,33 -> 13,33]", + "modifiedRange": "[29,7 -> 30,6]" + }, + { + "originalRange": "[13,35 -> 13,37]", + "modifiedRange": "[30,8 -> 31,4]" + }, + { + "originalRange": "[13,38 -> 13,38]", + "modifiedRange": "[31,5 -> 31,6]" + }, + { + "originalRange": "[13,39 -> 13,39]", + "modifiedRange": "[31,7 -> 31,10]" + }, + { + "originalRange": "[13,40 -> 13,40]", + "modifiedRange": "[31,11 -> 34,50]" + }, + { + "originalRange": "[13,42 -> 13,42]", + "modifiedRange": "[34,52 -> 35,19]" + }, + { + "originalRange": "[14,2 -> 14,2]", + "modifiedRange": "[36,2 -> 36,7]" + }, + { + "originalRange": "[14,3 -> 14,3]", + "modifiedRange": "[36,8 -> 39,3]" + }, + { + "originalRange": "[14,13 -> 14,14]", + "modifiedRange": "[39,13 -> 40,4]" + }, + { + "originalRange": "[14,15 -> 14,15]", + "modifiedRange": "[40,5 -> 40,16]" + }, + { + "originalRange": "[14,16 -> 14,16]", + "modifiedRange": "[40,17 -> 42,3]" + }, + { + "originalRange": "[14,17 -> 14,17]", + "modifiedRange": "[42,4 -> 42,6]" + }, + { + "originalRange": "[14,18 -> 14,18]", + "modifiedRange": "[42,7 -> 44,12]" + }, + { + "originalRange": "[14,19 -> 14,19]", + "modifiedRange": "[44,13 -> 48,21]" + }, + { + "originalRange": "[14,20 -> 14,20]", + "modifiedRange": "[48,22 -> 48,28]" + }, + { + "originalRange": "[14,21 -> 14,21]", + "modifiedRange": "[48,29 -> 48,30]" + }, + { + "originalRange": "[14,22 -> 14,22]", + "modifiedRange": "[48,31 -> 48,43]" + }, + { + "originalRange": "[14,23 -> 14,24]", + "modifiedRange": "[48,44 -> 49,12]" + }, + { + "originalRange": "[14,26 -> 14,26]", + "modifiedRange": "[49,14 -> 51,20]" + }, + { + "originalRange": "[14,27 -> 14,27]", + "modifiedRange": "[51,21 -> 51,28]" + }, + { + "originalRange": "[14,28 -> 14,28]", + "modifiedRange": "[51,29 -> 51,60]" + }, + { + "originalRange": "[14,29 -> 14,29]", + "modifiedRange": "[51,61 -> 57,21]" + }, + { + "originalRange": "[14,30 -> 14,30]", + "modifiedRange": "[57,22 -> 58,5]" + }, + { + "originalRange": "[14,31 -> 14,31]", + "modifiedRange": "[58,6 -> 58,26]" + }, + { + "originalRange": "[14,32 -> 14,32]", + "modifiedRange": "[58,27 -> 58,28]" + }, + { + "originalRange": "[14,33 -> 14,33]", + "modifiedRange": "[58,29 -> 62,7]" + }, + { + "originalRange": "[14,34 -> 14,34]", + "modifiedRange": "[62,8 -> 63,27]" + }, + { + "originalRange": "[14,35 -> 14,35]", + "modifiedRange": "[63,28 -> 69,4]" + }, + { + "originalRange": "[14,36 -> 14,36]", + "modifiedRange": "[69,5 -> 69,17]" + }, + { + "originalRange": "[14,37 -> 14,37]", + "modifiedRange": "[69,18 -> 70,4]" + }, + { + "originalRange": "[14,38 -> 14,38]", + "modifiedRange": "[70,5 -> 70,11]" + }, + { + "originalRange": "[14,39 -> 14,39]", + "modifiedRange": "[70,12 -> 75,9]" + }, + { + "originalRange": "[14,40 -> 14,40]", + "modifiedRange": "[75,10 -> 75,13]" + }, + { + "originalRange": "[14,41 -> 14,42]", + "modifiedRange": "[75,14 -> 75,48]" + }, + { + "originalRange": "[14,43 -> 14,43]", + "modifiedRange": "[75,49 -> 79,2]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json new file mode 100644 index 00000000000..281c35a1110 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json @@ -0,0 +1,38 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,10)", + "modifiedRange": "[9,53)", + "innerChanges": null + }, + { + "originalRange": "[11,11)", + "modifiedRange": "[54,73)", + "innerChanges": null + }, + { + "originalRange": "[13,15)", + "modifiedRange": "[75,80)", + "innerChanges": [ + { + "originalRange": "[13,10 -> 13,20]", + "modifiedRange": "[75,10 -> 77,42]" + }, + { + "originalRange": "[13,25 -> 14,9]", + "modifiedRange": "[77,47 -> 78,3]" + }, + { + "originalRange": "[14,13 -> 14,37]", + "modifiedRange": "[78,7 -> 78,112]" + }, + { + "originalRange": "[14,40 -> 14,43]", + "modifiedRange": "[78,115 -> 79,2]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tsx new file mode 100644 index 00000000000..a719676ac6a --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tsx @@ -0,0 +1,8 @@ +function cloneTypeReference(source: TypeReference): TypeReference { + const type = createType(source.flags); + type.symbol = source.symbol; + type.objectFlags = source.objectFlags; + type.target = source.target; + type.typeArguments = source.typeArguments; + return type; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tsx new file mode 100644 index 00000000000..933eb428c05 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tsx @@ -0,0 +1,25 @@ +function cloneTypeReference(source: TypeReference): TypeReference { + const type = createType(source.flags); + type.symbol = source.symbol; + type.objectFlags = source.objectFlags; + type.target = source.target; + type.resolvedTypeArguments = source.resolvedTypeArguments; + return type; +} + +function createDeferredTypeReference(): DeferredTypeReference { + const aliasSymbol = getAliasSymbolForTypeNode(node); + const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol); + type.target = target; + type.node = node; + type.mapper = mapper; + type.aliasSymbol = aliasSymbol; + return type; +} + +function getTypeArguments(type: TypeReference): ReadonlyArray { + if (!type.resolvedTypeArguments) { + const node = type.node; + } + return type.resolvedTypeArguments; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json new file mode 100644 index 00000000000..05e8449cfde --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json @@ -0,0 +1,38 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[6,7)", + "modifiedRange": "[6,17)", + "innerChanges": [ + { + "originalRange": "[6,10 -> 6,11]", + "modifiedRange": "[6,10 -> 6,19]" + }, + { + "originalRange": "[6,33 -> 6,33]", + "modifiedRange": "[6,41 -> 7,12]" + }, + { + "originalRange": "[6,37 -> 6,37]", + "modifiedRange": "[7,16 -> 12,39]" + }, + { + "originalRange": "[6,46 -> 6,46]", + "modifiedRange": "[12,48 -> 16,35]" + } + ] + }, + { + "originalRange": "[9,9)", + "modifiedRange": "[19,26)", + "innerChanges": [ + { + "originalRange": "[9,1 -> 9,1]", + "modifiedRange": "[19,1 -> 26,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json new file mode 100644 index 00000000000..224c8e68b2f --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json @@ -0,0 +1,33 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[6,7)", + "modifiedRange": "[6,17)", + "innerChanges": [ + { + "originalRange": "[6,10 -> 6,11]", + "modifiedRange": "[6,10 -> 6,19]" + }, + { + "originalRange": "[6,33 -> 6,33]", + "modifiedRange": "[6,41 -> 7,12]" + }, + { + "originalRange": "[6,37 -> 6,37]", + "modifiedRange": "[7,16 -> 12,20]" + }, + { + "originalRange": "[6,46 -> 6,46]", + "modifiedRange": "[12,29 -> 16,35]" + } + ] + }, + { + "originalRange": "[9,9)", + "modifiedRange": "[19,26)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tsx new file mode 100644 index 00000000000..dd606465f8b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tsx @@ -0,0 +1,8 @@ +function compileProgram(): ExitStatus { + // First get any syntactic errors. + var diagnostics = program.getSyntacticDiagnostics(); + reportDiagnostics(diagnostics); + + // If we didn't have any syntactic errors, then also try getting the global and + // semantic errors. + if (diagnostics.length === 0) \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tsx new file mode 100644 index 00000000000..f001c8b1c9b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tsx @@ -0,0 +1,9 @@ +function compileProgram(): ExitStatus { + let diagnostics: Diagnostic[]; + + // First get and report any syntactic errors. + diagnostics = program.getSyntacticDiagnostics(); + + // If we didn't have any syntactic errors, then also try getting the global and + // semantic errors. + if (diagnostics.length === 0) { \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json new file mode 100644 index 00000000000..cf382d177b0 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json @@ -0,0 +1,50 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,6)", + "modifiedRange": "[2,7)", + "innerChanges": [ + { + "originalRange": "[2,5 -> 2,15]", + "modifiedRange": "[2,5 -> 2,6]" + }, + { + "originalRange": "[2,18 -> 3,9]", + "modifiedRange": "[2,9 -> 2,9]" + }, + { + "originalRange": "[3,20 -> 3,22]", + "modifiedRange": "[2,20 -> 2,21]" + }, + { + "originalRange": "[3,23 -> 3,43]", + "modifiedRange": "[2,22 -> 2,22]" + }, + { + "originalRange": "[3,53 -> 4,35]", + "modifiedRange": "[2,32 -> 2,34]" + }, + { + "originalRange": "[5,1 -> 5,1]", + "modifiedRange": "[3,1 -> 3,5]" + }, + { + "originalRange": "[6,1 -> 6,1]", + "modifiedRange": "[4,1 -> 7,1]" + } + ] + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[8,35 -> 8,35]", + "modifiedRange": "[9,35 -> 9,36]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json new file mode 100644 index 00000000000..0ffebb88a46 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json @@ -0,0 +1,42 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,5)", + "modifiedRange": "[2,6)", + "innerChanges": [ + { + "originalRange": "[2,1 -> 2,1]", + "modifiedRange": "[2,1 -> 4,1]" + }, + { + "originalRange": "[2,20 -> 2,20]", + "modifiedRange": "[4,20 -> 4,31]" + }, + { + "originalRange": "[2,39 -> 2,40]", + "modifiedRange": "[4,50 -> 4,50]" + }, + { + "originalRange": "[3,5 -> 3,9]", + "modifiedRange": "[5,5 -> 5,5]" + }, + { + "originalRange": "[3,57 -> 4,36]", + "modifiedRange": "[5,53 -> 5,53]" + } + ] + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[8,35 -> 8,35]", + "modifiedRange": "[9,35 -> 9,36]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tsx new file mode 100644 index 00000000000..541a9211b39 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tsx @@ -0,0 +1,138 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IHistoryNavigationWidget } from 'vs/base/browser/history'; +import { IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview'; +import { FindInput, IFindInputOptions } from 'vs/base/browser/ui/findinput/findInput'; +import { IReplaceInputOptions, ReplaceInput } from 'vs/base/browser/ui/findinput/replaceInput'; +import { HistoryInputBox, IHistoryInputOptions } from 'vs/base/browser/ui/inputbox/inputBox'; +import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; +import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { localize } from 'vs/nls'; +import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; + +export const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize('suggestWidgetVisible', "Whether suggestion are visible")); + +const HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus'; +const HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled'; +const HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled'; + +export interface IHistoryNavigationContext extends IDisposable { + scopedContextKeyService: IContextKeyService; + historyNavigationForwardsEnablement: IContextKey; + historyNavigationBackwardsEnablement: IContextKey; +} + +let lastFocusedWidget: IHistoryNavigationWidget | undefined = undefined; +const widgets: IHistoryNavigationWidget[] = []; + +export function registerAndCreateHistoryNavigationContext(contextKeyService: IContextKeyService, widget: IHistoryNavigationWidget): IHistoryNavigationContext { + if (widgets.includes(widget)) { + throw new Error('Cannot register the same widget multiple times'); + } + + widgets.push(widget); + const disposableStore = new DisposableStore(); + const scopedContextKeyService = disposableStore.add(contextKeyService.createScoped(widget.element)); + const historyNavigationWidgetFocus = new RawContextKey(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService); + const historyNavigationForwardsEnablement = new RawContextKey(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService); + const historyNavigationBackwardsEnablement = new RawContextKey(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService); + + const onDidFocus = () => { + historyNavigationWidgetFocus.set(true); + lastFocusedWidget = widget; + }; + + const onDidBlur = () => { + historyNavigationWidgetFocus.set(false); + if (lastFocusedWidget === widget) { + lastFocusedWidget = undefined; + } + }; + + // Check for currently being focused + if (widget.element === document.activeElement) { + onDidFocus(); + } + + disposableStore.add(widget.onDidFocus(() => onDidFocus())); + disposableStore.add(widget.onDidBlur(() => onDidBlur())); + disposableStore.add(toDisposable(() => { + widgets.splice(widgets.indexOf(widget), 1); + onDidBlur(); + })); + + return { + scopedContextKeyService, + historyNavigationForwardsEnablement, + historyNavigationBackwardsEnablement, + dispose() { + disposableStore.dispose(); + } + }; +} + +export class ContextScopedHistoryInputBox extends HistoryInputBox { + + constructor(container: HTMLElement, contextViewProvider: IContextViewProvider | undefined, options: IHistoryInputOptions, + @IContextKeyService contextKeyService: IContextKeyService + ) { + super(container, contextViewProvider, options); + this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this)); + } + +} + +export class ContextScopedFindInput extends FindInput { + + constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider, options: IFindInputOptions, + @IContextKeyService contextKeyService: IContextKeyService + ) { + super(container, contextViewProvider, options); + this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox)); + } +} + +export class ContextScopedReplaceInput extends ReplaceInput { + + constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider | undefined, options: IReplaceInputOptions, + @IContextKeyService contextKeyService: IContextKeyService, showReplaceOptions: boolean = false + ) { + super(container, contextViewProvider, showReplaceOptions, options); + this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox)); + } + +} + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: 'history.showPrevious', + weight: KeybindingWeight.WorkbenchContrib, + when: ContextKeyExpr.and( + ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), + ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true), + historyNavigationVisible.isEqualTo(false), + ), + primary: KeyCode.UpArrow, + secondary: [KeyMod.Alt | KeyCode.UpArrow], + handler: (accessor) => { + lastFocusedWidget?.showPreviousValue(); + } +}); + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: 'history.showNext', + weight: KeybindingWeight.WorkbenchContrib, + when: ContextKeyExpr.and( + ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), + ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true), + historyNavigationVisible.isEqualTo(false), + ), + primary: KeyCode.DownArrow, + secondary: [KeyMod.Alt | KeyCode.DownArrow], + handler: (accessor) => { + lastFocusedWidget?.showNextValue(); + } +}); diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tsx new file mode 100644 index 00000000000..0278e0c0112 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tsx @@ -0,0 +1,138 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IHistoryNavigationWidget } from 'vs/base/browser/history'; +import { IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview'; +import { FindInput, IFindInputOptions } from 'vs/base/browser/ui/findinput/findInput'; +import { IReplaceInputOptions, ReplaceInput } from 'vs/base/browser/ui/findinput/replaceInput'; +import { HistoryInputBox, IHistoryInputOptions } from 'vs/base/browser/ui/inputbox/inputBox'; +import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; +import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { localize } from 'vs/nls'; +import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; + +export const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize('suggestWidgetVisible', "Whether suggestion are visible")); + +const HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus'; +const HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled'; +const HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled'; + +export interface IHistoryNavigationContext extends IDisposable { + historyNavigationForwardsEnablement: IContextKey; + historyNavigationBackwardsEnablement: IContextKey; +} + +let lastFocusedWidget: IHistoryNavigationWidget | undefined = undefined; +const widgets: IHistoryNavigationWidget[] = []; + +export function registerAndCreateHistoryNavigationContext(scopedContextKeyService: IContextKeyService, widget: IHistoryNavigationWidget): IHistoryNavigationContext { + if (widgets.includes(widget)) { + throw new Error('Cannot register the same widget multiple times'); + } + + widgets.push(widget); + const disposableStore = new DisposableStore(); + const historyNavigationWidgetFocus = new RawContextKey(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService); + const historyNavigationForwardsEnablement = new RawContextKey(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService); + const historyNavigationBackwardsEnablement = new RawContextKey(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService); + + const onDidFocus = () => { + historyNavigationWidgetFocus.set(true); + lastFocusedWidget = widget; + }; + + const onDidBlur = () => { + historyNavigationWidgetFocus.set(false); + if (lastFocusedWidget === widget) { + lastFocusedWidget = undefined; + } + }; + + // Check for currently being focused + if (widget.element === document.activeElement) { + onDidFocus(); + } + + disposableStore.add(widget.onDidFocus(() => onDidFocus())); + disposableStore.add(widget.onDidBlur(() => onDidBlur())); + disposableStore.add(toDisposable(() => { + widgets.splice(widgets.indexOf(widget), 1); + onDidBlur(); + })); + + return { + historyNavigationForwardsEnablement, + historyNavigationBackwardsEnablement, + dispose() { + disposableStore.dispose(); + } + }; +} + +export class ContextScopedHistoryInputBox extends HistoryInputBox { + + constructor(container: HTMLElement, contextViewProvider: IContextViewProvider | undefined, options: IHistoryInputOptions, + @IContextKeyService contextKeyService: IContextKeyService + ) { + super(container, contextViewProvider, options); + const scopedContextKeyService = this._register(contextKeyService.createScoped(this.element)); + this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this)); + } + +} + +export class ContextScopedFindInput extends FindInput { + + constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider, options: IFindInputOptions, + @IContextKeyService contextKeyService: IContextKeyService + ) { + super(container, contextViewProvider, options); + const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element)); + this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox)); + } +} + +export class ContextScopedReplaceInput extends ReplaceInput { + + constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider | undefined, options: IReplaceInputOptions, + @IContextKeyService contextKeyService: IContextKeyService, showReplaceOptions: boolean = false + ) { + super(container, contextViewProvider, showReplaceOptions, options); + const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element)); + this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox)); + } + +} + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: 'history.showPrevious', + weight: KeybindingWeight.WorkbenchContrib, + when: ContextKeyExpr.and( + ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), + ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true), + historyNavigationVisible.isEqualTo(false), + ), + primary: KeyCode.UpArrow, + secondary: [KeyMod.Alt | KeyCode.UpArrow], + handler: (accessor) => { + lastFocusedWidget?.showPreviousValue(); + } +}); + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: 'history.showNext', + weight: KeybindingWeight.WorkbenchContrib, + when: ContextKeyExpr.and( + ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), + ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true), + historyNavigationVisible.isEqualTo(false), + ), + primary: KeyCode.DownArrow, + secondary: [KeyMod.Alt | KeyCode.DownArrow], + handler: (accessor) => { + lastFocusedWidget?.showNextValue(); + } +}); diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json new file mode 100644 index 00000000000..97b5cecfe71 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json @@ -0,0 +1,104 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[24,25)", + "modifiedRange": "[24,24)", + "innerChanges": [ + { + "originalRange": "[24,1 -> 25,1]", + "modifiedRange": "[24,1 -> 24,1]" + } + ] + }, + { + "originalRange": "[32,33)", + "modifiedRange": "[31,32)", + "innerChanges": [ + { + "originalRange": "[32,59 -> 32,59]", + "modifiedRange": "[31,59 -> 31,60]" + }, + { + "originalRange": "[32,61 -> 32,61]", + "modifiedRange": "[31,62 -> 31,67]" + } + ] + }, + { + "originalRange": "[39,40)", + "modifiedRange": "[38,38)", + "innerChanges": [ + { + "originalRange": "[39,1 -> 40,1]", + "modifiedRange": "[38,1 -> 38,1]" + } + ] + }, + { + "originalRange": "[69,70)", + "modifiedRange": "[67,67)", + "innerChanges": [ + { + "originalRange": "[69,1 -> 70,1]", + "modifiedRange": "[67,1 -> 67,1]" + } + ] + }, + { + "originalRange": "[84,85)", + "modifiedRange": "[81,83)", + "innerChanges": [ + { + "originalRange": "[84,1 -> 84,1]", + "modifiedRange": "[81,1 -> 82,1]" + }, + { + "originalRange": "[84,60 -> 84,60]", + "modifiedRange": "[82,60 -> 82,61]" + }, + { + "originalRange": "[84,62 -> 84,62]", + "modifiedRange": "[82,63 -> 82,68]" + } + ] + }, + { + "originalRange": "[95,96)", + "modifiedRange": "[93,95)", + "innerChanges": [ + { + "originalRange": "[95,1 -> 95,1]", + "modifiedRange": "[93,1 -> 94,1]" + }, + { + "originalRange": "[95,60 -> 95,60]", + "modifiedRange": "[94,60 -> 94,61]" + }, + { + "originalRange": "[95,62 -> 95,62]", + "modifiedRange": "[94,63 -> 94,68]" + } + ] + }, + { + "originalRange": "[105,106)", + "modifiedRange": "[104,106)", + "innerChanges": [ + { + "originalRange": "[105,1 -> 105,1]", + "modifiedRange": "[104,1 -> 105,1]" + }, + { + "originalRange": "[105,60 -> 105,60]", + "modifiedRange": "[105,60 -> 105,61]" + }, + { + "originalRange": "[105,62 -> 105,62]", + "modifiedRange": "[105,63 -> 105,68]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json new file mode 100644 index 00000000000..19c06756bd6 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json @@ -0,0 +1,73 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[24,25)", + "modifiedRange": "[24,24)", + "innerChanges": null + }, + { + "originalRange": "[32,33)", + "modifiedRange": "[31,32)", + "innerChanges": [ + { + "originalRange": "[32,59 -> 32,61]", + "modifiedRange": "[31,59 -> 31,67]" + } + ] + }, + { + "originalRange": "[39,40)", + "modifiedRange": "[38,38)", + "innerChanges": null + }, + { + "originalRange": "[69,70)", + "modifiedRange": "[67,67)", + "innerChanges": null + }, + { + "originalRange": "[84,85)", + "modifiedRange": "[81,83)", + "innerChanges": [ + { + "originalRange": "[84,1 -> 84,1]", + "modifiedRange": "[81,1 -> 82,1]" + }, + { + "originalRange": "[84,60 -> 84,62]", + "modifiedRange": "[82,60 -> 82,68]" + } + ] + }, + { + "originalRange": "[95,96)", + "modifiedRange": "[93,95)", + "innerChanges": [ + { + "originalRange": "[95,1 -> 95,1]", + "modifiedRange": "[93,1 -> 94,1]" + }, + { + "originalRange": "[95,60 -> 95,62]", + "modifiedRange": "[94,60 -> 94,68]" + } + ] + }, + { + "originalRange": "[105,106)", + "modifiedRange": "[104,106)", + "innerChanges": [ + { + "originalRange": "[105,1 -> 105,1]", + "modifiedRange": "[104,1 -> 105,1]" + }, + { + "originalRange": "[105,60 -> 105,62]", + "modifiedRange": "[105,60 -> 105,68]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tsx new file mode 100644 index 00000000000..7cdc8bb2e94 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tsx @@ -0,0 +1,6 @@ +import { assertIsDefined } from 'vs/base/common/types'; +import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { MenuId, Action2, IAction2Options, IMenuService, SubmenuItemAction } from 'vs/platform/actions/common/actions'; +import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem'; +import { parseLinkedText } from 'vs/base/common/linkedText'; +import { IOpenerService } from 'vs/platform/opener/common/opener'; \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tsx new file mode 100644 index 00000000000..22f196b132b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tsx @@ -0,0 +1,6 @@ +import { assertIsDefined } from 'vs/base/common/types'; +import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { MenuId, Action2, IAction2Options, SubmenuItemAction } from 'vs/platform/actions/common/actions'; +import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem'; +import { parseLinkedText } from 'vs/base/common/linkedText'; +import { IOpenerService } from 'vs/platform/opener/common/opener'; \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json new file mode 100644 index 00000000000..7cc8336d296 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,43 -> 3,57]", + "modifiedRange": "[3,43 -> 3,43]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json new file mode 100644 index 00000000000..72780d6279e --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,44 -> 3,58]", + "modifiedRange": "[3,44 -> 3,44]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tsx new file mode 100644 index 00000000000..87b71c28531 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tsx @@ -0,0 +1,9 @@ +import { assertIsDefined } from 'vs/base/common/types'; +import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { MenuId, Action2, IAction2Options, IMenuServiceFooManager, ServiceManagerLocator } from 'vs/platform/actions/common/actions'; +import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem'; +import { parseLinkedText } from 'vs/base/common/linkedText'; +import { IOpenerService } from 'vs/platform/opener/common/opener'; +ISFM,SML,SFMKL + +console.log(MenuId, Action2, IAction2Options, IMenuServiceFooManager, ServiceManagerLocator); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tsx new file mode 100644 index 00000000000..97340f5c4ba --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tsx @@ -0,0 +1,9 @@ +import { assertIsDefined } from 'vs/base/common/types'; +import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { MenuId, Action2, IAction2Options, ServiceManagerLocator } from 'vs/platform/actions/common/actions'; +import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem'; +import { parseLinkedText } from 'vs/base/common/linkedText'; +import { IOpenerService } from 'vs/platform/opener/common/opener'; +SML + +console.log(MenuId, Action2, IAction2Options, ServiceManagerLocator); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json new file mode 100644 index 00000000000..b26f3c751f7 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json @@ -0,0 +1,40 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,43 -> 3,67]", + "modifiedRange": "[3,43 -> 3,43]" + } + ] + }, + { + "originalRange": "[7,8)", + "modifiedRange": "[7,8)", + "innerChanges": [ + { + "originalRange": "[7,1 -> 7,6]", + "modifiedRange": "[7,1 -> 7,1]" + }, + { + "originalRange": "[7,9 -> 7,15]", + "modifiedRange": "[7,4 -> 7,4]" + } + ] + }, + { + "originalRange": "[9,10)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[9,46 -> 9,70]", + "modifiedRange": "[9,46 -> 9,46]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json new file mode 100644 index 00000000000..ce94c0a35d5 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json @@ -0,0 +1,40 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,44 -> 3,68]", + "modifiedRange": "[3,44 -> 3,44]" + } + ] + }, + { + "originalRange": "[7,8)", + "modifiedRange": "[7,8)", + "innerChanges": [ + { + "originalRange": "[7,1 -> 7,6]", + "modifiedRange": "[7,1 -> 7,1]" + }, + { + "originalRange": "[7,9 -> 7,15]", + "modifiedRange": "[7,4 -> 7,4]" + } + ] + }, + { + "originalRange": "[9,10)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[9,47 -> 9,71]", + "modifiedRange": "[9,47 -> 9,47]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tsx new file mode 100644 index 00000000000..29c4af7cfa7 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tsx @@ -0,0 +1,3 @@ +import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors'; +import { EditorGutter, IGutterItemInfo, IGutterItemView } from '../editorGutter'; +import { CodeEditorView } from './codeEditorView'; diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tsx new file mode 100644 index 00000000000..154166e11fc --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tsx @@ -0,0 +1,3 @@ +import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors'; +import { EditorGutter, IGutterItemInfo, IGutterItemView } from '../editorGutter'; +import { CodeEditorView, TitleMenu } from './codeEditorView'; diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json new file mode 100644 index 00000000000..bb4cf94c997 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,24 -> 3,24]", + "modifiedRange": "[3,24 -> 3,35]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json new file mode 100644 index 00000000000..bb4cf94c997 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,4)", + "innerChanges": [ + { + "originalRange": "[3,24 -> 3,24]", + "modifiedRange": "[3,24 -> 3,35]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tsx new file mode 100644 index 00000000000..5b19ed203f4 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tsx @@ -0,0 +1 @@ +const sequence2 = new SequenceFromIntArray(tgtDocLines); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tsx new file mode 100644 index 00000000000..7e50aad3276 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tsx @@ -0,0 +1 @@ +const sequence2 = new LineSequence(tgtDocLines, modifiedLines); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json new file mode 100644 index 00000000000..7a17e732dc0 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json @@ -0,0 +1,24 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[1,2)", + "modifiedRange": "[1,2)", + "innerChanges": [ + { + "originalRange": "[1,23 -> 1,23]", + "modifiedRange": "[1,23 -> 1,27]" + }, + { + "originalRange": "[1,31 -> 1,43]", + "modifiedRange": "[1,35 -> 1,35]" + }, + { + "originalRange": "[1,50 -> 1,50]", + "modifiedRange": "[1,42 -> 1,57]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json new file mode 100644 index 00000000000..88e7b24abaf --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json @@ -0,0 +1,24 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[1,2)", + "modifiedRange": "[1,2)", + "innerChanges": [ + { + "originalRange": "[1,23 -> 1,23]", + "modifiedRange": "[1,23 -> 1,27]" + }, + { + "originalRange": "[1,31 -> 1,43]", + "modifiedRange": "[1,35 -> 1,35]" + }, + { + "originalRange": "[1,55 -> 1,55]", + "modifiedRange": "[1,47 -> 1,62]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tsx new file mode 100644 index 00000000000..795319a6f1e --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tsx @@ -0,0 +1,5 @@ +interface Test { + getDecorationsInViewport(visibleRange: Range): ViewModelDecoration[]; + getViewLineRenderingData(visibleRange: Range, lineNumber: number): ViewLineRenderingData; + getViewLineData(lineNumber: number): ViewLineData; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tsx new file mode 100644 index 00000000000..0a28ea569d5 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tsx @@ -0,0 +1,6 @@ +interface Test { + getDecorationsInViewport(visibleRange: Range): ViewModelDecoration[]; + getViewportViewLineRenderingData(visibleRange: Range, lineNumber: number): ViewLineRenderingData; + getViewLineRenderingData(lineNumber: number): ViewLineRenderingData; + getViewLineData(lineNumber: number): ViewLineData; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json new file mode 100644 index 00000000000..60160493994 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json @@ -0,0 +1,24 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,5)", + "innerChanges": [ + { + "originalRange": "[3,1 -> 3,2]", + "modifiedRange": "[3,1 -> 3,5]" + }, + { + "originalRange": "[3,6 -> 3,6]", + "modifiedRange": "[3,9 -> 3,17]" + }, + { + "originalRange": "[3,59 -> 3,59]", + "modifiedRange": "[3,70 -> 4,41]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json new file mode 100644 index 00000000000..d18aa04c8c1 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json @@ -0,0 +1,24 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[3,4)", + "modifiedRange": "[3,5)", + "innerChanges": [ + { + "originalRange": "[3,1 -> 3,2]", + "modifiedRange": "[3,1 -> 3,5]" + }, + { + "originalRange": "[3,9 -> 3,9]", + "modifiedRange": "[3,12 -> 3,20]" + }, + { + "originalRange": "[3,91 -> 3,91]", + "modifiedRange": "[3,102 -> 4,73]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tsx new file mode 100644 index 00000000000..3dc9ae9bef7 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tsx @@ -0,0 +1,12 @@ +const childEndsAfterEnd = lengthGreaterThanEqual(nodeOffsetEnd, endOffset); +if (childEndsAfterEnd) { + // No child after this child in the requested window, don't recurse + node = child; + level++; + continue whileLoop; +} + +const shouldContinue = collectBrackets(child, nodeOffsetStart, nodeOffsetEnd, startOffset, endOffset, push, level + 1, levelPerBracketType); +if (!shouldContinue) { + return false; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tsx new file mode 100644 index 00000000000..ab46b84fb0b --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tsx @@ -0,0 +1,12 @@ +const childEndsAfterEnd = lengthGreaterThanEqual(nodeOffsetEnd, endOffset); +if (childEndsAfterEnd) { + // No child after this child in the requested window, don't recurse + node = child; + level++; + continue whileLoop; +} + +const shouldContinue = collectBrackets(child, nodeOffsetStart, nodeOffsetEnd, startOffset, endOffset, push, level + 1, levelPerBracket + 1, levelPerBracketType); +if (!shouldContinue) { + return false; +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json new file mode 100644 index 00000000000..384076f8c92 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,10)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[9,115 -> 9,115]", + "modifiedRange": "[9,115 -> 9,136]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json new file mode 100644 index 00000000000..56c25bcd277 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,10)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[9,135 -> 9,135]", + "modifiedRange": "[9,135 -> 9,156]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tsx new file mode 100644 index 00000000000..868802afac9 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tsx @@ -0,0 +1,28 @@ +[ + { + "identifier": { + "id": "pflannery.vscode-versionlens", + "uuid": "07fc4a0a-11fc-4121-ba9a-f0d534c729d8" + }, + "preRelease": false, + "version": "1.0.9", + "installed": true + }, + { + "identifier": { + "id": "sumneko.lua", + "uuid": "3a15b5a7-be12-47e3-8445-88ee3eabc8b2" + }, + "preRelease": false, + "version": "3.5.6", + "installed": true + }, + { + "identifier": { + "id": "vscode.bat", + "uuid": "5ef96c58-076f-4167-8e40-62c9deb00496" + }, + "preRelease": false, + "version": "1.0.0" + } +] \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tsx new file mode 100644 index 00000000000..ef593d66917 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tsx @@ -0,0 +1,19 @@ +[ + { + "identifier": { + "id": "pflannery.vscode-versionlens", + "uuid": "07fc4a0a-11fc-4121-ba9a-f0d534c729d8" + }, + "preRelease": false, + "version": "1.0.9", + "installed": true + }, + { + "identifier": { + "id": "vscode.bat", + "uuid": "5ef96c58-076f-4167-8e40-62c9deb00496" + }, + "preRelease": false, + "version": "1.0.0" + } +] \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json new file mode 100644 index 00000000000..6dad24b08fb --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[13,22)", + "modifiedRange": "[13,13)", + "innerChanges": [ + { + "originalRange": "[13,1 -> 22,1]", + "modifiedRange": "[13,1 -> 13,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json new file mode 100644 index 00000000000..e39c47aca0a --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json @@ -0,0 +1,11 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[13,22)", + "modifiedRange": "[13,13)", + "innerChanges": null + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tsx new file mode 100644 index 00000000000..8a2d25d99ac --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tsx @@ -0,0 +1,7 @@ +interface Test { + /** + * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter. + * Defaults to 'mouseover'. + */ + showFoldingControls?: 'always' | 'mouseover'; +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tsx new file mode 100644 index 00000000000..1a03e3ab270 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tsx @@ -0,0 +1,7 @@ +interface Test { + /** + * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter. + * Defaults to 'mouseover'. + */ + showFoldingControls?: 'always' | 'never' | 'mouseover'; +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json new file mode 100644 index 00000000000..892d03e87e0 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[6,7)", + "modifiedRange": "[6,7)", + "innerChanges": [ + { + "originalRange": "[6,35 -> 6,35]", + "modifiedRange": "[6,35 -> 6,45]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json new file mode 100644 index 00000000000..b536d378053 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[6,7)", + "modifiedRange": "[6,7)", + "innerChanges": [ + { + "originalRange": "[6,39 -> 6,39]", + "modifiedRange": "[6,39 -> 6,49]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tsx new file mode 100644 index 00000000000..0436fa2afb8 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tsx @@ -0,0 +1,20 @@ +class Test { + protected readonly checkboxesVisible = observableFromEvent( + this.configurationService.onDidChangeConfiguration, + () => /** @description checkboxesVisible */ this.configurationService.getValue('mergeEditor.showCheckboxes') ?? false + ); + + protected readonly showDeletionMarkers = observableFromEvent( + this.configurationService.onDidChangeConfiguration, + () => /** @description showDeletionMarkers */ this.configurationService.getValue('mergeEditor.showDeletionMarkers') + ); + + public readonly editor = this.instantiationService.createInstance( + CodeEditorWidget, + this.htmlElements.editor, + {}, + { + contributions: this.getEditorContributions(), + } + ); +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tsx new file mode 100644 index 00000000000..554f356ffd5 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tsx @@ -0,0 +1,25 @@ +class Test { + protected readonly checkboxesVisible = observableFromEvent( + this.configurationService.onDidChangeConfiguration, + () => /** @description checkboxesVisible */ this.configurationService.getValue('mergeEditor.showCheckboxes') ?? false + ); + + protected readonly showDeletionMarkers = observableFromEvent( + this.configurationService.onDidChangeConfiguration, + () => /** @description showDeletionMarkers */ this.configurationService.getValue('mergeEditor.showDeletionMarkers') ?? true + ); + + protected readonly useSimplifiedDecorations = observableFromEvent( + this.configurationService.onDidChangeConfiguration, + () => /** @description useSimplifiedDecorations */ this.configurationService.getValue('mergeEditor.useSimplifiedDecorations') ?? false + ); + + public readonly editor = this.instantiationService.createInstance( + CodeEditorWidget, + this.htmlElements.editor, + {}, + { + contributions: this.getEditorContributions(), + } + ); +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json new file mode 100644 index 00000000000..119c6f8a760 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,10)", + "modifiedRange": "[9,15)", + "innerChanges": [ + { + "originalRange": "[9,124 -> 9,124]", + "modifiedRange": "[9,124 -> 14,143]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json new file mode 100644 index 00000000000..119c6f8a760 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[9,10)", + "modifiedRange": "[9,15)", + "innerChanges": [ + { + "originalRange": "[9,124 -> 9,124]", + "modifiedRange": "[9,124 -> 14,143]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tsx new file mode 100644 index 00000000000..c7454793249 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tsx @@ -0,0 +1,14 @@ +import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +import { Disposable } from 'vs/base/common/lifecycle'; +import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; +import { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, ServicesAccessor } from 'vs/editor/browser/editorExtensions'; +import { IEditorContribution } from 'vs/editor/common/editorCommon'; +import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; +import * as languages from 'vs/editor/common/languages'; +import { TriggerContext } from 'vs/editor/contrib/parameterHints/browser/parameterHintsModel'; +import { Context } from 'vs/editor/contrib/parameterHints/browser/provideSignatureHelp'; +import * as nls from 'vs/nls'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { ParameterHintsWidget } from './parameterHintsWidget'; diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tsx new file mode 100644 index 00000000000..f08a014aafe --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tsx @@ -0,0 +1,16 @@ +import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +import { Lazy } from 'vs/base/common/lazy'; +import { Disposable } from 'vs/base/common/lifecycle'; +import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; +import { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, ServicesAccessor } from 'vs/editor/browser/editorExtensions'; +import { IEditorContribution } from 'vs/editor/common/editorCommon'; +import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; +import * as languages from 'vs/editor/common/languages'; +import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures'; +import { ParameterHintsModel, TriggerContext } from 'vs/editor/contrib/parameterHints/browser/parameterHintsModel'; +import { Context } from 'vs/editor/contrib/parameterHints/browser/provideSignatureHelp'; +import * as nls from 'vs/nls'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { ParameterHintsWidget } from './parameterHintsWidget'; diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json new file mode 100644 index 00000000000..d5eeb182fe0 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json @@ -0,0 +1,30 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,2)", + "modifiedRange": "[2,3)", + "innerChanges": [ + { + "originalRange": "[2,1 -> 2,1]", + "modifiedRange": "[2,1 -> 3,1]" + } + ] + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[9,11)", + "innerChanges": [ + { + "originalRange": "[8,8 -> 8,8]", + "modifiedRange": "[9,8 -> 10,8]" + }, + { + "originalRange": "[8,10 -> 8,10]", + "modifiedRange": "[10,10 -> 10,31]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json new file mode 100644 index 00000000000..f1fec3ef30e --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json @@ -0,0 +1,21 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[2,2)", + "modifiedRange": "[2,3)", + "innerChanges": null + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[9,11)", + "innerChanges": [ + { + "originalRange": "[8,10 -> 8,10]", + "modifiedRange": "[9,10 -> 10,31]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tsx new file mode 100644 index 00000000000..d32a16fbbd3 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tsx @@ -0,0 +1,17 @@ +test(() => { + it(() => { + console.log(1); + }) + + it(() => { + }) +}); + +test(() => { + it(() => { + console.log(1); + }) + + it(() => { + }) +}); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tsx new file mode 100644 index 00000000000..ded30de58ef --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tsx @@ -0,0 +1,26 @@ +test(() => { + it(() => { + console.log(1); + }) + + it(() => { +2 console.log(2); + }) + + it(() => { + + }) +}); + +test(() => { + it(() => { + console.log(1); + }) + + it(() => { + }) + + it(() => { + + }) +}); \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json new file mode 100644 index 00000000000..82426cbc575 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json @@ -0,0 +1,26 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[7,7)", + "modifiedRange": "[7,12)", + "innerChanges": [ + { + "originalRange": "[7,1 -> 7,1]", + "modifiedRange": "[7,1 -> 12,1]" + } + ] + }, + { + "originalRange": "[17,17)", + "modifiedRange": "[22,26)", + "innerChanges": [ + { + "originalRange": "[17,1 -> 17,1]", + "modifiedRange": "[22,1 -> 26,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json new file mode 100644 index 00000000000..0e145b78870 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tsx", + "modifiedFileName": "./2.tsx", + "diffs": [ + { + "originalRange": "[7,7)", + "modifiedRange": "[7,12)", + "innerChanges": null + }, + { + "originalRange": "[17,17)", + "modifiedRange": "[22,26)", + "innerChanges": null + } + ] +} \ No newline at end of file From d5d6647f39ea81e2cacde3a6e4393ac07e29cdd0 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Tue, 1 Nov 2022 19:07:36 +0100 Subject: [PATCH 2/8] Renames tsx files to tst files, configures tst files as typescript files in local .vscode settings --- .vscode/settings.json | 3 ++- src/vs/editor/test/node/diffing/README.md | 2 +- .../node/diffing/fixtures/bracket-aligning/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/bracket-aligning/{2.tsx => 2.tst} | 0 .../fixtures/bracket-aligning/experimental.actual.diff.json | 6 +++--- .../fixtures/bracket-aligning/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/indentation/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/indentation/{2.tsx => 2.tst} | 0 .../fixtures/indentation/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/indentation/smart.actual.diff.json | 6 +++--- .../node/diffing/fixtures/method-splitting/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/method-splitting/{2.tsx => 2.tst} | 0 .../fixtures/method-splitting/experimental.actual.diff.json | 6 +++--- .../fixtures/method-splitting/smart.actual.diff.json | 6 +++--- .../fixtures/minimal-diff-character/{1.tsx => 1.tst} | 0 .../fixtures/minimal-diff-character/{2.tsx => 2.tst} | 0 .../minimal-diff-character/experimental.actual.diff.json | 6 +++--- .../fixtures/minimal-diff-character/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/subword/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/subword/{2.tsx => 2.tst} | 0 .../diffing/fixtures/subword/experimental.actual.diff.json | 6 +++--- .../node/diffing/fixtures/subword/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/ts-comments/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/ts-comments/{2.tsx => 2.tst} | 0 .../fixtures/ts-comments/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-comments/smart.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-confusing-2/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/ts-confusing-2/{2.tsx => 2.tst} | 0 .../fixtures/ts-confusing-2/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-confusing-2/smart.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-confusing/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/ts-confusing/{2.tsx => 2.tst} | 0 .../fixtures/ts-confusing/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-confusing/smart.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-diff-word-split/{1.tsx => 1.tst} | 0 .../diffing/fixtures/ts-diff-word-split/{2.tsx => 2.tst} | 0 .../ts-diff-word-split/experimental.actual.diff.json | 6 +++--- .../fixtures/ts-diff-word-split/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/ts-example1/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/ts-example1/{2.tsx => 2.tst} | 0 .../fixtures/ts-example1/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-example1/smart.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-example2-ts/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/ts-example2-ts/{2.tsx => 2.tst} | 0 .../fixtures/ts-example2-ts/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-example2-ts/smart.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-experimental-bug/{1.tsx => 1.tst} | 0 .../diffing/fixtures/ts-experimental-bug/{2.tsx => 2.tst} | 0 .../ts-experimental-bug/experimental.actual.diff.json | 6 +++--- .../fixtures/ts-experimental-bug/smart.actual.diff.json | 6 +++--- .../fixtures/ts-fragmented-eager-diffing/{1.tsx => 1.tst} | 0 .../fixtures/ts-fragmented-eager-diffing/{2.tsx => 2.tst} | 0 .../experimental.actual.diff.json | 6 +++--- .../ts-fragmented-eager-diffing/smart.actual.diff.json | 6 +++--- .../fixtures/ts-fragmented-eager-diffing2/{1.tsx => 1.tst} | 0 .../fixtures/ts-fragmented-eager-diffing2/{2.tsx => 2.tst} | 0 .../experimental.actual.diff.json | 6 +++--- .../ts-fragmented-eager-diffing2/smart.actual.diff.json | 6 +++--- .../fixtures/ts-fragmented-eager-diffing3/{1.tsx => 1.tst} | 0 .../fixtures/ts-fragmented-eager-diffing3/{2.tsx => 2.tst} | 0 .../experimental.actual.diff.json | 6 +++--- .../ts-fragmented-eager-diffing3/smart.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-import-ws-affinity/{1.tsx => 1.tst} | 0 .../diffing/fixtures/ts-import-ws-affinity/{2.tsx => 2.tst} | 0 .../ts-import-ws-affinity/experimental.actual.diff.json | 6 +++--- .../fixtures/ts-import-ws-affinity/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/ts-insert/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/ts-insert/{2.tsx => 2.tst} | 0 .../fixtures/ts-insert/experimental.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-insert/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/ts-methods/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/ts-methods/{2.tsx => 2.tst} | 0 .../fixtures/ts-methods/experimental.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-methods/smart.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-shift-to-ws/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/ts-shift-to-ws/{2.tsx => 2.tst} | 0 .../fixtures/ts-shift-to-ws/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/ts-shifting/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/ts-shifting/{2.tsx => 2.tst} | 0 .../fixtures/ts-shifting/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-shifting/smart.actual.diff.json | 6 +++--- .../test/node/diffing/fixtures/ts-strings/{1.tsx => 1.tst} | 0 .../test/node/diffing/fixtures/ts-strings/{2.tsx => 2.tst} | 0 .../fixtures/ts-strings/experimental.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-strings/smart.actual.diff.json | 6 +++--- .../fixtures/ts-too-much-minimization/{1.tsx => 1.tst} | 0 .../fixtures/ts-too-much-minimization/{2.tsx => 2.tst} | 0 .../ts-too-much-minimization/experimental.actual.diff.json | 6 +++--- .../ts-too-much-minimization/smart.actual.diff.json | 6 +++--- .../fixtures/ts-unfragmented-diffing/{1.tsx => 1.tst} | 0 .../fixtures/ts-unfragmented-diffing/{2.tsx => 2.tst} | 0 .../ts-unfragmented-diffing/experimental.actual.diff.json | 6 +++--- .../fixtures/ts-unfragmented-diffing/smart.actual.diff.json | 6 +++--- .../node/diffing/fixtures/ts-unit-test/{1.tsx => 1.tst} | 0 .../node/diffing/fixtures/ts-unit-test/{2.tsx => 2.tst} | 0 .../fixtures/ts-unit-test/experimental.actual.diff.json | 6 +++--- .../diffing/fixtures/ts-unit-test/smart.actual.diff.json | 6 +++--- 98 files changed, 147 insertions(+), 146 deletions(-) rename src/vs/editor/test/node/diffing/fixtures/bracket-aligning/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/bracket-aligning/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/indentation/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/indentation/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/method-splitting/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/method-splitting/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/subword/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/subword/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-comments/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-comments/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-example1/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-example1/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-insert/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-insert/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-methods/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-methods/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-shifting/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-shifting/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-strings/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-strings/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/{2.tsx => 2.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-unit-test/{1.tsx => 1.tst} (100%) rename src/vs/editor/test/node/diffing/fixtures/ts-unit-test/{2.tsx => 2.tst} (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index eea3f45f764..6e8e32ca6da 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,7 +12,8 @@ } }, "files.associations": { - "cglicenses.json": "jsonc" + "cglicenses.json": "jsonc", + "*.tst": "typescript" }, "search.exclude": { "**/node_modules": true, diff --git a/src/vs/editor/test/node/diffing/README.md b/src/vs/editor/test/node/diffing/README.md index 321cf06e65e..da464aeb5f5 100644 --- a/src/vs/editor/test/node/diffing/README.md +++ b/src/vs/editor/test/node/diffing/README.md @@ -1,7 +1,7 @@ # Diffing Fixture Tests Every folder in `fixtures` represents a test. -The file that starts with `1.` is diffed against the file that starts with `2.`. Use `tsx` instead of `ts` to avoid compiler/linter errors for typescript diff files. +The file that starts with `1.` is diffed against the file that starts with `2.`. Use `tst` instead of `ts` to avoid compiler/linter errors for typescript diff files. * When you delete `*.actual.diff.json`, they are regenerated. * Make sure to delete `*.expected.diff.json`, as they make the tests fail. diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tsx b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/bracket-aligning/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tsx b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/bracket-aligning/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json index ba9765b288b..bc6be75afe7 100644 --- a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[73,85)", @@ -107,4 +107,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json index 3812c8e7527..9f9d97f4942 100644 --- a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[73,85)", @@ -13,4 +13,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/1.tsx b/src/vs/editor/test/node/diffing/fixtures/indentation/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/indentation/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/indentation/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/2.tsx b/src/vs/editor/test/node/diffing/fixtures/indentation/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/indentation/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/indentation/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json index 0e19223110b..6e2d842ae0b 100644 --- a/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,11)", @@ -75,4 +75,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json index e0b6759d861..b139fa98c5d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,11)", @@ -13,4 +13,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tsx b/src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/method-splitting/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tsx b/src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/method-splitting/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json index 9be8c6f076f..dbcabc2c34d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[6,10)", @@ -275,4 +275,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json index e8f65023ff3..4d9fc2b996b 100644 --- a/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[6,10)", @@ -75,4 +75,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tsx b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tsx b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json index f15c45914b4..852ab1405d4 100644 --- a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,3)", @@ -27,4 +27,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json index 43f0862ade0..78d5770170a 100644 --- a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,3)", @@ -23,4 +23,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/1.tsx b/src/vs/editor/test/node/diffing/fixtures/subword/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/subword/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/subword/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/2.tsx b/src/vs/editor/test/node/diffing/fixtures/subword/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/subword/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/subword/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json index bdf3b788912..73f1d29c8fa 100644 --- a/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,3)", @@ -23,4 +23,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json index 72e55b6533c..54d202d230d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,3)", @@ -18,4 +18,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-comments/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-comments/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json index 8ef7778d439..b4113b5ea88 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[8,8)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json index a7004a3e6e8..a7f5e931f63 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[8,8)", @@ -8,4 +8,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json index 61022b9f25d..bb86ddd1508 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,3)", @@ -505,4 +505,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json index bfb998bbbc3..e4d273b0f39 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,3)", @@ -152,4 +152,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json index 53613f902d3..523af61f4b5 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[8,9)", @@ -109,4 +109,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json index c7817297c09..214c7abdc93 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[8,9)", @@ -45,4 +45,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json index 3eefa012c09..ade39fdfb73 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -43,4 +43,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json index 0039a7e1d42..92ea0ca8eaa 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -43,4 +43,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-example1/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-example1/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json index 4ab40ef76c3..32e1ee870cd 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,10)", @@ -223,4 +223,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json index 281c35a1110..4067307c5a2 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,10)", @@ -35,4 +35,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json index 05e8449cfde..afeac3eeaff 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[6,7)", @@ -35,4 +35,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json index 224c8e68b2f..275762dec2a 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[6,7)", @@ -30,4 +30,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json index cf382d177b0..4a1e5be267f 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,6)", @@ -47,4 +47,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json index 0ffebb88a46..3ac7119c2d1 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,5)", @@ -39,4 +39,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json index 97b5cecfe71..c8cb4655983 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[24,25)", @@ -101,4 +101,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json index 19c06756bd6..085f259b54d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[24,25)", @@ -70,4 +70,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json index 7cc8336d296..b70bee82347 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json index 72780d6279e..8bdb530b283 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json index b26f3c751f7..7bbae4c039e 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -37,4 +37,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json index ce94c0a35d5..7208b7daa1c 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -37,4 +37,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json index bb4cf94c997..61453e234e7 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json index bb4cf94c997..61453e234e7 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-insert/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-insert/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json index 7a17e732dc0..f0e33c401c2 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[1,2)", @@ -21,4 +21,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json index 88e7b24abaf..e235a75a2d0 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[1,2)", @@ -21,4 +21,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-methods/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-methods/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json index 60160493994..a10416443b1 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -21,4 +21,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json index d18aa04c8c1..f4cb96ed8c1 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[3,4)", @@ -21,4 +21,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json index 384076f8c92..3e1c1734977 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,10)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json index 56c25bcd277..7418c862cce 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,10)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-shifting/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-shifting/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json index 6dad24b08fb..1375cc84d28 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[13,22)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json index e39c47aca0a..7b996732618 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[13,22)", @@ -8,4 +8,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-strings/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-strings/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json index 892d03e87e0..edbcc1fbddb 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[6,7)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json index b536d378053..8616c0d2a72 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[6,7)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json index 119c6f8a760..3caa15bcefd 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,10)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json index 119c6f8a760..3caa15bcefd 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[9,10)", @@ -13,4 +13,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json index d5eeb182fe0..aeaf215b111 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,2)", @@ -27,4 +27,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json index f1fec3ef30e..6060126c3c8 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[2,2)", @@ -18,4 +18,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-unit-test/1.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tsx b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tst similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tsx rename to src/vs/editor/test/node/diffing/fixtures/ts-unit-test/2.tst diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json index 82426cbc575..b5441f217b8 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[7,7)", @@ -23,4 +23,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json index 0e145b78870..fee9ee315df 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json @@ -1,6 +1,6 @@ { - "originalFileName": "./1.tsx", - "modifiedFileName": "./2.tsx", + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", "diffs": [ { "originalRange": "[7,7)", @@ -13,4 +13,4 @@ "innerChanges": null } ] -} \ No newline at end of file +} From 0b697608037973ce9418e43794bb457662ec82eb Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Mon, 14 Nov 2022 15:53:59 +0100 Subject: [PATCH 3/8] Addresses feedback from PR --- .vscode/settings.json | 3 ++- src/vs/editor/test/node/diffing/diffing.test.ts | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6e8e32ca6da..3abb868dc0c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -28,7 +28,8 @@ "test/automation/out/**": true, "test/integration/browser/out/**": true, "src/vs/base/test/node/uri.test.data.txt": true, - "src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true + "src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true, + "src/vs/editor/test/node/diffing/fixtures/**": true, }, "lcov.path": [ "./.build/coverage/lcov.info", diff --git a/src/vs/editor/test/node/diffing/diffing.test.ts b/src/vs/editor/test/node/diffing/diffing.test.ts index 00b4d4c3200..a8a73c25003 100644 --- a/src/vs/editor/test/node/diffing/diffing.test.ts +++ b/src/vs/editor/test/node/diffing/diffing.test.ts @@ -6,13 +6,12 @@ import assert = require('assert'); import { readdirSync, readFileSync, existsSync, writeFileSync } from 'fs'; import { join } from 'path'; -import { URI } from 'vs/base/common/uri'; +import { FileAccess } from 'vs/base/common/network'; import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComputer'; import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer'; suite('diff fixtures', () => { - - const fixturesDir = join(URI.parse(__dirname.replace('out/vs/editor', 'src/vs/editor')).fsPath, 'fixtures'); + const fixturesDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures', require).fsPath; const folders = readdirSync(fixturesDir); for (const folder of folders) { From 589e901e534dc429e322abde351fbe2a78b49033 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Mon, 14 Nov 2022 17:25:10 +0100 Subject: [PATCH 4/8] fixing test --- src/vs/editor/test/node/diffing/diffing.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/test/node/diffing/diffing.test.ts b/src/vs/editor/test/node/diffing/diffing.test.ts index a8a73c25003..04d6ecb9d47 100644 --- a/src/vs/editor/test/node/diffing/diffing.test.ts +++ b/src/vs/editor/test/node/diffing/diffing.test.ts @@ -11,7 +11,7 @@ import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComp import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer'; suite('diff fixtures', () => { - const fixturesDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures', require).fsPath; + const fixturesDir = (FileAccess as any).asFileUri('vs/editor/test/node/diffing/fixtures', require).fsPath; const folders = readdirSync(fixturesDir); for (const folder of folders) { From 53afa42371e62e23b0f36f0fe578d6384afc141c Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 15 Nov 2022 09:44:07 +0100 Subject: [PATCH 5/8] Try to remove cast to `any` --- src/vs/editor/test/node/diffing/diffing.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/test/node/diffing/diffing.test.ts b/src/vs/editor/test/node/diffing/diffing.test.ts index 04d6ecb9d47..a8a73c25003 100644 --- a/src/vs/editor/test/node/diffing/diffing.test.ts +++ b/src/vs/editor/test/node/diffing/diffing.test.ts @@ -11,7 +11,7 @@ import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComp import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer'; suite('diff fixtures', () => { - const fixturesDir = (FileAccess as any).asFileUri('vs/editor/test/node/diffing/fixtures', require).fsPath; + const fixturesDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures', require).fsPath; const folders = readdirSync(fixturesDir); for (const folder of folders) { From c5057eef6f6b001e8af32ebe48c82d36e9be5c42 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 15 Nov 2022 10:02:03 +0100 Subject: [PATCH 6/8] No need to pass in `require` --- src/vs/editor/test/node/diffing/diffing.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/test/node/diffing/diffing.test.ts b/src/vs/editor/test/node/diffing/diffing.test.ts index a8a73c25003..c97c25d948d 100644 --- a/src/vs/editor/test/node/diffing/diffing.test.ts +++ b/src/vs/editor/test/node/diffing/diffing.test.ts @@ -11,7 +11,7 @@ import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComp import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer'; suite('diff fixtures', () => { - const fixturesDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures', require).fsPath; + const fixturesDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures').fsPath; const folders = readdirSync(fixturesDir); for (const folder of folders) { From 845706c0710710715a2461c824d31aa8f024e8ab Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Tue, 15 Nov 2022 11:54:14 +0100 Subject: [PATCH 7/8] Fixes bug in diffing algorithm & improves fixture testing method. --- .../diff/algorithms/joinSequenceDiffs.ts | 8 +-- .../editor/test/node/diffing/diffing.test.ts | 43 +++++++++------- ...f.json => experimental.expected.diff.json} | 20 ++++++-- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 0 ...ual.diff.json => smart.expected.diff.json} | 0 ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 0 ...ual.diff.json => smart.expected.diff.json} | 0 .../experimental.actual.diff.json | 16 ------ .../experimental.expected.diff.json | 16 ++++++ ...ual.diff.json => smart.expected.diff.json} | 0 ...f.json => experimental.expected.diff.json} | 0 ...ual.diff.json => smart.expected.diff.json} | 0 ...f.json => experimental.expected.diff.json} | 10 ++-- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 0 ...ual.diff.json => smart.expected.diff.json} | 0 .../ts-comments/experimental.actual.diff.json | 16 ------ .../experimental.expected.diff.json | 16 ++++++ ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 18 +++---- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 10 ++-- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- .../experimental.actual.diff.json | 50 ------------------- .../experimental.expected.diff.json | 42 ++++++++++++++++ ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 18 +++---- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 6 +-- ...f.json => experimental.expected.diff.json} | 10 ++-- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 6 +-- ...ual.diff.json => smart.expected.diff.json} | 2 +- .../ts-shifting/experimental.actual.diff.json | 16 ------ .../experimental.expected.diff.json | 16 ++++++ ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 6 +-- ...ual.diff.json => smart.expected.diff.json} | 2 +- ...f.json => experimental.expected.diff.json} | 2 +- ...ual.diff.json => smart.expected.diff.json} | 2 +- 64 files changed, 213 insertions(+), 202 deletions(-) rename src/vs/editor/test/node/diffing/fixtures/bracket-aligning/{experimental.actual.diff.json => experimental.expected.diff.json} (85%) rename src/vs/editor/test/node/diffing/fixtures/bracket-aligning/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/{experimental.actual.diff.json => experimental.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/{smart.actual.diff.json => smart.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/indentation/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/indentation/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/intra-block-align/{experimental.actual.diff.json => experimental.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/intra-block-align/{smart.actual.diff.json => smart.expected.diff.json} (100%) delete mode 100644 src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.expected.diff.json rename src/vs/editor/test/node/diffing/fixtures/json-brackets/{smart.actual.diff.json => smart.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/just-whitespace/{experimental.actual.diff.json => experimental.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/just-whitespace/{smart.actual.diff.json => smart.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/method-splitting/{experimental.actual.diff.json => experimental.expected.diff.json} (97%) rename src/vs/editor/test/node/diffing/fixtures/method-splitting/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/subword/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/subword/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/trivial/{experimental.actual.diff.json => experimental.expected.diff.json} (100%) rename src/vs/editor/test/node/diffing/fixtures/trivial/{smart.actual.diff.json => smart.expected.diff.json} (100%) delete mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.expected.diff.json rename src/vs/editor/test/node/diffing/fixtures/ts-comments/{smart.actual.diff.json => smart.expected.diff.json} (98%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/{experimental.actual.diff.json => experimental.expected.diff.json} (97%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-confusing/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-example1/{experimental.actual.diff.json => experimental.expected.diff.json} (96%) rename src/vs/editor/test/node/diffing/fixtures/ts-example1/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/{smart.actual.diff.json => smart.expected.diff.json} (99%) delete mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.expected.diff.json rename src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/{experimental.actual.diff.json => experimental.expected.diff.json} (83%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/{smart.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/{experimental.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-insert/{smart.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-insert/{experimental.actual.diff.json => smart.expected.diff.json} (82%) rename src/vs/editor/test/node/diffing/fixtures/ts-methods/{experimental.actual.diff.json => experimental.expected.diff.json} (64%) rename src/vs/editor/test/node/diffing/fixtures/ts-methods/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/{experimental.actual.diff.json => experimental.expected.diff.json} (68%) rename src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/{smart.actual.diff.json => smart.expected.diff.json} (99%) delete mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json create mode 100644 src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.expected.diff.json rename src/vs/editor/test/node/diffing/fixtures/ts-shifting/{smart.actual.diff.json => smart.expected.diff.json} (98%) rename src/vs/editor/test/node/diffing/fixtures/ts-strings/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-strings/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/{experimental.actual.diff.json => experimental.expected.diff.json} (84%) rename src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/{smart.actual.diff.json => smart.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-unit-test/{experimental.actual.diff.json => experimental.expected.diff.json} (99%) rename src/vs/editor/test/node/diffing/fixtures/ts-unit-test/{smart.actual.diff.json => smart.expected.diff.json} (99%) diff --git a/src/vs/editor/common/diff/algorithms/joinSequenceDiffs.ts b/src/vs/editor/common/diff/algorithms/joinSequenceDiffs.ts index ae370b5a693..81d9c9acd06 100644 --- a/src/vs/editor/common/diff/algorithms/joinSequenceDiffs.ts +++ b/src/vs/editor/common/diff/algorithms/joinSequenceDiffs.ts @@ -85,11 +85,11 @@ export function shiftSequenceDiffs(sequence1: ISequence, sequence2: ISequence, s const diff = sequenceDiffs[i]; if (diff.seq1Range.isEmpty) { const seq2PrevEndExclusive = (i > 0 ? sequenceDiffs[i - 1].seq2Range.endExclusive : -1); - const seq2NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq2Range.start : sequence2.length + 1); + const seq2NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq2Range.start : sequence2.length); sequenceDiffs[i] = shiftDiffToBetterPosition(diff, sequence1, sequence2, seq2NextStart, seq2PrevEndExclusive); } else if (diff.seq2Range.isEmpty) { const seq1PrevEndExclusive = (i > 0 ? sequenceDiffs[i - 1].seq1Range.endExclusive : -1); - const seq1NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq1Range.start : sequence1.length + 1); + const seq1NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq1Range.start : sequence1.length); sequenceDiffs[i] = shiftDiffToBetterPosition(diff.reverse(), sequence2, sequence1, seq1NextStart, seq1PrevEndExclusive).reverse(); } } @@ -102,7 +102,7 @@ function shiftDiffToBetterPosition(diff: SequenceDiff, sequence1: ISequence, seq // don't touch previous or next! let deltaBefore = 1; - while (diff.seq1Range.start - deltaBefore > seq2PrevEndExclusive && + while (diff.seq2Range.start - deltaBefore > seq2PrevEndExclusive && sequence2.getElement(diff.seq2Range.start - deltaBefore) === sequence2.getElement(diff.seq2Range.endExclusive - deltaBefore) && deltaBefore < maxShiftLimit) { deltaBefore++; @@ -110,7 +110,7 @@ function shiftDiffToBetterPosition(diff: SequenceDiff, sequence1: ISequence, seq deltaBefore--; let deltaAfter = 1; - while (diff.seq1Range.start + deltaAfter < seq2NextStart && + while (diff.seq2Range.start + deltaAfter < seq2NextStart && sequence2.getElement(diff.seq2Range.start + deltaAfter) === sequence2.getElement(diff.seq2Range.endExclusive + deltaAfter) && deltaAfter < maxShiftLimit) { deltaAfter++; diff --git a/src/vs/editor/test/node/diffing/diffing.test.ts b/src/vs/editor/test/node/diffing/diffing.test.ts index c97c25d948d..fdccaf91fc2 100644 --- a/src/vs/editor/test/node/diffing/diffing.test.ts +++ b/src/vs/editor/test/node/diffing/diffing.test.ts @@ -5,20 +5,22 @@ import assert = require('assert'); import { readdirSync, readFileSync, existsSync, writeFileSync } from 'fs'; -import { join } from 'path'; +import { join, resolve } from 'path'; import { FileAccess } from 'vs/base/common/network'; import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComputer'; import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer'; suite('diff fixtures', () => { - const fixturesDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures').fsPath; - const folders = readdirSync(fixturesDir); + const fixturesOutDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures').fsPath; + // We want the dir in src, so we can directly update the source files if they disagree and create invalid files to capture the previous state. + // This makes it very easy to update the fixtures. + const fixturesSrcDir = resolve(fixturesOutDir).replaceAll('\\', '/').replace('/out/vs/editor/', '/src/vs/editor/'); + const folders = readdirSync(fixturesSrcDir); for (const folder of folders) { for (const diffingAlgoName of ['smart', 'experimental']) { - test(`${folder}-${diffingAlgoName}`, () => { - const folderPath = join(fixturesDir, folder); + const folderPath = join(fixturesSrcDir, folder); const files = readdirSync(folderPath); const firstFileName = files.find(f => f.startsWith('1.'))!; @@ -31,7 +33,7 @@ suite('diff fixtures', () => { const diff = diffingAlgo.computeDiff(firstContentLines, secondContentLines, { ignoreTrimWhitespace: false, maxComputationTime: Number.MAX_SAFE_INTEGER }); - const diffingResult: DiffingResult = { + const actualDiffingResult: DiffingResult = { originalFileName: `./${firstFileName}`, modifiedFileName: `./${secondFileName}`, diffs: diff.changes.map(c => ({ @@ -44,29 +46,34 @@ suite('diff fixtures', () => { })) }; - const actualFilePath = join(folderPath, `${diffingAlgoName}.actual.diff.json`); const expectedFilePath = join(folderPath, `${diffingAlgoName}.expected.diff.json`); + const invalidFilePath = join(folderPath, `${diffingAlgoName}.invalid.diff.json`); - const expectedFileContent = JSON.stringify(diffingResult, null, '\t'); + const expectedFileContentFromActual = JSON.stringify(actualDiffingResult, null, '\t'); - if (!existsSync(actualFilePath)) { - writeFileSync(actualFilePath, expectedFileContent); - writeFileSync(expectedFilePath, expectedFileContent); - throw new Error('No actual file! Actual and expected files were written.'); + const invalidExists = existsSync(invalidFilePath); + + if (!existsSync(expectedFilePath)) { + writeFileSync(expectedFilePath, expectedFileContentFromActual); + writeFileSync(invalidFilePath, ''); + throw new Error('No expected file! Expected and invalid files were written. Delete the invalid file to make the test pass.'); } else { - const actualFileContent = readFileSync(actualFilePath, 'utf8'); - const actualFileDiffResult: DiffingResult = JSON.parse(actualFileContent); + const expectedFileContent = readFileSync(invalidExists ? invalidFilePath : expectedFilePath, 'utf8'); + const expectedFileDiffResult: DiffingResult = JSON.parse(expectedFileContent); try { - assert.deepStrictEqual(actualFileDiffResult, diffingResult); + assert.deepStrictEqual(actualDiffingResult, expectedFileDiffResult); } catch (e) { - writeFileSync(expectedFilePath, expectedFileContent); + if (!invalidExists) { + writeFileSync(invalidFilePath, expectedFileContent); + } + writeFileSync(expectedFilePath, expectedFileContentFromActual); throw e; } } - if (existsSync(expectedFilePath)) { - throw new Error('Expected file exists! Please delete it.'); + if (invalidExists) { + throw new Error('Invalid file exists and agrees with expected file! Delete the invalid file to make the test pass.'); } }); } diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.expected.diff.json similarity index 85% rename from src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.expected.diff.json index bc6be75afe7..86b0dc30193 100644 --- a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/experimental.expected.diff.json @@ -61,8 +61,8 @@ ] }, { - "originalRange": "[86,95)", - "modifiedRange": "[88,98)", + "originalRange": "[86,98)", + "modifiedRange": "[88,101)", "innerChanges": [ { "originalRange": "[86,1 -> 86,1]", @@ -102,9 +102,21 @@ }, { "originalRange": "[95,1 -> 95,1]", - "modifiedRange": "[97,1 -> 98,1]" + "modifiedRange": "[97,1 -> 97,2]" + }, + { + "originalRange": "[96,1 -> 96,1]", + "modifiedRange": "[98,1 -> 98,2]" + }, + { + "originalRange": "[97,1 -> 97,1]", + "modifiedRange": "[99,1 -> 99,2]" + }, + { + "originalRange": "[98,1 -> 98,1]", + "modifiedRange": "[100,1 -> 101,1]" } ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.expected.diff.json index 9f9d97f4942..17dd9daa899 100644 --- a/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/bracket-aligning/smart.expected.diff.json @@ -13,4 +13,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/experimental.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/fuzzy-matching/smart.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/indentation/experimental.expected.diff.json index 6e2d842ae0b..6e683c46f89 100644 --- a/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/experimental.expected.diff.json @@ -75,4 +75,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/indentation/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/indentation/smart.expected.diff.json index b139fa98c5d..1673eac315e 100644 --- a/src/vs/editor/test/node/diffing/fixtures/indentation/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/indentation/smart.expected.diff.json @@ -13,4 +13,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/intra-block-align/experimental.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/intra-block-align/smart.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json deleted file mode 100644 index d446bbeaa3c..00000000000 --- a/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.actual.diff.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "originalFileName": "./1.json", - "modifiedFileName": "./2.json", - "diffs": [ - { - "originalRange": "[302,302)", - "modifiedRange": "[302,306)", - "innerChanges": [ - { - "originalRange": "[302,1 -> 302,1]", - "modifiedRange": "[302,1 -> 306,1]" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.expected.diff.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.expected.diff.json new file mode 100644 index 00000000000..7e258364cfc --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/json-brackets/experimental.expected.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.json", + "modifiedFileName": "./2.json", + "diffs": [ + { + "originalRange": "[301,301)", + "modifiedRange": "[301,305)", + "innerChanges": [ + { + "originalRange": "[301,1 -> 301,1]", + "modifiedRange": "[301,1 -> 305,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/json-brackets/smart.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/just-whitespace/experimental.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/just-whitespace/smart.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.expected.diff.json similarity index 97% rename from src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.expected.diff.json index dbcabc2c34d..1c1ebba93cd 100644 --- a/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/experimental.expected.diff.json @@ -215,8 +215,8 @@ "modifiedRange": "[7,130 -> 7,130]" }, { - "originalRange": "[8,5 -> 8,10]", - "modifiedRange": "[7,130 -> 7,130]" + "originalRange": "[8,6 -> 8,11]", + "modifiedRange": "[7,131 -> 7,131]" }, { "originalRange": "[8,15 -> 8,21]", @@ -251,8 +251,8 @@ "modifiedRange": "[7,181 -> 7,182]" }, { - "originalRange": "[9,1 -> 10,1]", - "modifiedRange": "[8,1 -> 8,1]" + "originalRange": "[8,66 -> 9,3]", + "modifiedRange": "[7,183 -> 7,183]" } ] }, @@ -275,4 +275,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.expected.diff.json index 4d9fc2b996b..d0b4abc03ed 100644 --- a/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/method-splitting/smart.expected.diff.json @@ -75,4 +75,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.expected.diff.json index 852ab1405d4..a0aea479fa4 100644 --- a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/experimental.expected.diff.json @@ -27,4 +27,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.expected.diff.json index 78d5770170a..430db713be3 100644 --- a/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/minimal-diff-character/smart.expected.diff.json @@ -23,4 +23,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/subword/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/subword/experimental.expected.diff.json index 73f1d29c8fa..d1e2aa57bee 100644 --- a/src/vs/editor/test/node/diffing/fixtures/subword/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/subword/experimental.expected.diff.json @@ -23,4 +23,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/subword/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/subword/smart.expected.diff.json index 54d202d230d..795a5a1d248 100644 --- a/src/vs/editor/test/node/diffing/fixtures/subword/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/subword/smart.expected.diff.json @@ -18,4 +18,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/trivial/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/trivial/experimental.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/trivial/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/trivial/experimental.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/trivial/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/trivial/smart.expected.diff.json similarity index 100% rename from src/vs/editor/test/node/diffing/fixtures/trivial/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/trivial/smart.expected.diff.json diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json deleted file mode 100644 index b4113b5ea88..00000000000 --- a/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.actual.diff.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "originalFileName": "./1.tst", - "modifiedFileName": "./2.tst", - "diffs": [ - { - "originalRange": "[8,8)", - "modifiedRange": "[8,13)", - "innerChanges": [ - { - "originalRange": "[8,1 -> 8,1]", - "modifiedRange": "[8,1 -> 13,1]" - } - ] - } - ] -} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.expected.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.expected.diff.json new file mode 100644 index 00000000000..6bdd24212ff --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/experimental.expected.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", + "diffs": [ + { + "originalRange": "[7,7)", + "modifiedRange": "[7,12)", + "innerChanges": [ + { + "originalRange": "[7,1 -> 7,1]", + "modifiedRange": "[7,1 -> 12,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.expected.diff.json similarity index 98% rename from src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.expected.diff.json index a7f5e931f63..e5fb2b96111 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-comments/smart.expected.diff.json @@ -8,4 +8,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.expected.diff.json similarity index 97% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.expected.diff.json index bb86ddd1508..1fdc1077112 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/experimental.expected.diff.json @@ -177,8 +177,8 @@ "modifiedRange": "[16,81 -> 16,83]" }, { - "originalRange": "[14,208 -> 14,208]", - "modifiedRange": "[16,84 -> 16,118]" + "originalRange": "[14,209 -> 14,209]", + "modifiedRange": "[16,85 -> 16,119]" }, { "originalRange": "[14,210 -> 14,211]", @@ -251,8 +251,8 @@ "modifiedRange": "[23,25 -> 23,25]" }, { - "originalRange": "[19,9 -> 19,13]", - "modifiedRange": "[23,27 -> 23,27]" + "originalRange": "[19,10 -> 19,14]", + "modifiedRange": "[23,28 -> 23,28]" }, { "originalRange": "[19,14 -> 19,17]", @@ -303,8 +303,8 @@ "modifiedRange": "[23,79 -> 23,83]" }, { - "originalRange": "[20,37 -> 20,40]", - "modifiedRange": "[23,85 -> 23,85]" + "originalRange": "[20,36 -> 20,39]", + "modifiedRange": "[23,84 -> 23,84]" }, { "originalRange": "[20,41 -> 20,44]", @@ -391,8 +391,8 @@ "modifiedRange": "[26,38)", "innerChanges": [ { - "originalRange": "[28,1 -> 28,1]", - "modifiedRange": "[26,1 -> 27,1]" + "originalRange": "[28,4 -> 28,4]", + "modifiedRange": "[26,4 -> 27,4]" }, { "originalRange": "[28,15 -> 28,20]", @@ -505,4 +505,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.expected.diff.json index e4d273b0f39..a1e0ab440f9 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing-2/smart.expected.diff.json @@ -152,4 +152,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.expected.diff.json index 523af61f4b5..ecd6a96cfcb 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/experimental.expected.diff.json @@ -109,4 +109,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.expected.diff.json index 214c7abdc93..7ad5e5e6604 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-confusing/smart.expected.diff.json @@ -45,4 +45,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.expected.diff.json index ade39fdfb73..7a03e3e2009 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/experimental.expected.diff.json @@ -43,4 +43,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.expected.diff.json index 92ea0ca8eaa..ac0383a456b 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-diff-word-split/smart.expected.diff.json @@ -43,4 +43,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.expected.diff.json similarity index 96% rename from src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.expected.diff.json index 32e1ee870cd..dff793f0286 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/experimental.expected.diff.json @@ -45,8 +45,8 @@ "modifiedRange": "[19,6 -> 19,34]" }, { - "originalRange": "[13,17 -> 13,17]", - "modifiedRange": "[19,36 -> 20,9]" + "originalRange": "[13,18 -> 13,18]", + "modifiedRange": "[19,37 -> 20,10]" }, { "originalRange": "[13,17 -> 13,18]", @@ -101,8 +101,8 @@ "modifiedRange": "[31,11 -> 34,50]" }, { - "originalRange": "[13,42 -> 13,42]", - "modifiedRange": "[34,52 -> 35,19]" + "originalRange": "[13,41 -> 13,41]", + "modifiedRange": "[34,51 -> 35,18]" }, { "originalRange": "[14,2 -> 14,2]", @@ -223,4 +223,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.expected.diff.json index 4067307c5a2..e865b3fa365 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example1/smart.expected.diff.json @@ -35,4 +35,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.expected.diff.json index afeac3eeaff..12fb2fb68e1 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/experimental.expected.diff.json @@ -35,4 +35,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.expected.diff.json index 275762dec2a..9f38ce0b43c 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-example2-ts/smart.expected.diff.json @@ -30,4 +30,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json deleted file mode 100644 index 4a1e5be267f..00000000000 --- a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.actual.diff.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "originalFileName": "./1.tst", - "modifiedFileName": "./2.tst", - "diffs": [ - { - "originalRange": "[2,6)", - "modifiedRange": "[2,7)", - "innerChanges": [ - { - "originalRange": "[2,5 -> 2,15]", - "modifiedRange": "[2,5 -> 2,6]" - }, - { - "originalRange": "[2,18 -> 3,9]", - "modifiedRange": "[2,9 -> 2,9]" - }, - { - "originalRange": "[3,20 -> 3,22]", - "modifiedRange": "[2,20 -> 2,21]" - }, - { - "originalRange": "[3,23 -> 3,43]", - "modifiedRange": "[2,22 -> 2,22]" - }, - { - "originalRange": "[3,53 -> 4,35]", - "modifiedRange": "[2,32 -> 2,34]" - }, - { - "originalRange": "[5,1 -> 5,1]", - "modifiedRange": "[3,1 -> 3,5]" - }, - { - "originalRange": "[6,1 -> 6,1]", - "modifiedRange": "[4,1 -> 7,1]" - } - ] - }, - { - "originalRange": "[8,9)", - "modifiedRange": "[9,10)", - "innerChanges": [ - { - "originalRange": "[8,35 -> 8,35]", - "modifiedRange": "[9,35 -> 9,36]" - } - ] - } - ] -} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.expected.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.expected.diff.json new file mode 100644 index 00000000000..533acf07537 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/experimental.expected.diff.json @@ -0,0 +1,42 @@ +{ + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", + "diffs": [ + { + "originalRange": "[2,5)", + "modifiedRange": "[2,6)", + "innerChanges": [ + { + "originalRange": "[2,1 -> 2,1]", + "modifiedRange": "[2,1 -> 4,1]" + }, + { + "originalRange": "[2,17 -> 2,17]", + "modifiedRange": "[4,17 -> 4,28]" + }, + { + "originalRange": "[2,39 -> 2,40]", + "modifiedRange": "[4,50 -> 4,50]" + }, + { + "originalRange": "[3,5 -> 3,9]", + "modifiedRange": "[5,5 -> 5,5]" + }, + { + "originalRange": "[3,57 -> 4,36]", + "modifiedRange": "[5,53 -> 5,53]" + } + ] + }, + { + "originalRange": "[8,9)", + "modifiedRange": "[9,10)", + "innerChanges": [ + { + "originalRange": "[8,35 -> 8,35]", + "modifiedRange": "[9,35 -> 9,36]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.expected.diff.json index 3ac7119c2d1..ab6e1d63356 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-experimental-bug/smart.expected.diff.json @@ -39,4 +39,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.expected.diff.json similarity index 83% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.expected.diff.json index c8cb4655983..63bf0be0819 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/experimental.expected.diff.json @@ -21,8 +21,8 @@ "modifiedRange": "[31,59 -> 31,60]" }, { - "originalRange": "[32,61 -> 32,61]", - "modifiedRange": "[31,62 -> 31,67]" + "originalRange": "[32,60 -> 32,60]", + "modifiedRange": "[31,61 -> 31,66]" } ] }, @@ -59,8 +59,8 @@ "modifiedRange": "[82,60 -> 82,61]" }, { - "originalRange": "[84,62 -> 84,62]", - "modifiedRange": "[82,63 -> 82,68]" + "originalRange": "[84,61 -> 84,61]", + "modifiedRange": "[82,62 -> 82,67]" } ] }, @@ -77,8 +77,8 @@ "modifiedRange": "[94,60 -> 94,61]" }, { - "originalRange": "[95,62 -> 95,62]", - "modifiedRange": "[94,63 -> 94,68]" + "originalRange": "[95,61 -> 95,61]", + "modifiedRange": "[94,62 -> 94,67]" } ] }, @@ -95,10 +95,10 @@ "modifiedRange": "[105,60 -> 105,61]" }, { - "originalRange": "[105,62 -> 105,62]", - "modifiedRange": "[105,63 -> 105,68]" + "originalRange": "[105,61 -> 105,61]", + "modifiedRange": "[105,62 -> 105,67]" } ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.expected.diff.json index 085f259b54d..239c6fd8899 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing/smart.expected.diff.json @@ -70,4 +70,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.expected.diff.json index b70bee82347..e77975d759a 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/experimental.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.expected.diff.json index 8bdb530b283..396591fc4dc 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing2/smart.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.expected.diff.json index 7bbae4c039e..af483c2217d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/experimental.expected.diff.json @@ -37,4 +37,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.expected.diff.json index 7208b7daa1c..e8211fc3870 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-fragmented-eager-diffing3/smart.expected.diff.json @@ -37,4 +37,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.expected.diff.json index 61453e234e7..322bb5fc3be 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.expected.diff.json index 61453e234e7..322bb5fc3be 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-import-ws-affinity/smart.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.expected.diff.json index e235a75a2d0..d7b3e05ef3a 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.expected.diff.json @@ -21,4 +21,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.expected.diff.json similarity index 82% rename from src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.expected.diff.json index f0e33c401c2..d7b3e05ef3a 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-insert/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-insert/smart.expected.diff.json @@ -15,10 +15,10 @@ "modifiedRange": "[1,35 -> 1,35]" }, { - "originalRange": "[1,50 -> 1,50]", - "modifiedRange": "[1,42 -> 1,57]" + "originalRange": "[1,55 -> 1,55]", + "modifiedRange": "[1,47 -> 1,62]" } ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.expected.diff.json similarity index 64% rename from src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.expected.diff.json index a10416443b1..e5e8876bd55 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/experimental.expected.diff.json @@ -11,14 +11,14 @@ "modifiedRange": "[3,1 -> 3,5]" }, { - "originalRange": "[3,6 -> 3,6]", - "modifiedRange": "[3,9 -> 3,17]" + "originalRange": "[3,4 -> 3,4]", + "modifiedRange": "[3,7 -> 3,15]" }, { - "originalRange": "[3,59 -> 3,59]", - "modifiedRange": "[3,70 -> 4,41]" + "originalRange": "[3,91 -> 3,91]", + "modifiedRange": "[3,102 -> 4,73]" } ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.expected.diff.json index f4cb96ed8c1..69e0286f34d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-methods/smart.expected.diff.json @@ -21,4 +21,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.expected.diff.json similarity index 68% rename from src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.expected.diff.json index 3e1c1734977..807bbb2dcd9 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/experimental.expected.diff.json @@ -7,10 +7,10 @@ "modifiedRange": "[9,10)", "innerChanges": [ { - "originalRange": "[9,115 -> 9,115]", - "modifiedRange": "[9,115 -> 9,136]" + "originalRange": "[9,116 -> 9,116]", + "modifiedRange": "[9,116 -> 9,137]" } ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.expected.diff.json index 7418c862cce..e155ae69309 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shift-to-ws/smart.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json deleted file mode 100644 index 1375cc84d28..00000000000 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.actual.diff.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "originalFileName": "./1.tst", - "modifiedFileName": "./2.tst", - "diffs": [ - { - "originalRange": "[13,22)", - "modifiedRange": "[13,13)", - "innerChanges": [ - { - "originalRange": "[13,1 -> 22,1]", - "modifiedRange": "[13,1 -> 13,1]" - } - ] - } - ] -} diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.expected.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.expected.diff.json new file mode 100644 index 00000000000..7cae68fdc45 --- /dev/null +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/experimental.expected.diff.json @@ -0,0 +1,16 @@ +{ + "originalFileName": "./1.tst", + "modifiedFileName": "./2.tst", + "diffs": [ + { + "originalRange": "[11,20)", + "modifiedRange": "[11,11)", + "innerChanges": [ + { + "originalRange": "[11,1 -> 20,1]", + "modifiedRange": "[11,1 -> 11,1]" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.expected.diff.json similarity index 98% rename from src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.expected.diff.json index 7b996732618..32fdb9dbdd9 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-shifting/smart.expected.diff.json @@ -8,4 +8,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.expected.diff.json index edbcc1fbddb..1781d792519 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/experimental.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.expected.diff.json index 8616c0d2a72..eccec9997d5 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-strings/smart.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.expected.diff.json index 3caa15bcefd..7edda326b75 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/experimental.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.expected.diff.json index 3caa15bcefd..7edda326b75 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-too-much-minimization/smart.expected.diff.json @@ -13,4 +13,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.expected.diff.json similarity index 84% rename from src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.expected.diff.json index aeaf215b111..5d7e0b3c24d 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/experimental.expected.diff.json @@ -21,10 +21,10 @@ "modifiedRange": "[9,8 -> 10,8]" }, { - "originalRange": "[8,10 -> 8,10]", - "modifiedRange": "[10,10 -> 10,31]" + "originalRange": "[8,9 -> 8,9]", + "modifiedRange": "[10,9 -> 10,30]" } ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.expected.diff.json index 6060126c3c8..9f3b700c75e 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unfragmented-diffing/smart.expected.diff.json @@ -18,4 +18,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.expected.diff.json index b5441f217b8..a37e3ebe187 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/experimental.expected.diff.json @@ -23,4 +23,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.expected.diff.json similarity index 99% rename from src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json rename to src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.expected.diff.json index fee9ee315df..4c25222b3b4 100644 --- a/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.actual.diff.json +++ b/src/vs/editor/test/node/diffing/fixtures/ts-unit-test/smart.expected.diff.json @@ -13,4 +13,4 @@ "innerChanges": null } ] -} +} \ No newline at end of file From 3c4fc515a76b61c9fc3e80eb2888babf8edce938 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Tue, 15 Nov 2022 12:04:51 +0100 Subject: [PATCH 8/8] updates readme --- src/vs/editor/test/node/diffing/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/test/node/diffing/README.md b/src/vs/editor/test/node/diffing/README.md index da464aeb5f5..0865d7b3eca 100644 --- a/src/vs/editor/test/node/diffing/README.md +++ b/src/vs/editor/test/node/diffing/README.md @@ -3,5 +3,8 @@ Every folder in `fixtures` represents a test. The file that starts with `1.` is diffed against the file that starts with `2.`. Use `tst` instead of `ts` to avoid compiler/linter errors for typescript diff files. -* When you delete `*.actual.diff.json`, they are regenerated. -* Make sure to delete `*.expected.diff.json`, as they make the tests fail. +* Missing `*.expected.diff.json` are created automatically (as well as an `*.invalid.diff.json` file). +* If the actual diff does not equal the expected diff, the expected file is updated automatically. The previous value of the expected file is written to `*.invalid.diff.json`. +* The test will fail if there are any `*.invalid.diff.json` files. This makes sure that the test keeps failing even if it is run a second time. + +When changing the diffing algorithm, run the fixture tests, review the diff of the `*.expected.diff.json` files and delete all `*.invalid.diff.json` files.