Skip to content

Commit c1a0def

Browse files
committed
Merge remote-tracking branch 'origin/master' into pine/alwaysShowInlineDetails
2 parents 591a43e + 79253d4 commit c1a0def

179 files changed

Lines changed: 3419 additions & 2349 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

extensions/python/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"engines": { "vscode": "*" },
99
"activationEvents": ["onLanguage:python"],
1010
"main": "./out/pythonMain",
11+
"extensionKind": [ "ui", "workspace" ],
1112
"contributes": {
1213
"languages": [{
1314
"id": "python",

extensions/typescript-language-features/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,8 @@
957957
],
958958
"typescriptServerPlugins": [
959959
{
960-
"name": "typescript-vscode-sh-plugin"
960+
"name": "typescript-vscode-sh-plugin",
961+
"enableForWorkspaceTypeScriptVersions": true
961962
}
962963
]
963964
}

extensions/typescript-language-features/src/features/completions.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import FileConfigurationManager from './fileConfigurationManager';
2323

2424
const localize = nls.loadMessageBundle();
2525

26+
const knownTsTriggerCharacters = new Set<string>(['.', '"', '\'', '`', '/', '@', '<']);
27+
2628
interface DotAccessorContext {
2729
readonly range: vscode.Range;
2830
readonly text: string;
@@ -459,22 +461,14 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
459461
}
460462

461463
private getTsTriggerCharacter(context: vscode.CompletionContext): Proto.CompletionsTriggerCharacter | undefined {
462-
// Workaround for https://github.com/microsoft/TypeScript/issues/36234
463-
if (context.triggerCharacter === '#') {
464-
return undefined;
465-
}
466-
467464
// Workaround for https://github.com/Microsoft/TypeScript/issues/27321
468465
if (context.triggerCharacter === '@'
469466
&& this.client.apiVersion.gte(API.v310) && this.client.apiVersion.lt(API.v320)
470467
) {
471468
return undefined;
472469
}
473470

474-
// Workaround for https://github.com/Microsoft/TypeScript/issues/27321
475-
if (context.triggerCharacter === '@'
476-
&& this.client.apiVersion.gte(API.v310) && this.client.apiVersion.lt(API.v320)
477-
) {
471+
if (context.triggerCharacter && !knownTsTriggerCharacters.has(context.triggerCharacter)) {
478472
return undefined;
479473
}
480474

@@ -524,7 +518,7 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
524518
}
525519
item.additionalTextEdits = codeAction.additionalTextEdits;
526520

527-
if (detail && item.useCodeSnippet) {
521+
if (item.useCodeSnippet) {
528522
const shouldCompleteFunction = await this.isValidFunctionCompletionContext(filepath, item.position, item.document, token);
529523
if (shouldCompleteFunction) {
530524
const { snippet, parameterCount } = snippetForFunctionCall(item, detail.displayParts);

extensions/typescript-language-features/src/features/formatting.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,9 @@ class TypeScriptFormattingProvider implements vscode.DocumentRangeFormattingEdit
6060
if (response.type !== 'response' || !response.body) {
6161
return [];
6262
}
63-
const edits = response.body;
63+
6464
const result: vscode.TextEdit[] = [];
65-
if (!edits) {
66-
return result;
67-
}
68-
for (const edit of edits) {
65+
for (const edit of response.body) {
6966
const textEdit = typeConverters.TextEdit.fromCodeEdit(edit);
7067
const range = textEdit.range;
7168
// Work around for https://github.com/Microsoft/TypeScript/issues/6700.
@@ -99,4 +96,4 @@ export function register(
9996
vscode.languages.registerDocumentRangeFormattingEditProvider(selector, formattingProvider),
10097
);
10198
});
102-
}
99+
}

extensions/typescript-language-features/src/tsServer/callbackMap.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { ServerResponse } from '../typescriptService';
99
export interface CallbackItem<R> {
1010
readonly onSuccess: (value: R) => void;
1111
readonly onError: (err: Error) => void;
12-
readonly startTime: number;
12+
readonly queuingStartTime: number;
1313
readonly isAsync: boolean;
1414
}
1515

@@ -48,4 +48,4 @@ export class CallbackMap<R extends Proto.Response> {
4848
this._asyncCallbacks.delete(seq);
4949
}
5050
}
51-
}
51+
}

extensions/typescript-language-features/src/tsServer/server.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,10 @@ export class ProcessBasedTsServer extends Disposable implements ITypeScriptServe
140140
const event = message as Proto.Event;
141141
if (event.event === 'requestCompleted') {
142142
const seq = (event as Proto.RequestCompletedEvent).body.request_seq;
143-
const p = this._callbacks.fetch(seq);
144-
if (p) {
145-
this._tracer.traceRequestCompleted(this._serverId, 'requestCompleted', seq, p.startTime);
146-
p.onSuccess(undefined);
143+
const callback = this._callbacks.fetch(seq);
144+
if (callback) {
145+
this._tracer.traceRequestCompleted(this._serverId, 'requestCompleted', seq, callback);
146+
callback.onSuccess(undefined);
147147
}
148148
} else {
149149
this._tracer.traceEvent(this._serverId, event);
@@ -186,7 +186,7 @@ export class ProcessBasedTsServer extends Disposable implements ITypeScriptServe
186186
return;
187187
}
188188

189-
this._tracer.traceResponse(this._serverId, response, callback.startTime);
189+
this._tracer.traceResponse(this._serverId, response, callback);
190190
if (response.success) {
191191
callback.onSuccess(response);
192192
} else if (response.message === 'No content available.') {
@@ -210,7 +210,7 @@ export class ProcessBasedTsServer extends Disposable implements ITypeScriptServe
210210
let result: Promise<ServerResponse.Response<Proto.Response>> | undefined;
211211
if (executeInfo.expectsResult) {
212212
result = new Promise<ServerResponse.Response<Proto.Response>>((resolve, reject) => {
213-
this._callbacks.add(request.seq, { onSuccess: resolve, onError: reject, startTime: Date.now(), isAsync: executeInfo.isAsync }, executeInfo.isAsync);
213+
this._callbacks.add(request.seq, { onSuccess: resolve, onError: reject, queuingStartTime: Date.now(), isAsync: executeInfo.isAsync }, executeInfo.isAsync);
214214

215215
if (executeInfo.token) {
216216
executeInfo.token.onCancellationRequested(() => {

extensions/typescript-language-features/src/typescriptServiceClient.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ namespace ServerState {
5252

5353
export class Running {
5454
readonly type = Type.Running;
55+
5556
constructor(
5657
public readonly server: ITypeScriptServer,
5758

@@ -68,6 +69,14 @@ namespace ServerState {
6869
) { }
6970

7071
public readonly toCancelOnResourceChange = new Set<ToCancelOnResourceChanged>();
72+
73+
updateTsserverVersion(tsserverVersion: string) {
74+
this.tsserverVersion = tsserverVersion;
75+
}
76+
77+
updateLangaugeServiceEnabled(enabled: boolean) {
78+
this.langaugeServiceEnabled = enabled;
79+
}
7180
}
7281

7382
export class Errored {
@@ -173,7 +182,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType
173182
return this.serverState.tsserverVersion;
174183
}
175184
}
176-
return this.apiVersion.version;
185+
return this.apiVersion.fullVersionString;
177186
}));
178187

179188
this.typescriptServerSpawner = new TypeScriptServerSpawner(this.versionProvider, this.logDirectoryProvider, this.pluginPathsProvider, this.logger, this.telemetryReporter, this.tracer);
@@ -705,7 +714,10 @@ export default class TypeScriptServiceClient extends Disposable implements IType
705714
return this.bufferSyncSupport.interuptGetErr(f);
706715
}
707716

708-
private fatalError(command: string, error: Error): void {
717+
private fatalError(command: string, error: unknown): void {
718+
if (!(error instanceof TypeScriptServerError)) {
719+
console.log('fdasfasdf');
720+
}
709721
/* __GDPR__
710722
"fatalError" : {
711723
"${include}": [
@@ -759,10 +771,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType
759771
{
760772
const body = (event as Proto.ProjectLanguageServiceStateEvent).body!;
761773
if (this.serverState.type === ServerState.Type.Running) {
762-
this.serverState = {
763-
...this.serverState,
764-
langaugeServiceEnabled: body.languageServiceEnabled,
765-
};
774+
this.serverState.updateLangaugeServiceEnabled(body.languageServiceEnabled);
766775
}
767776
this._onProjectLanguageServiceStateChanged.fire(body);
768777
break;
@@ -831,10 +840,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType
831840
}
832841
if (telemetryData.telemetryEventName === 'projectInfo') {
833842
if (this.serverState.type === ServerState.Type.Running) {
834-
this.serverState = {
835-
...this.serverState,
836-
tsserverVersion: properties['version']
837-
};
843+
this.serverState.updateTsserverVersion(properties['version']);
838844
}
839845
}
840846

extensions/typescript-language-features/src/utils/api.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const localize = nls.loadMessageBundle();
1010

1111
export default class API {
1212
private static fromSimpleString(value: string): API {
13-
return new API(value, value);
13+
return new API(value, value, value);
1414
}
1515

1616
public static readonly defaultVersion = API.fromSimpleString('1.0.0');
@@ -36,20 +36,32 @@ export default class API {
3636
public static fromVersionString(versionString: string): API {
3737
let version = semver.valid(versionString);
3838
if (!version) {
39-
return new API(localize('invalidVersion', 'invalid version'), '1.0.0');
39+
return new API(localize('invalidVersion', 'invalid version'), '1.0.0', '1.0.0');
4040
}
4141

4242
// Cut off any prerelease tag since we sometimes consume those on purpose.
4343
const index = versionString.indexOf('-');
4444
if (index >= 0) {
4545
version = version.substr(0, index);
4646
}
47-
return new API(versionString, version);
47+
return new API(versionString, version, versionString);
4848
}
4949

5050
private constructor(
51+
/**
52+
* Human readable string for the current version. Displayed in the UI
53+
*/
5154
public readonly displayName: string,
52-
public readonly version: string
55+
56+
/**
57+
* Semver version, e.g. '3.9.0'
58+
*/
59+
public readonly version: string,
60+
61+
/**
62+
* Full version string including pre-release tags, e.g. '3.9.0-beta'
63+
*/
64+
public readonly fullVersionString: string,
5365
) { }
5466

5567
public gte(other: API): boolean {

extensions/typescript-language-features/src/utils/telemetry.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,20 @@ export class VSCodeTelemetryReporter implements TelemetryReporter {
3030
private readonly clientVersionDelegate: () => string
3131
) { }
3232

33-
public logTelemetry(eventName: string, properties?: { [prop: string]: string }) {
33+
public logTelemetry(eventName: string, properties: { [prop: string]: string } = {}) {
3434
const reporter = this.reporter;
35-
if (reporter) {
36-
if (!properties) {
37-
properties = {};
38-
}
35+
if (!reporter) {
36+
return;
37+
}
3938

40-
/* __GDPR__FRAGMENT__
41-
"TypeScriptCommonProperties" : {
42-
"version" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
43-
}
44-
*/
45-
properties['version'] = this.clientVersionDelegate();
39+
/* __GDPR__FRAGMENT__
40+
"TypeScriptCommonProperties" : {
41+
"version" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
42+
}
43+
*/
44+
properties['version'] = this.clientVersionDelegate();
4645

47-
reporter.sendTelemetryEvent(eventName, properties);
48-
}
46+
reporter.sendTelemetryEvent(eventName, properties);
4947
}
5048

5149
public dispose() {

extensions/typescript-language-features/src/utils/tracer.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ namespace Trace {
2929
}
3030
}
3131

32+
interface RequestExecutionMetadata {
33+
readonly queuingStartTime: number
34+
}
35+
3236
export default class Tracer {
3337
private trace?: Trace;
3438

@@ -61,22 +65,22 @@ export default class Tracer {
6165
this.logTrace(serverId, `Sending request: ${request.command} (${request.seq}). Response expected: ${responseExpected ? 'yes' : 'no'}. Current queue length: ${queueLength}`, data);
6266
}
6367

64-
public traceResponse(serverId: string, response: Proto.Response, startTime: number): void {
68+
public traceResponse(serverId: string, response: Proto.Response, meta: RequestExecutionMetadata): void {
6569
if (this.trace === Trace.Off) {
6670
return;
6771
}
6872
let data: string | undefined = undefined;
6973
if (this.trace === Trace.Verbose && response.body) {
7074
data = `Result: ${JSON.stringify(response.body, null, 4)}`;
7175
}
72-
this.logTrace(serverId, `Response received: ${response.command} (${response.request_seq}). Request took ${Date.now() - startTime} ms. Success: ${response.success} ${!response.success ? '. Message: ' + response.message : ''}`, data);
76+
this.logTrace(serverId, `Response received: ${response.command} (${response.request_seq}). Request took ${Date.now() - meta.queuingStartTime} ms. Success: ${response.success} ${!response.success ? '. Message: ' + response.message : ''}`, data);
7377
}
7478

75-
public traceRequestCompleted(serverId: string, command: string, request_seq: number, startTime: number): any {
79+
public traceRequestCompleted(serverId: string, command: string, request_seq: number, meta: RequestExecutionMetadata): any {
7680
if (this.trace === Trace.Off) {
7781
return;
7882
}
79-
this.logTrace(serverId, `Async response received: ${command} (${request_seq}). Request took ${Date.now() - startTime} ms.`);
83+
this.logTrace(serverId, `Async response received: ${command} (${request_seq}). Request took ${Date.now() - meta.queuingStartTime} ms.`);
8084
}
8185

8286
public traceEvent(serverId: string, event: Proto.Event): void {
@@ -95,4 +99,4 @@ export default class Tracer {
9599
this.logger.logLevel('Trace', `<${serverId}> ${message}`, data);
96100
}
97101
}
98-
}
102+
}

0 commit comments

Comments
 (0)