-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: type-check include
d files missed by transform
(type-only files)
#345
fix: type-check include
d files missed by transform
(type-only files)
#345
Commits on Jul 6, 2022
-
fix: type-check
include
d files missed by transform (type-only files)- type-only files never get processed by Rollup as their imports are elided/removed by TS in the resulting compiled JS file - so, as a workaround, make sure that all files in the `tsconfig` `include` (i.e. in `parsedConfig.fileNames`) are also type-checked - note that this will not catch _all_ type-only imports, in particular if one is using `tsconfig` `files` (or in general _not_ using glob patterns in `include`) -- this is just a workaround, that requires a separate fix - we do the same process for generating declarations for "missed" files right now in `_onwrite`, so basically do the same thing but for type-checking in `_ongenerate` (_technically_ speaking, there could be full TS files (i.e. _not_ type-only) that are in the `include` and weren't transformed - these would basically be independent TS files not part of the bundle that the user wanted type-checking and declarations for (as we _already_ generate declarations for those files))
Configuration menu - View commit details
-
Copy full SHA for 2716344 - Browse repository at this point
Copy the full SHA 2716344View commit details -
move misssed type-checking to
buildEnd
hook, remove declarations check- `buildEnd` is a more correct place for it, since this does not generate any output files - (unlike the missed declarations) - and this means it's only called once per build, vs. once per output - remove the check against the `declarations` dict as one can type-check without outputting declarations - i.e. if `declaration: false`; not the most common use-case for rpt2, but it is one
Configuration menu - View commit details
-
Copy full SHA for 53604ff - Browse repository at this point
Copy the full SHA 53604ffView commit details -
add new checkedFiles Set to not duplicate type-checking
- since `parsedConfig.fileNames` could include files that were already checked during the `transform` hook - and because `declarations` dict is empty when `declaration: false`, so can't check against that
Configuration menu - View commit details
-
Copy full SHA for 5e6fc1e - Browse repository at this point
Copy the full SHA 5e6fc1eView commit details -
move checkedFiles.add to the beginning of typecheckFile
- because printing diagnostics can bail if the category was error - that can result in a file being type-checked but not added to checkedFiles
Configuration menu - View commit details
-
Copy full SHA for 9ba4ced - Browse repository at this point
Copy the full SHA 9ba4cedView commit details -
wip: fuse _ongenerate functionality into buildEnd, _onwrite into gene…
…rateBundle - per ezolenko, the whole generateRound etc stuff was a workaround because the buildEnd hook actually _didn't exist_ before - so now that it does, we can use it to simplify some logic - no longer need `_ongenerate` as that should be in `buildEnd`, and no longer need `_onwrite` as it is the only thing called in `generateBundle`, so just combine them - importantly, `buildEnd` also occurs before output generation, so this ensures that type-checking still occurs even if `bundle.generate()` is not called - also move the `walkTree` call to above the "missed" type-checking as it needs to come first - it does unconditional type-checking once per watch cycle, whereas "missed" only type-checks those that were, well, "missed" - so in order to not have duplication, make "missed" come after, when the `checkedFiles` Set has been filled by `walkTree` already - and for simplification, just return early on error to match the current behavior - in the future, may want to print the error and continue type-checking other files - so that all type-check errors are reported, not just the first one NOTE: this is WIP because the `cache.done()` call and the `!noErrors` message are incorrectly blocked behind the `pluginOptions.check` conditional right now - `cache.done()` needs to be called regardless of check or error or not, i.e. in all scenarios - but ideally it should be called after all the type-checking here - `!noErrors` should be logged regardless of check or not - and similarly, after the type-checking
Configuration menu - View commit details
-
Copy full SHA for 0b98ab3 - Browse repository at this point
Copy the full SHA 0b98ab3View commit details -
call
cache().done()
and!noErrors
in check and non-check conditions- instead of making a big `if` statement, decided to split out a `buildDone` function - to always call at the end of the input phase - we can also move the `cache().done()` in `emitSkipped` into `buildEnd`, as `buildEnd` gets called when an error occurs as well - and this way we properly print for errors as well - `buildDone` will have more usage in other PRs as well, so I figure it makes sense to split it out now as well
Configuration menu - View commit details
-
Copy full SHA for c5bca6c - Browse repository at this point
Copy the full SHA c5bca6cView commit details -
use
RollupContext
for type-only files- i.e. bail out when `abortOnError: true`, which `ConsoleContext` can't do - `ConsoleContext` is basically meant for everywhere `RollupContext` can't be used - which is effectively only in the `options` hook, per the Rollup docs: https://rollupjs.org/guide/en/#options
Configuration menu - View commit details
-
Copy full SHA for 3a027ca - Browse repository at this point
Copy the full SHA 3a027caView commit details
Commits on Jul 7, 2022
-
add test for type-only file with type errors
- now that the integration tests exist, we can actually test this scenario - refactor: give each test their own `onwarn` mock when necessary - while `restoreMocks` is set in the `jest.config.js`, Jest apparently has poor isolation of mocks: jestjs/jest#7136 - if two tests ran in parallel, `onwarn` was getting results from both, screwing up the `toBeCalledTimes` number - couldn't get the syntax error to work with `toBeCalledTimes` either - if no mock is given, it _does_ print warnings, but if a mock is given, it doesn't print, yet isn't called? - I think the mock is getting screwed up by the error being thrown here; maybe improperly saved or something
Configuration menu - View commit details
-
Copy full SHA for 01373c1 - Browse repository at this point
Copy the full SHA 01373c1View commit details