@@ -6,6 +6,7 @@ import { ContextResolver, ResolveRequest, SupportedContextItem } from '@github/c
66import { randomUUID } from 'crypto' ;
77import * as vscode from 'vscode' ;
88import { DocumentSelector } from 'vscode-languageserver-protocol' ;
9+ import { isNumber , isString } from '../common' ;
910import { getOutputChannelLogger , Logger } from '../logger' ;
1011import * as telemetry from '../telemetry' ;
1112import { 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 > {
0 commit comments