[
https://issues.apache.org/jira/browse/GROOVY-12717?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18143366#comment-18143366
]
ASF GitHub Bot commented on GROOVY-12717:
-----------------------------------------
testlens-app[bot] commented on PR #3251:
URL: https://github.com/apache/groovy/pull/3251#issuecomment-6813690236
## 🚨 All tests passed but jobs failed 🚨
### Failed Jobs without Test Failures
❌ [Lint gate /
lint](https://github.com/apache/groovy/actions/runs/43148753843/job/130952695354?pr=3251)
🏷️ Commit: 0b62c0e485747496098af108cdd9fb8d5f67d154
▶️ Tests: 3538 executed
🟡 Checks: 4/24 completed
### Rerun Controls
Click the checkbox to trigger a rerun:
🔲 **Rerun jobs**
---
_Learn more about TestLens at
[testlens.app/docs](https://testlens.app/docs/features/pr-comment/)._
> SC: new of a protected constructor of another package, or a protected method
> through a superclass receiver, fails verification instead of being reported
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: GROOVY-12717
> URL: https://issues.apache.org/jira/browse/GROOVY-12717
> Project: Groovy
> Issue Type: Bug
> Components: Static compilation
> Affects Versions: 4.0.32, 5.0.8, 6.0.0
> Reporter: Scott Murphy Heiberg
> Priority: Major
>
> {code:groovy}
> // package p
> class A {
> protected A(String s) { }
> protected String im() { 'im' }
> protected String getQp() { 'qp' }
> }
> // package q
> @groovy.transform.CompileStatic
> class B extends p.A {
> B() { super('b') }
> static test(p.A a) {
> new p.A('x') // or new p.A([:]) with a protected no-argument
> constructor
> a.im()
> a.qp
> java.util.function.Supplier<String> s = a::im
> java.util.function.Function<p.A, String> f = p.A::im
> }
> }
> {code}
> *Actual:* {{VerifyError: Bad access to protected <init> method}} and
> {{VerifyError: Bad access to protected data in invokevirtual}} when {{B}} is
> loaded, and {{BootstrapMethodError}} for the method references.
> *Expected:* a compile error, as javac gives. Outside its package, a protected
> constructor can only be called by {{super(...)}} or an anonymous class (JLS
> 6.6.2.2), and a protected instance method only through a receiver of the
> subclass (JLS 6.6.2.1, JVMS 4.10.1.8).
> Cause: {{StaticInvocationWriter}} writes {{new}} of such a constructor
> directly. Its GROOVY-7325 check for a method compares the types the wrong way
> round: it tests whether the current class is a subtype of the receiver type,
> not the reverse.
> Verified on 5.0.8, 6.0.0 and master. 4.0.32 fails the same way for the
> constructors and method references, and rejects {{a.im()}} and {{a.qp}} at
> compile time.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)