refactor: split out a common typecheckFile func (#344)

* refactor: split out a common typecheckFile func

- this is used in 3 places and going to be more for the code I'm adding
  to fix type-only imports
  - so DRY it up and standardize the functionality too
    - some places had `noErrors = false` in one place while others had
      it in another
    - same for `printDiagnostics`
    - but the ordering actually doesn't matter, so just keep it
      consistent and the same
      - and then can split a common function that does both out

- technically, now getDiagnostics is _only_ used in typecheckFile, so
  I could link to the two together, but I'm refactoring that one up
  a little
  - but this a good, small example of how refactoring one part of a
    codebase can make it easier to identify more similar pieces and then
    refactor even more

* fix lint error on shadowed name
This commit is contained in:
Anton Gilgur 2022-06-20 18:39:13 -04:00 committed by GitHub
parent fee9547ebc
commit b9dce9dfd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,7 +8,7 @@ import * as resolve from "resolve";
import findCacheDir from "find-cache-dir";
import { RollupContext } from "./rollupcontext";
import { ConsoleContext, VerbosityLevel } from "./context";
import { ConsoleContext, IContext, VerbosityLevel } from "./context";
import { LanguageServiceHost } from "./host";
import { TsCache, convertDiagnostic, convertEmitOutput, getAllReferences } from "./tscache";
import { tsModule, setTypescriptModule } from "./tsproxy";
@ -56,6 +56,15 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
}));
}
const typecheckFile = (id: string, snapshot: tsTypes.IScriptSnapshot, tcContext: IContext) =>
{
const diagnostics = getDiagnostics(id, snapshot);
printDiagnostics(tcContext, diagnostics, parsedConfig.options.pretty === true);
if (diagnostics.length > 0)
noErrors = false;
}
const pluginOptions: IOptions = Object.assign({},
{
check: true,
@ -201,11 +210,8 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
if (output.emitSkipped)
{
noErrors = false;
// always checking on fatal errors, even if options.check is set to false
const diagnostics = getDiagnostics(id, snapshot);
printDiagnostics(contextWrapper, diagnostics, parsedConfig.options.pretty === true);
typecheckFile(id, snapshot, contextWrapper);
// since no output was generated, aborting compilation
cache().done();
@ -218,13 +224,7 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
});
if (pluginOptions.check)
{
const diagnostics = getDiagnostics(id, snapshot);
if (diagnostics.length > 0)
noErrors = false;
printDiagnostics(contextWrapper, diagnostics, parsedConfig.options.pretty === true);
}
typecheckFile(id, snapshot, contextWrapper);
if (!result)
return undefined;
@ -277,11 +277,8 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
return;
const snapshot = servicesHost.getScriptSnapshot(id);
if (!snapshot)
return;
const diagnostics = getDiagnostics(id, snapshot);
printDiagnostics(context, diagnostics, parsedConfig.options.pretty === true);
if (snapshot)
typecheckFile(id, snapshot, context);
});
}
@ -289,7 +286,6 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
context.info(yellow("there were errors or warnings."));
cache().done();
generateRound++;
},