MCPcopy Index your code
hub / github.com/angular/angular / performCompilation

Function performCompilation

packages/compiler-cli/src/perform_compile.ts:255–327  ·  view source on GitHub ↗
({
  rootNames,
  options,
  host,
  oldProgram,
  emitCallback,
  mergeEmitResultsCallback,
  gatherDiagnostics = defaultGatherDiagnostics,
  customTransformers,
  emitFlags = api.EmitFlags.Default,
  forceEmit = false,
  modifiedResourceFiles = null,
}: {
  rootNames: string[];
  options: api.CompilerOptions;
  host?: api.CompilerHost;
  oldProgram?: api.Program;
  emitCallback?: api.TsEmitCallback<CbEmitRes>;
  mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback<CbEmitRes>;
  gatherDiagnostics?: (program: api.Program) => ReadonlyArray<ts.Diagnostic>;
  customTransformers?: api.CustomTransformers;
  emitFlags?: api.EmitFlags;
  forceEmit?: boolean;
  modifiedResourceFiles?: Set<string> | null;
})

Source from the content-addressed store, hash-verified

253}
254
255export function performCompilation<CbEmitRes extends ts.EmitResult = ts.EmitResult>({
256 rootNames,
257 options,
258 host,
259 oldProgram,
260 emitCallback,
261 mergeEmitResultsCallback,
262 gatherDiagnostics = defaultGatherDiagnostics,
263 customTransformers,
264 emitFlags = api.EmitFlags.Default,
265 forceEmit = false,
266 modifiedResourceFiles = null,
267}: {
268 rootNames: string[];
269 options: api.CompilerOptions;
270 host?: api.CompilerHost;
271 oldProgram?: api.Program;
272 emitCallback?: api.TsEmitCallback<CbEmitRes>;
273 mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback<CbEmitRes>;
274 gatherDiagnostics?: (program: api.Program) => ReadonlyArray<ts.Diagnostic>;
275 customTransformers?: api.CustomTransformers;
276 emitFlags?: api.EmitFlags;
277 forceEmit?: boolean;
278 modifiedResourceFiles?: Set<string> | null;
279}): PerformCompilationResult {
280 let program: api.Program | undefined;
281 let emitResult: ts.EmitResult | undefined;
282 let allDiagnostics: Array<ts.Diagnostic> = [];
283 try {
284 if (!host) {
285 host = ng.createCompilerHost({options});
286 }
287 if (modifiedResourceFiles) {
288 host.getModifiedResourceFiles = () => modifiedResourceFiles;
289 }
290
291 program = ng.createProgram({rootNames, host, options, oldProgram});
292
293 const beforeDiags = Date.now();
294 allDiagnostics.push(...gatherDiagnostics(program!));
295 if (options.diagnostics) {
296 const afterDiags = Date.now();
297 allDiagnostics.push(
298 createMessageDiagnostic(`Time for diagnostics: ${afterDiags - beforeDiags}ms.`),
299 );
300 }
301
302 if (!hasErrors(allDiagnostics)) {
303 emitResult = program!.emit({
304 emitCallback,
305 mergeEmitResultsCallback,
306 customTransformers,
307 emitFlags,
308 forceEmit,
309 });
310 allDiagnostics.push(...emitResult.diagnostics);
311 return {diagnostics: allDiagnostics, program, emitResult};
312 }

Callers 4

compileTestFunction · 0.90
doCompilationFunction · 0.90
mainFunction · 0.90
mainDiagnosticsForTestFunction · 0.90

Calls 6

createMessageDiagnosticFunction · 0.90
hasErrorsFunction · 0.85
createCompilerHostMethod · 0.65
emitMethod · 0.65
createProgramMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…