提交 3f737ae1 编写于 作者: M Matt Bierner

Strict null check textModelResolver

上级 7d884520
...@@ -446,6 +446,8 @@ ...@@ -446,6 +446,8 @@
"./vs/workbench/services/textfile/common/textFileEditorModelManager.ts", "./vs/workbench/services/textfile/common/textFileEditorModelManager.ts",
"./vs/workbench/services/textfile/common/textfiles.ts", "./vs/workbench/services/textfile/common/textfiles.ts",
"./vs/workbench/services/textfile/node/textResourcePropertiesService.ts", "./vs/workbench/services/textfile/node/textResourcePropertiesService.ts",
"./vs/workbench/services/textmodelResolver/common/textModelResolverService.ts",
"./vs/workbench/services/timer/electron-browser/timerService.ts",
"./vs/workbench/services/title/common/titleService.ts", "./vs/workbench/services/title/common/titleService.ts",
"./vs/workbench/services/untitled/common/untitledEditorService.ts", "./vs/workbench/services/untitled/common/untitledEditorService.ts",
"./vs/workbench/services/viewlet/browser/viewlet.ts", "./vs/workbench/services/viewlet/browser/viewlet.ts",
......
...@@ -12,7 +12,7 @@ import { IModelService } from 'vs/editor/common/services/modelService'; ...@@ -12,7 +12,7 @@ import { IModelService } from 'vs/editor/common/services/modelService';
import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorModel'; import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorModel';
import { ITextFileService, LoadReason } from 'vs/workbench/services/textfile/common/textfiles'; import { ITextFileService, LoadReason } from 'vs/workbench/services/textfile/common/textfiles';
import * as network from 'vs/base/common/network'; import * as network from 'vs/base/common/network';
import { ITextModelService, ITextModelContentProvider, ITextEditorModel } from 'vs/editor/common/services/resolverService'; import { ITextModelService, ITextModelContentProvider, ITextEditorModel, IActiveTextEditorModel } from 'vs/editor/common/services/resolverService';
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel';
import { IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
...@@ -104,7 +104,7 @@ class ResourceModelCollection extends ReferenceCollection<Promise<ITextEditorMod ...@@ -104,7 +104,7 @@ class ResourceModelCollection extends ReferenceCollection<Promise<ITextEditorMod
private resolveTextModelContent(key: string): Promise<ITextModel> { private resolveTextModelContent(key: string): Promise<ITextModel> {
const resource = URI.parse(key); const resource = URI.parse(key);
const providers = this.providers[resource.scheme] || []; const providers = this.providers[resource.scheme] || [];
const factories = providers.map(p => () => Promise.resolve(p.provideTextContent(resource))); const factories = providers.map(p => () => Promise.resolve<ITextModel | undefined | null>(p.provideTextContent(resource)));
return first(factories).then(model => { return first(factories).then(model => {
if (!model) { if (!model) {
...@@ -130,15 +130,15 @@ export class TextModelResolverService implements ITextModelService { ...@@ -130,15 +130,15 @@ export class TextModelResolverService implements ITextModelService {
this.resourceModelCollection = instantiationService.createInstance(ResourceModelCollection); this.resourceModelCollection = instantiationService.createInstance(ResourceModelCollection);
} }
createModelReference(resource: URI): Promise<IReference<ITextEditorModel>> { createModelReference(resource: URI): Promise<IReference<IActiveTextEditorModel>> {
return this._createModelReference(resource); return this._createModelReference(resource);
} }
private _createModelReference(resource: URI): Promise<IReference<ITextEditorModel>> { private _createModelReference(resource: URI): Promise<IReference<IActiveTextEditorModel>> {
// Untitled Schema: go through cached input // Untitled Schema: go through cached input
if (resource.scheme === network.Schemas.untitled) { if (resource.scheme === network.Schemas.untitled) {
return this.untitledEditorService.loadOrCreate({ resource }).then(model => new ImmortalReference(model)); return this.untitledEditorService.loadOrCreate({ resource }).then(model => new ImmortalReference(model as IActiveTextEditorModel));
} }
// InMemory Schema: go through model service cache // InMemory Schema: go through model service cache
...@@ -149,7 +149,7 @@ export class TextModelResolverService implements ITextModelService { ...@@ -149,7 +149,7 @@ export class TextModelResolverService implements ITextModelService {
return Promise.reject(new Error('Cant resolve inmemory resource')); return Promise.reject(new Error('Cant resolve inmemory resource'));
} }
return Promise.resolve(new ImmortalReference(this.instantiationService.createInstance(ResourceEditorModel, resource))); return Promise.resolve(new ImmortalReference(this.instantiationService.createInstance(ResourceEditorModel, resource) as IActiveTextEditorModel));
} }
const ref = this.resourceModelCollection.acquire(resource.toString()); const ref = this.resourceModelCollection.acquire(resource.toString());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册