Skip to content

Commit

Permalink
refactor: split out a common typecheckFile func (#344)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
agilgur5 authored Jun 20, 2022
1 parent fee9547 commit b9dce9d
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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();
Expand All @@ -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;
Expand Down Expand Up @@ -277,19 +277,15 @@ 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);
});
}

if (!watchMode && !noErrors)
context.info(yellow("there were errors or warnings."));

cache().done();

generateRound++;
},

Expand Down

0 comments on commit b9dce9d

Please sign in to comment.