mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-08 17:24:01 -05:00
Merge from vscode c58aaab8a1cc22a7139b761166a0d4f37d41e998 (#7880)
* Merge from vscode c58aaab8a1cc22a7139b761166a0d4f37d41e998 * fix pipelines * fix strict-null-checks * add missing files
This commit is contained in:
@@ -25,8 +25,8 @@ suite('TextModelWithTokens', () => {
|
||||
}
|
||||
return {
|
||||
range: a.range.toString(),
|
||||
open: a.open,
|
||||
close: a.close,
|
||||
open: a.open[0],
|
||||
close: a.close[0],
|
||||
isOpen: a.isOpen
|
||||
};
|
||||
}
|
||||
@@ -57,8 +57,8 @@ suite('TextModelWithTokens', () => {
|
||||
let ch = lineText.charAt(charIndex);
|
||||
if (charIsBracket[ch]) {
|
||||
expectedBrackets.push({
|
||||
open: openForChar[ch],
|
||||
close: closeForChar[ch],
|
||||
open: [openForChar[ch]],
|
||||
close: [closeForChar[ch]],
|
||||
isOpen: charIsOpenBracket[ch],
|
||||
range: new Range(lineIndex + 1, charIndex + 1, lineIndex + 1, charIndex + 2)
|
||||
});
|
||||
@@ -145,18 +145,18 @@ suite('TextModelWithTokens', () => {
|
||||
});
|
||||
});
|
||||
|
||||
function assertIsNotBracket(model: TextModel, lineNumber: number, column: number) {
|
||||
const match = model.matchBracket(new Position(lineNumber, column));
|
||||
assert.equal(match, null, 'is not matching brackets at ' + lineNumber + ', ' + column);
|
||||
}
|
||||
|
||||
function assertIsBracket(model: TextModel, testPosition: Position, expected: [Range, Range]): void {
|
||||
const actual = model.matchBracket(testPosition);
|
||||
assert.deepEqual(actual, expected, 'matches brackets at ' + testPosition);
|
||||
}
|
||||
|
||||
suite('TextModelWithTokens - bracket matching', () => {
|
||||
|
||||
function isNotABracket(model: TextModel, lineNumber: number, column: number) {
|
||||
let match = model.matchBracket(new Position(lineNumber, column));
|
||||
assert.equal(match, null, 'is not matching brackets at ' + lineNumber + ', ' + column);
|
||||
}
|
||||
|
||||
function isBracket2(model: TextModel, testPosition: Position, expected: [Range, Range]): void {
|
||||
let actual = model.matchBracket(testPosition);
|
||||
assert.deepEqual(actual, expected, 'matches brackets at ' + testPosition);
|
||||
}
|
||||
|
||||
const languageIdentifier = new LanguageIdentifier('bracketMode1', LanguageId.PlainText);
|
||||
let registration: IDisposable;
|
||||
|
||||
@@ -180,21 +180,21 @@ suite('TextModelWithTokens - bracket matching', () => {
|
||||
')]}{[(';
|
||||
let model = TextModel.createFromString(text, undefined, languageIdentifier);
|
||||
|
||||
isNotABracket(model, 1, 1);
|
||||
isNotABracket(model, 1, 2);
|
||||
isNotABracket(model, 1, 3);
|
||||
isBracket2(model, new Position(1, 4), [new Range(1, 4, 1, 5), new Range(2, 3, 2, 4)]);
|
||||
isBracket2(model, new Position(1, 5), [new Range(1, 5, 1, 6), new Range(2, 2, 2, 3)]);
|
||||
isBracket2(model, new Position(1, 6), [new Range(1, 6, 1, 7), new Range(2, 1, 2, 2)]);
|
||||
isBracket2(model, new Position(1, 7), [new Range(1, 6, 1, 7), new Range(2, 1, 2, 2)]);
|
||||
assertIsNotBracket(model, 1, 1);
|
||||
assertIsNotBracket(model, 1, 2);
|
||||
assertIsNotBracket(model, 1, 3);
|
||||
assertIsBracket(model, new Position(1, 4), [new Range(1, 4, 1, 5), new Range(2, 3, 2, 4)]);
|
||||
assertIsBracket(model, new Position(1, 5), [new Range(1, 5, 1, 6), new Range(2, 2, 2, 3)]);
|
||||
assertIsBracket(model, new Position(1, 6), [new Range(1, 6, 1, 7), new Range(2, 1, 2, 2)]);
|
||||
assertIsBracket(model, new Position(1, 7), [new Range(1, 6, 1, 7), new Range(2, 1, 2, 2)]);
|
||||
|
||||
isBracket2(model, new Position(2, 1), [new Range(2, 1, 2, 2), new Range(1, 6, 1, 7)]);
|
||||
isBracket2(model, new Position(2, 2), [new Range(2, 2, 2, 3), new Range(1, 5, 1, 6)]);
|
||||
isBracket2(model, new Position(2, 3), [new Range(2, 3, 2, 4), new Range(1, 4, 1, 5)]);
|
||||
isBracket2(model, new Position(2, 4), [new Range(2, 3, 2, 4), new Range(1, 4, 1, 5)]);
|
||||
isNotABracket(model, 2, 5);
|
||||
isNotABracket(model, 2, 6);
|
||||
isNotABracket(model, 2, 7);
|
||||
assertIsBracket(model, new Position(2, 1), [new Range(2, 1, 2, 2), new Range(1, 6, 1, 7)]);
|
||||
assertIsBracket(model, new Position(2, 2), [new Range(2, 2, 2, 3), new Range(1, 5, 1, 6)]);
|
||||
assertIsBracket(model, new Position(2, 3), [new Range(2, 3, 2, 4), new Range(1, 4, 1, 5)]);
|
||||
assertIsBracket(model, new Position(2, 4), [new Range(2, 3, 2, 4), new Range(1, 4, 1, 5)]);
|
||||
assertIsNotBracket(model, 2, 5);
|
||||
assertIsNotBracket(model, 2, 6);
|
||||
assertIsNotBracket(model, 2, 7);
|
||||
|
||||
model.dispose();
|
||||
});
|
||||
@@ -238,7 +238,7 @@ suite('TextModelWithTokens - bracket matching', () => {
|
||||
let isABracket: { [lineNumber: number]: { [col: number]: boolean; }; } = { 1: {}, 2: {}, 3: {}, 4: {}, 5: {} };
|
||||
for (let i = 0, len = brackets.length; i < len; i++) {
|
||||
let [testPos, b1, b2] = brackets[i];
|
||||
isBracket2(model, testPos, [b1, b2]);
|
||||
assertIsBracket(model, testPos, [b1, b2]);
|
||||
isABracket[testPos.lineNumber][testPos.column] = true;
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ suite('TextModelWithTokens - bracket matching', () => {
|
||||
let line = model.getLineContent(i);
|
||||
for (let j = 1, lenJ = line.length + 1; j <= lenJ; j++) {
|
||||
if (!isABracket[i].hasOwnProperty(<any>j)) {
|
||||
isNotABracket(model, i, j);
|
||||
assertIsNotBracket(model, i, j);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -255,6 +255,88 @@ suite('TextModelWithTokens - bracket matching', () => {
|
||||
});
|
||||
});
|
||||
|
||||
suite('TextModelWithTokens', () => {
|
||||
|
||||
test('bracket matching 3', () => {
|
||||
|
||||
const languageIdentifier = new LanguageIdentifier('bracketMode2', LanguageId.PlainText);
|
||||
const registration = LanguageConfigurationRegistry.register(languageIdentifier, {
|
||||
brackets: [
|
||||
['if', 'end if'],
|
||||
['loop', 'end loop'],
|
||||
['begin', 'end']
|
||||
],
|
||||
});
|
||||
|
||||
const text = [
|
||||
'begin',
|
||||
' loop',
|
||||
' if then',
|
||||
' end if;',
|
||||
' end loop;',
|
||||
'end;',
|
||||
'',
|
||||
'begin',
|
||||
' loop',
|
||||
' if then',
|
||||
' end ifa;',
|
||||
' end loop;',
|
||||
'end;',
|
||||
].join('\n');
|
||||
|
||||
const model = TextModel.createFromString(text, undefined, languageIdentifier);
|
||||
|
||||
// <if> ... <end ifa> is not matched
|
||||
assertIsNotBracket(model, 10, 9);
|
||||
|
||||
// <if> ... <end if> is matched
|
||||
assertIsBracket(model, new Position(3, 9), [new Range(3, 9, 3, 11), new Range(4, 9, 4, 15)]);
|
||||
assertIsBracket(model, new Position(4, 9), [new Range(4, 9, 4, 15), new Range(3, 9, 3, 11)]);
|
||||
|
||||
// <loop> ... <end loop> is matched
|
||||
assertIsBracket(model, new Position(2, 5), [new Range(2, 5, 2, 9), new Range(5, 5, 5, 13)]);
|
||||
assertIsBracket(model, new Position(5, 5), [new Range(5, 5, 5, 13), new Range(2, 5, 2, 9)]);
|
||||
|
||||
// <begin> ... <end> is matched
|
||||
assertIsBracket(model, new Position(1, 1), [new Range(1, 1, 1, 6), new Range(6, 1, 6, 4)]);
|
||||
assertIsBracket(model, new Position(6, 1), [new Range(6, 1, 6, 4), new Range(1, 1, 1, 6)]);
|
||||
|
||||
model.dispose();
|
||||
registration.dispose();
|
||||
});
|
||||
|
||||
test('bracket matching 4', () => {
|
||||
|
||||
const languageIdentifier = new LanguageIdentifier('bracketMode2', LanguageId.PlainText);
|
||||
const registration = LanguageConfigurationRegistry.register(languageIdentifier, {
|
||||
brackets: [
|
||||
['recordbegin', 'endrecord'],
|
||||
['simplerecordbegin', 'endrecord'],
|
||||
],
|
||||
});
|
||||
|
||||
const text = [
|
||||
'recordbegin',
|
||||
' simplerecordbegin',
|
||||
' endrecord',
|
||||
'endrecord',
|
||||
].join('\n');
|
||||
|
||||
const model = TextModel.createFromString(text, undefined, languageIdentifier);
|
||||
|
||||
// <recordbegin> ... <endrecord> is matched
|
||||
assertIsBracket(model, new Position(1, 1), [new Range(1, 1, 1, 12), new Range(4, 1, 4, 10)]);
|
||||
assertIsBracket(model, new Position(4, 1), [new Range(4, 1, 4, 10), new Range(1, 1, 1, 12)]);
|
||||
|
||||
// <simplerecordbegin> ... <endrecord> is matched
|
||||
assertIsBracket(model, new Position(2, 3), [new Range(2, 3, 2, 20), new Range(3, 3, 3, 12)]);
|
||||
assertIsBracket(model, new Position(3, 3), [new Range(3, 3, 3, 12), new Range(2, 3, 2, 20)]);
|
||||
|
||||
model.dispose();
|
||||
registration.dispose();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
suite('TextModelWithTokens regression tests', () => {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user