Paul King created GROOVY-11916:
----------------------------------

             Summary: Star imports should not resolve package-private types
                 Key: GROOVY-11916
                 URL: https://issues.apache.org/jira/browse/GROOVY-11916
             Project: Groovy
          Issue Type: Bug
            Reporter: Paul King


Groovy's star import resolution (e.g., import java.util.*) currently includes 
package-private classes in name resolution. On modern JDKs (9+) with the module 
system, these classes cannot actually be used — attempts result in 
IllegalAccessError at runtime. This leads to confusing errors and inconsistency 
with Java's behaviour where star imports only resolve public types.
For example, import java.util.* allows def cls = TimSort to compile (resolving 
the package-private java.util.TimSort), but any actual usage (instanceof, 
construction, method calls) fails at runtime with IllegalAccessError.
The fix should filter non-public classes during star import resolution in 
ResolveVisitor, producing a clean compile-time error instead of a runtime 
error. This is technically a breaking change but only affects code that was 
already failing at runtime on modular JDKs.
This also benefits the import module feature (GROOVY-11896), which expands to 
star imports — filtering at the resolution level means module imports correctly 
include only public types, matching Java's import module semantics.



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

Reply via email to