[wg-camlp4] A new branch to experiment with extension points

Alain Frisch alain.frisch at lexifi.com
Wed Mar 6 13:18:12 GMT 2013


On 03/06/2013 01:57 PM, Leo White wrote:
> I'm not sure that I understand the need for general attributes not
> attached to anything in the middle of the module. If their position is
> important then there must be some item that they are essentially
> attached to, if their position is not important then they can just be
> placed at the top of the module.

I was mentioning ocamldoc section headers.  Without "floating" 
attributes, one can write:

[^^doc section "....."] include sig
    ...
end

On the one hand, this is nice, because it materializes the scope of the 
section (and you can benefit from your editor's folding feature).  But 
on the other hand, it is quite verbose and forces some extra 
indentation.  More fundamentally, this might not interact nicely with 
other features/tools, which might require a different nesting structure. 
  For instance, imagine a global dead code detector, for which one might 
want to exclude whole "sections" of exported declarations.  One could 
use the same technique as for ocamldoc sections:

[^^dead_code_detector ignore] include sig
    ...
end

But then we need to close/reopen those sections so that they remain 
nested within ocamldoc ones.  With floating attributes, one can write:


[*doc section "Section 1"]

[*dead_code_detector ignore true]

....

[*doc section "Section 2"]

....

[*dead_code_detector ignore false]

....


Does it make sense?


Alain


More information about the wg-camlp4 mailing list