Skip to content

Commit 8cc8535

Browse files
authored
fix type checking (#13334)
1 parent db1cfda commit 8cc8535

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

Extension/src/LanguageServer/copilotCompletionContextProvider.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { ContextResolver, ResolveRequest, SupportedContextItem } from '@github/c
66
import { randomUUID } from 'crypto';
77
import * as vscode from 'vscode';
88
import { DocumentSelector } from 'vscode-languageserver-protocol';
9+
import { isNumber, isString } from '../common';
910
import { getOutputChannelLogger, Logger } from '../logger';
1011
import * as telemetry from '../telemetry';
1112
import { CopilotCompletionContextResult } from './client';
@@ -176,8 +177,8 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
176177
telemetry.addComputeContextElapsed(CopilotCompletionContextProvider.getRoundedDuration(getCompletionContextStartTime));
177178

178179
return resultMismatch ? undefined : copilotCompletionContext;
179-
} catch (e) {
180-
if (e instanceof vscode.CancellationError || (e as Error)?.message === CancellationError.Canceled) {
180+
} catch (e: any) {
181+
if (e instanceof vscode.CancellationError || e.message === CancellationError.Canceled) {
181182
telemetry.addInternalCanceled(CopilotCompletionContextProvider.getRoundedDuration(startTime));
182183
logMessage += `, (internal cancellation)`;
183184
throw InternalCancellationError;
@@ -188,8 +189,11 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
188189
}
189190

190191
telemetry.addError();
191-
const err = e as Error;
192-
out.appendLine(`Copilot: getCompletionContextWithCancellation(${documentUri}: ${caretOffset}): Error: '${err?.message}', stack '${err?.stack}`);
192+
if (e.message && e.stack) {
193+
out.appendLine(`Copilot: getCompletionContextWithCancellation(${documentUri}: ${caretOffset}): Error: '${e.message}', stack '${e.stack}`);
194+
} else {
195+
out.appendLine(`Copilot: getCompletionContextWithCancellation(${documentUri}: ${caretOffset}): Error: '${e}'`);
196+
}
193197
return undefined;
194198
} finally {
195199
out.appendLine(logMessage);
@@ -203,7 +207,7 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
203207
private async fetchTimeBudgetFactor(context: ResolveRequest): Promise<number> {
204208
try {
205209
const budgetFactor = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor);
206-
return ((budgetFactor as number) ?? CopilotCompletionContextProvider.defaultTimeBudgetFactor) / 100.0;
210+
return (isNumber(budgetFactor) ? budgetFactor : CopilotCompletionContextProvider.defaultTimeBudgetFactor) / 100.0;
207211
} catch (e) {
208212
console.warn(`fetchTimeBudgetFactor(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor}, using default: `, e);
209213
return CopilotCompletionContextProvider.defaultTimeBudgetFactor;
@@ -213,7 +217,7 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
213217
private async fetchMaxDistanceToCaret(context: ResolveRequest): Promise<number> {
214218
try {
215219
const maxDistance = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret);
216-
return (maxDistance as number) ?? CopilotCompletionContextProvider.defaultMaxCaretDistance;
220+
return isNumber(maxDistance) ? maxDistance : CopilotCompletionContextProvider.defaultMaxCaretDistance;
217221
} catch (e) {
218222
console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret}, using default: `, e);
219223
return CopilotCompletionContextProvider.defaultMaxCaretDistance;
@@ -222,13 +226,14 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
222226

223227
private async getEnabledFeatureNames(context: ResolveRequest): Promise<string[] | undefined> {
224228
try {
225-
let enabledFeatureNames = new CppSettings().cppCodeSnippetsFeatureNames;
226-
enabledFeatureNames ??= context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures) as string;
227-
return enabledFeatureNames?.split(',').map(s => s.trim());
229+
const enabledFeatureNames = new CppSettings().cppCodeSnippetsFeatureNames ?? context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures);
230+
if (isString(enabledFeatureNames)) {
231+
return enabledFeatureNames.split(',').map(s => s.trim());
232+
}
228233
} catch (e) {
229234
console.warn(`getEnabledFeatures(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures}: `, e);
230-
return undefined;
231235
}
236+
return undefined;
232237
}
233238

234239
private async getEnabledFeatureFlag(context: ResolveRequest): Promise<CopilotCompletionContextFeatures | undefined> {

Extension/src/LanguageServer/settings.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -471,14 +471,17 @@ export class CppSettings extends Settings {
471471
if (!(vscode as any).lm) {
472472
return "disabled";
473473
}
474-
const val = super.Section.get<any>("copilotHover");
475-
if (val === undefined) {
476-
return "default";
474+
if (super.Section.get<any>("copilotHover") === "enabled") {
475+
return "enabled";
477476
}
478-
return val as string;
477+
return this.getAsString("copilotHover");
479478
}
480479
public get cppCodeSnippetsFeatureNames(): string | undefined {
481-
return super.Section.get<string>("cppCodeSnippetsFeatureNames");
480+
const value = super.Section.get<any>("cppCodeSnippetsFeatureNames");
481+
if (isString(value)) {
482+
return value;
483+
}
484+
return undefined;
482485
}
483486
public get formattingEngine(): string { return this.getAsString("formatting"); }
484487
public get vcFormatIndentBraces(): boolean { return this.getAsBoolean("vcFormat.indent.braces"); }

0 commit comments

Comments
 (0)