-
Notifications
You must be signed in to change notification settings - Fork 64
Description
Context: #1093
Context: https://mvnrepository.com/artifact/org.jetbrains/annotations/24.0.1
Context: https://www.oracle.com/corporate/features/understanding-java-9-modules.html
Context: https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.25
JDK 9 adds support for modules, which is (kinda sorta) like .NET Assemblies: modules can depend upon other modules, export types, etc.
In particular:
exports and exports…to. An exports module directive specifies one of the module’s packages whose
publictypes (and their nestedpublicandprotectedtypes) should be accessible to code in all other modules. Anexports…todirective enables you to specify in a comma-separated list precisely which module’s or modules’ code can access the exported package—this is known as a qualified export.
This allows an equivalent to the C# internal access modifier: public types in a non-exported package should be treated as "internal", while public types in an exported package a "fully public".
TODO:
- Implement support in
Xamarin.Android.Tools.Bytecodefor theModuleAttribute, theCONSTANT_Module_infostructure, and any other relevant module-related structures. - Figure out what
//@visibilityvalue should be used for "public types in a non-exported package"; should it beinternal?kotlin-internal? Other? See also: 678c4bd, which added thekotlin-internalvisibility -
generatorchanges to deal with the new visibility value, if necessary.