Feedback request for #9628 AST Annotations

Alan & Kim Zimmerman alan.zimm at gmail.com
Wed Oct 1 15:13:08 UTC 2014


I have put up a new diff at https://phabricator.haskell.org/D297

It is just a proof of concept at this point, to check if the approach is
acceptable.

This is much less intrusive, and only affects the lexer/parser, in what
should be a transparent way.

The new module ApiAnnotation was introduced because it needs to be imported
by Lexer.x, and I was worried about another circular import cycle. It does
also allow the annotations to be defined in a self-contained way,  which
can then easily be used by other external projects such as ghc-parser.

If there is consensus that this will not break anything else, I would like
to go ahead and add the rest of the annotations.

Regards
  Alan

On Tue, Sep 30, 2014 at 11:19 AM, Simon Peyton Jones <simonpj at microsoft.com>
wrote:

> I'm anxious about it being too big a change too.
>
> I'd be up for it if we had several "customers" all saying "yes, this is
> precisely what we need to make our usage of the GHC API far far easier".
> With enough detail so we can understand their use-case.
>
> Otherwise I worry that we might go to a lot of effort to solve the wrong
> problem; or to build a solution that does not, in the end, work for the
> actual use-case.
>
> Another way to tackle this would be to ensure that syntax tree nodes have
> a "node-key" (a bit like their source location) that clients could use in a
> finite map, to map node-key to values of their choice.
>
> I have not reviewed your patch in detail, but it's uncomfortable that the
> 'l' parameter gets into IfGblEnv and DsM.  That doesn't smell right.
>
> Ditto DynFlags/HscEnv, though I think here that you are right that the
> "hooks" interface is very crucial.  After all, the WHOLE POINT is too make
> the client interface more flexible. I would consult Luite and Edsko, who
> were instrumental in designing the new hooks interface
>         https://ghc.haskell.org/trac/ghc/wiki/Ghc/Hooks
> (I'm not sure if that page is up to date, but I hope so)
>
> A good way to proceed might be to identify some of the big users of the
> GHC API (I'm sure I don't know them all), discuss with them what would help
> them, and share the results on a wiki page.
>
> Simon
>
> |  -----Original Message-----
> |  From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of
> |  Richard Eisenberg
> |  Sent: 30 September 2014 03:04
> |  To: Edward Z. Yang
> |  Cc: ghc-devs at haskell.org
> |  Subject: Re: Feedback request for #9628 AST Annotations
> |
> |  I'm only speaking up because Alan is specifically requesting feedback:
> |  I'm really ambivalent about this. I agree with Edward that this is a
> |  big change and adds permanent noise in a lot of places. But, I also
> |  really respect the goal here -- better tool support. Is it worthwhile
> |  to do this using a dynamically typed bit (using Typeable and such),
> |  which would avoid the noise? Maybe.
> |
> |  What do other languages do? Do we know what, say, Agda does to get
> |  such tight coupling with an editor? Does, say, Eclipse have such a
> |  chummy relationship with a Java compiler to do its refactoring, or is
> |  that separately implemented? Haskell/GHC is not the first project to
> |  have this problem, and there's plenty of solutions out there. And,
> |  unlike most other times, I don't think Haskell is exceptional in this
> |  regard (there's nothing very special about Haskell's AST, maybe beyond
> |  indentation-awareness), so we can probably adopt other solutions
> |  nicely.
> |
> |  Richard
> |
> |  On Sep 29, 2014, at 8:58 PM, "Edward Z. Yang" <ezyang at mit.edu> wrote:
> |
> |  > Excerpts from Alan & Kim Zimmerman's message of 2014-09-29 13:38:45
> |  -0700:
> |  >> 1. Is this change too big, should I scale it back to just update
> |  the
> |  >>   HsSyn structures and then lock it down to Located SrcSpan for all
> |  >>   the rest?
> |  >
> |  > I don't claim to speak for the rest of the GHC developers, but I
> |  think
> |  > this change is too big.  I am almost tempted to say that we
> |  shouldn't
> |  > add the type parameter at all, and do something else (maybe Backpack
> |  > can let us extend SrcSpan in a modular way, or even use a
> |  dynamically
> |  > typed map for annotations.)
> |  >
> |  > Edward
> |  > _______________________________________________
> |  > ghc-devs mailing list
> |  > ghc-devs at haskell.org
> |  > http://www.haskell.org/mailman/listinfo/ghc-devs
> |
> |  _______________________________________________
> |  ghc-devs mailing list
> |  ghc-devs at haskell.org
> |  http://www.haskell.org/mailman/listinfo/ghc-devs
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20141001/c92b8241/attachment.html>


More information about the ghc-devs mailing list