Skip to content
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(compiler): consistently generate additional type files #4938

Merged
merged 1 commit into from
Oct 19, 2023

Conversation

HansClaasen
Copy link
Contributor

What is the current behavior?

The if statement doesn't really make sense to me as I would assume you would return early in case no types have changed. However this is causing an interesting side effect where the filesystem in memory determines to delete the directory because the directory and the file in it is not being written. A second execution actually re-creates the file.

It it has hard to determine the origin of this change. Likely this wasn't causing any harm until the memory FS logic started to clear out directories that had no files written to them.

This has potentially a small performance impact since types are now always generated which they would have been before too except the first time. However if we are not writing the file to memory, the directory will be cleaned up by the memfs system when we commit changes in writeBuild.

Fixes #4716

GitHub Issue Number: #4716

What is the new behavior?

With this patch, we always generate additional type files for the component, including for the first type generation.

Does this introduce a breaking change?

  • Yes
  • No

Testing

No tests added to verify this new behavior given there aren't any tests for part of the code base already. Given that we don't really know the expected behavior for a lot of these parts I am not sure about the value of adding unit tests for the current state. Happy to do so if you think it does make sense.

Other information

@github-actions
Copy link
Contributor

--strictNullChecks error report

Typechecking with --strictNullChecks resulted in 1399 errors on this branch.

That's the same number of errors on main, so at least we're not creating new ones!

reports and statistics

Our most error-prone files
Path Error Count
src/dev-server/index.ts 37
src/mock-doc/serialize-node.ts 36
src/dev-server/server-process.ts 32
src/compiler/build/build-stats.ts 27
src/compiler/output-targets/dist-lazy/generate-lazy-module.ts 25
src/compiler/style/test/optimize-css.spec.ts 23
src/testing/puppeteer/puppeteer-element.ts 23
src/compiler/prerender/prerender-main.ts 22
src/runtime/vdom/vdom-render.ts 20
src/runtime/client-hydrate.ts 19
src/screenshot/connector-base.ts 19
src/compiler/config/test/validate-paths.spec.ts 16
src/dev-server/request-handler.ts 15
src/compiler/prerender/prerender-optimize.ts 14
src/compiler/sys/stencil-sys.ts 14
src/compiler/transpile/transpile-module.ts 14
src/runtime/vdom/vdom-annotations.ts 14
src/sys/node/node-sys.ts 14
src/compiler/build/build-finish.ts 13
src/compiler/prerender/prerender-queue.ts 13
Our most common errors
Typescript Error Code Count
TS2345 424
TS2322 398
TS18048 310
TS18047 100
TS2722 38
TS2532 34
TS2531 23
TS2454 14
TS2352 13
TS2769 10
TS2790 10
TS2538 8
TS2344 5
TS2416 4
TS2493 3
TS18046 2
TS2684 1
TS2488 1
TS2430 1

Unused exports report

There are 12 unused exports on this PR. That's the same number of errors on main, so at least we're not creating new ones!

Unused exports
File Line Identifier
src/runtime/bootstrap-lazy.ts 21 setNonce
src/screenshot/screenshot-fs.ts 18 readScreenshotData
src/testing/testing-utils.ts 198 withSilentWarn
src/utils/index.ts 145 CUSTOM
src/compiler/app-core/app-data.ts 25 BUILD
src/compiler/app-core/app-data.ts 115 Env
src/compiler/app-core/app-data.ts 117 NAMESPACE
src/compiler/fs-watch/fs-watch-rebuild.ts 123 updateCacheFromRebuild
src/compiler/types/validate-primary-package-output-target.ts 62 satisfies
src/compiler/types/validate-primary-package-output-target.ts 62 Record
src/testing/puppeteer/puppeteer-declarations.ts 485 WaitForEventOptions
src/compiler/sys/fetch/write-fetch-success.ts 7 writeFetchSuccessSync

Copy link
Member

@tanner-reits tanner-reits left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HansClaasen I think we're good to make the change to avoid the early return, but we'll want to keep the result of generateAppTypes around and use it as the return value here for the context where runTsProgram() gets executed

The if statement doesn't really make sense to me as I would assume you would return early in case no types have changed. However this is causing an interesting side effect where the filesystem in memory determines to delete the directory because the directory and the file in it is not being written. A second execution actually re-creates the file.

It it has hard to determine the origin of this change. Likely this wasn't causing any harm until the memory FS logic started to clear out directories that had no files written to them.

This has potentially a small performance impact since types are now always generated which they would have been before too except the first time. However if we are not writing the file to memory, the directory will be cleaned up by the memfs system when we commit changes in [`writeBuild`](https://github.com/ionic-team/stencil/blob/b91f94a122dc9add876f0277f99afc92c96e66dd/src/compiler/build/write-build.ts#L24).

Fixes ionic-team#4716
@HansClaasen
Copy link
Contributor Author

@tanner-reits thanks for your review. I made necessary changes, please let me know if they align with what you had in mind. Thank you!

@rwaskiewicz
Copy link
Member

I'm gonna wait for @tanner-reits to approve and have him merge this, but I think we can approve the CI workflow to run and verify everything looks good there as well

@tanner-reits tanner-reits added this pull request to the merge queue Oct 19, 2023
Merged via the queue into ionic-team:main with commit 70cba50 Oct 19, 2023
96 checks passed
@christian-bromann christian-bromann deleted the hc/compiler-side-effect branch October 19, 2023 15:06
@christian-bromann christian-bromann restored the hc/compiler-side-effect branch October 19, 2023 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bug: The types folder will not be packaged
3 participants