I saw the branch merge proposal before I noticed this bug, so I'll copy my comment from there:
I don't like that this mechanism is so different to the way you block non-internal modules (using a URIMapper with DENY_ACCESS). While it would be a bit less efficient, it would be more consistent to call static_context::resolve_uri() at translator.cpp line 2840 solely for the purpose of seeing if zerr::ZXQP0029_URI_ACCESS_DENIED is thrown.
Further note:
Actually it would be sufficient to call static_context::apply_uri_mappers() if we made that method non-private, or (probably better) added a method static_context::get_candidate_uris() which was exactly the same as static_context::get_component_uris() except for passing internal::URIMapper::CANDIDATE instead of COMPONENT.
I saw the branch merge proposal before I noticed this bug, so I'll copy my comment from there:
I don't like that this mechanism is so different to the way you block non-internal modules (using a URIMapper with DENY_ACCESS). While it would be a bit less efficient, it would be more consistent to call static_ context: :resolve_ uri() at translator.cpp line 2840 solely for the purpose of seeing if zerr::ZXQP0029_ URI_ACCESS_ DENIED is thrown.
Further note:
Actually it would be sufficient to call static_ context: :apply_ uri_mappers( ) if we made that method non-private, or (probably better) added a method static_ context: :get_candidate_ uris() which was exactly the same as static_ context: :get_component_ uris() except for passing internal: :URIMapper: :CANDIDATE instead of COMPONENT.