<div dir="ltr"><div dir="ltr">I see that the issue has moved to a resolved state, but I still have some doubts. The original question was indeed about retrieving the provides statements, and as the issue explains this is currently not possible. I accept this.<br><br> My main concern now is that compilation fails when getDirectives is called for a project's ModuleElement. As expected I can receive everything except the provides statements for the generated class, and yet compilation still fails. Can anything be done to resolve this?<input name="virtru-metadata" type="hidden" value="{"email-policy":{"disableCopyPaste":false,"disablePrint":false,"disableForwarding":false,"enableNoauth":false,"expandedWatermarking":false,"expires":false,"sms":false,"expirationNum":1,"expirationUnit":"days","isManaged":false,"persistentProtection":false},"attachments":{},"compose-id":"1","compose-window":{"secure":false}}"></div><br><div class="gmail_quote" style=""><div dir="ltr" class="gmail_attr">On Fri, Sep 1, 2023 at 8:00 AM Josiah Noel <<a href="mailto:josiahnoel@gmail.com">josiahnoel@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Or else if it's truly impossible to prevent the compilation error, a warning should be added to getDirectives so that people know it has a chance of breaking someone else's build in certain situations. I maintain a couple of processors that generate service implementations in the last round, so if people use one of them with another processor that uses getDirectives it will break their build with this cryptic(to them) error.</div></div><br><div class="gmail_quote" style="display:none"><div dir="ltr" class="gmail_attr">On Mon, Aug 28, 2023 at 2:48 PM Josiah Noel <<a href="mailto:josiahnoel@gmail.com" target="_blank">josiahnoel@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">I see it has been partially fixed in a later version, and that the problem only occurs if the service impl is generated in the last round. I can tolerate not being able to explicitly see the `provides` statements, but it's still a problem if merely calling `ModuleElement.getDirectives` causes compilation to fail if services are generated in the last round. Is there a way that we can make the behavior the same except not failing compilation? (Currently I can see the requires just fine but the compilation is doomed to fail)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 28, 2023 at 2:05 PM Jonathan Gibbons <<a href="mailto:jonathan.gibbons@oracle.com" target="_blank">jonathan.gibbons@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

  
  <div>
    <p><a href="https://bugs.openjdk.org/browse/JDK-8315125" target="_blank">https://bugs.openjdk.org/browse/JDK-8315125</a></p>
    <p>-- Jon<br>
    </p>
    <div>On 8/28/23 8:50 AM, Jonathan Gibbons
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <p>I'll file a JBS issue to track this further.</p>
      <p>-- Jon</p>
      <p><br>
      </p>
      <div>On 8/28/23 8:35 AM, Josiah Noel
        wrote:<br>
      </div>
      <blockquote type="cite">
        <div dir="ltr">
          <div dir="ltr">Just tried explicitly adding a default
            constructor, but I still receive the same error.</div>
          <br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Mon, Aug 28, 2023 at
              11:29 AM Jonathan Gibbons <<a href="mailto:jonathan.gibbons@oracle.com" target="_blank">jonathan.gibbons@oracle.com</a>>
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
              <div>
                <p>The following error message seems relevant:</p>
                <pre style="box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:13.6px;margin-top:0px;margin-bottom:16px;padding:16px;overflow:auto;line-height:1.45;color:rgb(31,35,40);border-radius:6px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration:none"><code style="box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:13.6px;padding:0px;margin:0px;white-space:pre-wrap;background:none;border-radius:6px;word-break:normal;border:0px;display:inline;overflow:visible;line-height:inherit">/M:/Dev/module-directive-bug/blackbox-test-module/src/main/java/module-info.java:[6,41] the service implementation does not have 
a default constructor: io.avaje.modules.example.GeneratedProvider</code></pre>
                <div>-- Jon</div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div>On 8/26/23 1:04 PM, Josiah Noel wrote:<br>
                </div>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div dir="ltr">
                      <div dir="ltr">As requested, I have created a
                        simple example to replicate this issue. <a href="https://urldefense.com/v3/__https://github.com/SentryMan/module-directive-bug/tree/master__;!!ACWV5N9M2RV99hQ!O3CMUWVsFHaaU7b9D1x_-4ByzBUrMMF0KeTPmtdnqOC1hRhhZCBO0dODJwf1rZsapQpTYmYktzo5W_0TwANTUZuu$" target="_blank">SentryMan/module-directive-bug:
                          showcase annotation processing bug
                          (github.com)</a></div>
                    </div>
                    <br>
                    <div class="gmail_quote">
                      <div dir="ltr" class="gmail_attr">On Fri, Aug 25,
                        2023 at 9:00 PM Josiah Noel <<a href="mailto:josiahnoel@gmail.com" target="_blank">josiahnoel@gmail.com</a>>
                        wrote:<br>
                      </div>
                      <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                        <div dir="ltr">
                          <div dir="ltr">
                            <div dir="ltr">
                              <div dir="ltr">
                                <div dir="ltr">
                                  <div dir="ltr">Say I got this module
                                    <div><br>
                                    </div>
                                    <div>```</div>
                                    <div>
                                      <div style="background-color:rgb(28,31,34);padding:0px 0px 0px 2px">
                                        <div style="color:rgb(199,205,209);font-family:Consolas;white-space:pre-wrap"><p style="margin:0px"><span style="color:rgb(255,0,127)">module</span><span style="color:rgb(207,191,173)"> nima.example {</span></p><p style="margin:0px"><span style="color:rgb(207,191,173)">  </span><span style="color:rgb(255,0,127)">requires</span><span style="color:rgb(207,191,173)"> io.avaje.http.client;</span></p><p style="margin:0px"><span style="color:rgb(207,191,173)">  </span><span style="color:rgb(255,0,127)">requires</span><span style="color:rgb(207,191,173)"> io.avaje.http.api;</span></p><p style="margin:0px"><span style="color:rgb(207,191,173)">  </span><span style="color:rgb(255,0,127)">provides</span><span style="color:rgb(207,191,173)"> io.</span><span style="color:rgb(82,227,246)">avaje</span><span style="color:rgb(207,191,173)">.</span><span style="color:rgb(82,227,246)">http</span><span style="color:rgb(207,191,173)">.client.</span><span style="color:rgb(82,227,246)">HttpClient</span><span style="color:rgb(207,191,173)">.</span><span style="color:rgb(82,227,246)">GeneratedComponent</span><span style="color:rgb(207,191,173)"> </span><span style="color:rgb(255,0,127)">with</span></p><p style="margin:0px"><span style="color:rgb(207,191,173)">      com.jojo.helidon.api.client.httpclient.</span><span style="color:rgb(82,227,246)">GeneratedHttpComponent</span><span style="color:rgb(207,191,173)">;</span></p><p style="margin:0px"><span style="color:rgb(207,191,173)">}</span></p></div>
                                      </div>
                                    </div>
                                    <div>```</div>
                                    <div>and I generate <span style="font-family:Consolas;white-space:pre-wrap;background-color:rgb(28,31,34);color:rgb(207,191,173)">com.jojo.helidon.api.client.httpclient.</span><span style="font-family:Consolas;white-space:pre-wrap;background-color:rgb(28,31,34);color:rgb(82,227,246)">GeneratedHttpComponent</span> in
                                      the last round of processing. When
                                      I get the module element during
                                      normal processing and so much as
                                      call `ModuleElement#getDirectives`
                                      and do nothing else, the processor
                                      will correctly generate, but
                                      compilation will still fail.(if I
                                      take out the module-info from the
                                      project it works though) I'm
                                      pretty sure it might have to do
                                      with the fact that <span style="color:rgb(82,227,246);font-family:Consolas;white-space:pre-wrap;background-color:rgb(28,31,34)">GeneratedHttpComponent</span> is
                                      created in the last round. Even
                                      so, not sure why it fails the
                                      compilation.</div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </blockquote>
                    </div>
                  </div>
                </blockquote>
              </div>
            </blockquote>
          </div>
        </div>
      </blockquote>
    </blockquote>
  </div>

</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>