[ 
https://issues.apache.org/jira/browse/GROOVY-11694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17956753#comment-17956753
 ] 

ASF GitHub Bot commented on GROOVY-11694:
-----------------------------------------

Copilot commented on code in PR #2251:
URL: https://github.com/apache/groovy/pull/2251#discussion_r2134427507


##########
src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java:
##########
@@ -304,6 +299,9 @@ protected boolean writeDirectMethodCall(final MethodNode 
target, final boolean i
         }
 
         ClassNode receiverType = receiver == null ? ClassHelper.OBJECT_TYPE : 
controller.getTypeChooser().resolveType(receiver, controller.getThisType());
+        if 
(StaticTypeCheckingSupport.isClassClassNodeWrappingConcreteType(receiverType) 
&& !ClassHelper.isClassType(declaringClass)) {
+            receiverType = receiverType.getGenericsTypes()[0].getType(); // 
GROOVY-11694

Review Comment:
   Consider adding a check to ensure that receiverType.getGenericsTypes() is 
not null and contains at least one element before accessing index 0 to prevent 
potential NullPointerExceptions.
   ```suggestion
               if (receiverType.getGenericsTypes() != null && 
receiverType.getGenericsTypes().length > 0) {
                   receiverType = receiverType.getGenericsTypes()[0].getType(); 
// GROOVY-11694
               } else {
                   // Handle the case where generics types are null or empty
                   receiverType = ClassHelper.OBJECT_TYPE; // Default to Object 
type
               }
   ```





> SC: implicit-this call to static method of super class from another package
> ---------------------------------------------------------------------------
>
>                 Key: GROOVY-11694
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11694
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static compilation
>    Affects Versions: 5.0.0-beta-1
>            Reporter: Eric Milles
>            Assignee: Eric Milles
>            Priority: Major
>
> Consider the following:
> {code:groovy}
> package p
> abstract class A {
>   protected static pm() {
>   }
> }
> {code}
> {code:groovy}
> package q
> @groovy.transform.CompileStatic
> class C extends p.A {
>   void test() {
>     pm()
>   }
> }
> {code}
> Compiler emits error: "Cannot access method: pm() of class: p.A"



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to