[
https://issues.apache.org/jira/browse/GROOVY-12207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18099896#comment-18099896
] ASF GitHub Bot commented on GROOVY-12207: ----------------------------------------- codecov-commenter commented on PR #2745: URL: https://github.com/apache/groovy/pull/2745#issuecomment-5111636603 ## [Codecov](https://app.codecov.io/gh/apache/groovy/pull/2745?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report :x: Patch coverage is `60.41667%` with `19 lines` in your changes missing coverage. Please review. :white_check_mark: Project coverage is 69.8866%. Comparing base ([`2ea4329`](https://app.codecov.io/gh/apache/groovy/commit/2ea432993e7b7da1fa52708244d050c535eed01b?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`34787ce`](https://app.codecov.io/gh/apache/groovy/commit/34787ce9309b3524763334b7c6f1c3969ad8cb2b?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)). :warning: Report is 1 commits behind head on master. | [Files with missing lines](https://app.codecov.io/gh/apache/groovy/pull/2745?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines | |---|---|---| | [...org/codehaus/groovy/control/ClassNodeResolver.java](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fcodehaus%2Fgroovy%2Fcontrol%2FClassNodeResolver.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3JjL21haW4vamF2YS9vcmcvY29kZWhhdXMvZ3Jvb3Z5L2NvbnRyb2wvQ2xhc3NOb2RlUmVzb2x2ZXIuamF2YQ==) | 58.0645% | [8 Missing and 5 partials :warning: ](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | | [...main/groovy/groovy/typecheckers/NullChecker.groovy](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=subprojects%2Fgroovy-typecheckers%2Fsrc%2Fmain%2Fgroovy%2Fgroovy%2Ftypecheckers%2FNullChecker.groovy&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3VicHJvamVjdHMvZ3Jvb3Z5LXR5cGVjaGVja2Vycy9zcmMvbWFpbi9ncm9vdnkvZ3Jvb3Z5L3R5cGVjaGVja2Vycy9OdWxsQ2hlY2tlci5ncm9vdnk=) | 58.3333% | [0 Missing and 5 partials :warning: ](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | | [...aus/groovy/ast/decompiled/DecompiledClassNode.java](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fcodehaus%2Fgroovy%2Fast%2Fdecompiled%2FDecompiledClassNode.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3JjL21haW4vamF2YS9vcmcvY29kZWhhdXMvZ3Jvb3Z5L2FzdC9kZWNvbXBpbGVkL0RlY29tcGlsZWRDbGFzc05vZGUuamF2YQ==) | 66.6667% | [0 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | <details><summary>Additional details and impacted files</summary> [](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) ```diff @@ Coverage Diff @@ ## master #2745 +/- ## ================================================== - Coverage 69.8900% 69.8866% -0.0034% - Complexity 35195 35211 +16 ================================================== Files 1554 1554 Lines 130877 130922 +45 Branches 23958 23970 +12 ================================================== + Hits 91470 91497 +27 - Misses 31152 31163 +11 - Partials 8255 8262 +7 ``` | [Files with missing lines](https://app.codecov.io/gh/apache/groovy/pull/2745?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | | |---|---|---| | [...us/groovy/ast/decompiled/AsmReferenceResolver.java](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fcodehaus%2Fgroovy%2Fast%2Fdecompiled%2FAsmReferenceResolver.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3JjL21haW4vamF2YS9vcmcvY29kZWhhdXMvZ3Jvb3Z5L2FzdC9kZWNvbXBpbGVkL0FzbVJlZmVyZW5jZVJlc29sdmVyLmphdmE=) | `85.7143% <100.0000%> (+1.0989%)` | :arrow_up: | | [...aus/groovy/ast/decompiled/DecompiledClassNode.java](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fcodehaus%2Fgroovy%2Fast%2Fdecompiled%2FDecompiledClassNode.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3JjL21haW4vamF2YS9vcmcvY29kZWhhdXMvZ3Jvb3Z5L2FzdC9kZWNvbXBpbGVkL0RlY29tcGlsZWRDbGFzc05vZGUuamF2YQ==) | `86.3158% <66.6667%> (-0.6407%)` | :arrow_down: | | [...main/groovy/groovy/typecheckers/NullChecker.groovy](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=subprojects%2Fgroovy-typecheckers%2Fsrc%2Fmain%2Fgroovy%2Fgroovy%2Ftypecheckers%2FNullChecker.groovy&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3VicHJvamVjdHMvZ3Jvb3Z5LXR5cGVjaGVja2Vycy9zcmMvbWFpbi9ncm9vdnkvZ3Jvb3Z5L3R5cGVjaGVja2Vycy9OdWxsQ2hlY2tlci5ncm9vdnk=) | `78.7565% <58.3333%> (-0.5914%)` | :arrow_down: | | [...org/codehaus/groovy/control/ClassNodeResolver.java](https://app.codecov.io/gh/apache/groovy/pull/2745?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fcodehaus%2Fgroovy%2Fcontrol%2FClassNodeResolver.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-c3JjL21haW4vamF2YS9vcmcvY29kZWhhdXMvZ3Jvb3Z5L2NvbnRyb2wvQ2xhc3NOb2RlUmVzb2x2ZXIuamF2YQ==) | `70.3704% <58.0645%> (-3.6681%)` | :arrow_down: | ... and [4 files with indirect coverage changes](https://app.codecov.io/gh/apache/groovy/pull/2745/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) </details> <details><summary> :rocket: New features to boost your workflow: </summary> - :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems. - :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges. </details> > Consult package-info.class of dependencies during resolution > ------------------------------------------------------------ > > Key: GROOVY-12207 > URL: https://issues.apache.org/jira/browse/GROOVY-12207 > Project: Groovy > Issue Type: Improvement > Reporter: Paul King > Priority: Major > > Groovy's resolver does not consult {{package-info.class}} for the packages of > precompiled dependencies, so package-level annotations of libraries are > invisible to the compiler and to type-checking extensions. > JSpecify's {{@NullMarked}} is commonly applied at package level (and may also > be applied at module level), meaning an entire library's nullness defaults > are typically expressed in files Groovy never reads. Without this, > per-element type annotations (see the companion type-annotation ingestion > issue) tell only half the story: a {{@NullMarked}} package with unannotated > method signatures means "everything here is non-null", and Groovy would > wrongly treat it as unspecified. > Proposed scope: > # On-demand loading of {{package-info.class}} for the package of a resolved > class, with caching (including negative caching for packages without one), > reusing the existing decompiled-class infrastructure. > # Expose the package annotations via a suitable API (e.g. on {{PackageNode}} > or a resolver service) so checkers and AST transforms can query them for > dependency packages the way they already can for source packages. > # Extend {{NullChecker}} to know about this new annotation information. > # Consider {{module-info}} annotations ({{@NullMarked}} at module level) as a > stretch goal. > Behaviour-neutral on its own: this only makes existing metadata reachable. > Consumers include the incubating {{groovy.typecheckers.NullChecker}} (which > already recognizes {{@NullMarked}}/{{@NullUnmarked}} by name but can > currently only see them on classes in the compilation unit). -- This message was sent by Atlassian Jira (v8.20.10#820010)
