private void ConvertExportsFile(IModuleRegistry moduleRegistry, ParsedModule module, Package package) { var exportsFileModule = ModuleLiteral.CreateFileModule( m_javaScriptWorkspaceResolver.ExportsFile, moduleRegistry, package, module.Specs[m_javaScriptWorkspaceResolver.ExportsFile].LineMap); // For each symbol defined in the resolver settings for exports, add all specified project outputs int pos = 1; foreach (var export in Exports) { FrontEndUtilities.AddEvaluationCallbackToFileModule( exportsFileModule, (context, moduleLiteral, evaluationStackFrame) => CollectProjectOutputsAsync(module.Definition.Specs, moduleLiteral.Qualifier.QualifierId, export, context.EvaluationScheduler), export.FullSymbol, pos); pos += 2; } var moduleInfo = new UninstantiatedModuleInfo( // We can register an empty one since we have the module populated properly new Script.SourceFile( m_javaScriptWorkspaceResolver.ExportsFile, new Declaration[] { }), exportsFileModule, Context.QualifierTable.EmptyQualifierSpaceId); moduleRegistry.AddUninstantiatedModuleInfo(moduleInfo); }
/// <inheritdoc/> public Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace) { // This resolver owns only one module. if (!module.Definition.Equals(ModuleDefinition)) { return(Task.FromResult <bool?>(null)); } var exportsFileModule = ModuleLiteral.CreateFileModule( m_javaScriptWorkspaceResolver.ExportsFile, moduleRegistry, FrontEndUtilities.CreatePackage(module.Definition, Context.StringTable), module.Specs[m_javaScriptWorkspaceResolver.ExportsFile].LineMap); // For each symbol defined in the resolver settings for exports, add all specified project outputs int pos = 1; foreach (var export in Exports) { FrontEndUtilities.AddEvaluationCallbackToFileModule( exportsFileModule, (context, moduleLiteral, evaluationStackFrame) => CollectProjectOutputsAsync(module.Definition.Specs, moduleLiteral.Qualifier.QualifierId, export), export.FullSymbol, pos); pos += 2; } var moduleInfo = new UninstantiatedModuleInfo( // We can register an empty one since we have the module populated properly new SourceFile( m_javaScriptWorkspaceResolver.ExportsFile, new Declaration[] {}), exportsFileModule, Context.QualifierTable.EmptyQualifierSpaceId); moduleRegistry.AddUninstantiatedModuleInfo(moduleInfo); return(Task.FromResult <bool?>(true)); }