<div dir="ltr"><p>Dear Amber Team,<br></p><p>I hope you're doing well. I’ve encountered a behavior related to JEP 476: Module Import Declarations and wanted to ask for clarification.</p><p>I’m working with a module setup where two packages are defined but not initially exported:</p><pre class="gmail-!overflow-visible"><div class="gmail-dark gmail-bg-gray-950 gmail-contain-inline-size gmail-rounded-md gmail-border-[0.5px] gmail-border-token-border-medium gmail-relative"><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">module</span> my.nice.project {
    <span class="gmail-hljs-comment">//exports my.nice.project.pkg.a to my.nice.project;</span>
    <span class="gmail-hljs-comment">//exports my.nice.project.pkg.b to my.nice.project;</span>
}
</code></div></div></pre><p>Here’s a simplified version of the code structure:</p><p><br></p><pre class="gmail-!overflow-visible"><div class="gmail-dark gmail-bg-gray-950 gmail-contain-inline-size gmail-rounded-md gmail-border-[0.5px] gmail-border-token-border-medium gmail-relative"><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">package</span> my.nice.project;
<span class="gmail-hljs-keyword"><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword"><br></span></code></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">import module my.nice.project;</span></code></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><br></div></span></code></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">public</span> <span class="gmail-hljs-keyword">class</span> <span class="gmail-hljs-title gmail-class_">Main</span> {
    <span class="gmail-hljs-keyword">public</span> <span class="gmail-hljs-keyword">static</span> <span class="gmail-hljs-keyword">void</span> <span class="gmail-hljs-title gmail-function_">main</span><span class="gmail-hljs-params">(String[] args)</span> {
        <span class="gmail-hljs-type">SomeInterface</span> <span class="gmail-hljs-variable">someInterface</span> <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">SomeInterface</span>() {
            <span class="gmail-hljs-meta">@Override</span>
            <span class="gmail-hljs-keyword">public</span> SomeRecord <span class="gmail-hljs-title gmail-function_">someMethod</span><span class="gmail-hljs-params">()</span> {
                <span class="gmail-hljs-keyword">return</span> <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">SomeRecord</span>();
            }
        };
    }
}</code></div></div></pre><pre class="gmail-!overflow-visible"><div class="gmail-dark gmail-bg-gray-950 gmail-contain-inline-size gmail-rounded-md gmail-border-[0.5px] gmail-border-token-border-medium gmail-relative"><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><br></code></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java">package my.nice.project.pkg.a;
<span class="gmail-hljs-keyword">import module my.nice.project;</span></code></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword"><br></span></code></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">public</span> <span class="gmail-hljs-keyword">interface</span> <span class="gmail-hljs-title gmail-class_">SomeInterface</span> {
    <span class="gmail-hljs-keyword">public</span> SomeRecord <span class="gmail-hljs-title gmail-function_">someMethod</span><span class="gmail-hljs-params">()</span>;
}</code></div></div></pre><pre class="gmail-!overflow-visible"><div class="gmail-dark gmail-bg-gray-950 gmail-contain-inline-size gmail-rounded-md gmail-border-[0.5px] gmail-border-token-border-medium gmail-relative"><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java">package my.nice.project.pkg.b;
<span class="gmail-hljs-keyword">public</span> <span class="gmail-hljs-keyword">record</span> <span class="gmail-hljs-title gmail-class_">SomeRecord</span><span class="gmail-hljs-params">()</span> {}
</code></div></div></pre><p>When attempting to compile this code with the exports commented out, I received several "cannot find symbol" errors. However, after uncommenting the exports:</p><pre class="gmail-!overflow-visible"><div class="gmail-dark gmail-bg-gray-950 gmail-contain-inline-size gmail-rounded-md gmail-border-[0.5px] gmail-border-token-border-medium gmail-relative"><div class="gmail-flex gmail-items-center gmail-text-token-text-secondary gmail-bg-token-main-surface-secondary gmail-px-4 gmail-py-2 gmail-text-xs gmail-font-sans gmail-justify-between gmail-rounded-t-md gmail-h-9"><br></div><div class="gmail-overflow-y-auto gmail-p-4" dir="ltr"><code class="gmail-!whitespace-pre gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">exports</span> my.nice.project.pkg.a to my.nice.project;
<span class="gmail-hljs-keyword">exports</span> my.nice.project.pkg.b to my.nice.project;
</code></div></div></pre><p>The code compiled and ran as expected.</p><p>Given this behavior, I wanted to confirm if this restriction on package visibility within a module is the intended design under the Amber project and the module system, or if there’s another approach or best practice I might be overlooking in terms of package exports.</p><p>Thank you for your time and insight.<br></p><p>Best regards, <br></p><p>Thiago</p></div>