Requires optional permits <was> Re: Service provider module resolution
Paul Sandoz
paul.sandoz at oracle.com
Tue Jul 10 23:59:20 PDT 2012
On Jul 11, 2012, at 8:28 AM, David Holmes wrote:
>>
>> If there is an optional dependency then presumably code in the depending module must be using types exported by the optional dependent module. Reflection is one way to use those types, another is a little bit of indirection (static or via reflection) to static usage of those types.
>
> I think this is wrong. I can use the optional module reflectively so that there is no direct type dependency (else the dependency would not be optional!).
Yes, but the dependency can also be direct at compile time and optional at install time, it's just that "requires optional" does not differentiate between the two cases.
> There is no reason that it needs to be present at compile time if I don't use those types directly. I would think the above statement from the Big Picture should read:
>
> "A foo module must still be available when compiling bar _if_ code in bar depends upon types declared in foo."
>
That's seems reasonable to me. I will try and get some clarification on this.
Perhaps the resolver should output warnings at compile time for optional modules that are not present to augment any "cannot find symbol" compiler errors?
Paul.
More information about the jigsaw-dev
mailing list