Skip to content
This repository was archived by the owner on Dec 8, 2020. It is now read-only.

Commit fa87d87

Browse files
authored
Fix initial configuration of RLS mode (#277)
1 parent 767bdaf commit fa87d87

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/components/configuration/Rustup.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class Rustup {
3636
/**
3737
* Components received by invoking rustup
3838
*/
39-
private components: { [toolchain: string]: string[] };
39+
private components: { [toolchain: string]: string[] | undefined };
4040

4141
/**
4242
* Toolchains received by invoking rustup
@@ -321,6 +321,10 @@ export class Rustup {
321321
return false;
322322
}
323323
const components = this.components[nightlyToolchain.toString(true, false)];
324+
if (!components) {
325+
logger.error('no components');
326+
return false;
327+
}
324328
const rlsComponent = components.find(component => component.startsWith(Rustup.getRlsComponentName()));
325329
if (!rlsComponent) {
326330
return false;
@@ -373,6 +377,10 @@ export class Rustup {
373377
return false;
374378
}
375379
const components = this.components[nightlyToolchain.toString(true, false)];
380+
if (!components) {
381+
logger.error('no components');
382+
return false;
383+
}
376384
const component: string | undefined = components.find(c => c.startsWith(Rustup.getRustAnalysisComponentName()));
377385
if (!component) {
378386
return false;
@@ -517,6 +525,9 @@ export class Rustup {
517525
private getInstalledComponents(toolchain: Toolchain): string[] {
518526
const toolchainAsString = toolchain.toString(true, false);
519527
const components = this.components[toolchainAsString];
528+
if (!components) {
529+
return [];
530+
}
520531
const installedComponents = components.filter(component => {
521532
return component.endsWith(Rustup.getSuffixForInstalledComponent());
522533
});

src/extension.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ async function askPermissionToInstall(what: string): Promise<boolean> {
6666
*/
6767
async function handleMissingNightlyToolchain(logger: ChildLogger, rustup: Rustup): Promise<boolean> {
6868
const functionLogger = logger.createChildLogger('handleMissingNightlyToolchain: ');
69-
await window.showInformationMessage('The nightly toolchain is not installed, but is required to install RLS');
7069
const permissionGranted = await askPermissionToInstall('the nightly toolchain');
7170
functionLogger.debug(`permissionGranted=${permissionGranted}`);
7271
if (!permissionGranted) {
@@ -78,7 +77,12 @@ async function handleMissingNightlyToolchain(logger: ChildLogger, rustup: Rustup
7877
if (!toolchainInstalled) {
7978
return false;
8079
}
81-
await rustup.updateComponents(<Toolchain>Toolchain.parse('nightly'));
80+
const nightlyToolchain = rustup.getNightlyToolchain(functionLogger);
81+
if (!nightlyToolchain) {
82+
functionLogger.error('the nightly toolchain has not been installed');
83+
return false;
84+
}
85+
await rustup.updateComponents(nightlyToolchain);
8286
return true;
8387
}
8488

0 commit comments

Comments
 (0)