On Fri, May 17, 2013 at 6:27 PM, Jordan Rose <[email protected]> wrote:
> +1 to both suggestions. For expansion locations, it'd be wonderful to see > the actual macro invocation. For spelling locations, it'd be great to see > the macro body if it's short enough, but even the first token of the macro > would be really helpful. > I'll see what I can hack up. And yes, without filenames this will probably be very difficult to read for > a real source file with many transitively-included headers. > Last-path-component would help a lot. > For the file locations I just use the normal location printing, so the filename gets included - the output I pasted is from a test that uses unnamed buffers... Cheers, /Manuel > > Jordan > > > On May 17, 2013, at 4:20 , Kim Gräsman <[email protected]> wrote: > > > Hi Manuel, > > > > I think the new structure works even with the intimidating location in > > the example. > > > > I wonder if it would help even more if you included a source text > > fragment from every location? > > > > I know I would use this to snapshot where a given location is when > > doing AST traversals, and I think more context makes it easier to find > > my bearings. > > > > Why are there leading colons in all line/col dumps? Should there be a > > leading filename/file ID? > > > > Thanks, > > - Kim > > > > On Fri, May 17, 2013 at 11:43 AM, Manuel Klimek <[email protected]> > wrote: > >> I played around a bit after trying to understand Argyrios' adaptions for > >> makeFileCharRange, and came up with this: > >> > >> Pastebin: > >> http://pastebin.com/g4ny0vbq > >> > >> Pasted into mail (will probalby not format well in most mail programs): > >> Loc > >> |-Expansion > >> | |-ExpansionStart > >> | | |-ExpansionStart > >> | | | |-ExpansionStart :4:1, > >> | | | |-ExpansionEnd :4:16, > >> | | | `-Spelling :3:16, > >> | | |-ExpansionEnd > >> | | | |-ExpansionStart :4:1, > >> | | | |-ExpansionEnd :4:16, > >> | | | `-Spelling :3:19, > >> | | `-Spelling :2:14, > >> | |-ExpansionEnd > >> | | |-ExpansionStart > >> | | | |-ExpansionStart :4:1, > >> | | | |-ExpansionEnd :4:16, > >> | | | `-Spelling :3:16, > >> | | |-ExpansionEnd > >> | | | |-ExpansionStart :4:1, > >> | | | |-ExpansionEnd :4:16, > >> | | | `-Spelling :3:19, > >> | | `-Spelling :2:17, > >> | `-Spelling :1:14, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart > >> | | |-ExpansionStart :4:1, > >> | | |-ExpansionEnd :4:16, > >> | | `-Spelling :3:16, > >> | |-ExpansionEnd > >> | | |-ExpansionStart :4:1, > >> | | |-ExpansionEnd :4:16, > >> | | `-Spelling :3:19, > >> | `-Spelling :2:16, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart :4:1, > >> | |-ExpansionEnd :4:16, > >> | `-Spelling :3:18, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart > >> | | |-ExpansionStart > >> | | | |-ExpansionStart :4:3, > >> | | | |-ExpansionEnd :4:15, > >> | | | `-Spelling :3:16, > >> | | |-ExpansionEnd > >> | | | |-ExpansionStart :4:3, > >> | | | |-ExpansionEnd :4:15, > >> | | | `-Spelling :3:19, > >> | | `-Spelling :2:14, > >> | |-ExpansionEnd > >> | | |-ExpansionStart > >> | | | |-ExpansionStart :4:3, > >> | | | |-ExpansionEnd :4:15, > >> | | | `-Spelling :3:16, > >> | | |-ExpansionEnd > >> | | | |-ExpansionStart :4:3, > >> | | | |-ExpansionEnd :4:15, > >> | | | `-Spelling :3:19, > >> | | `-Spelling :2:17, > >> | `-Spelling :1:14, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart > >> | | |-ExpansionStart :4:3, > >> | | |-ExpansionEnd :4:15, > >> | | `-Spelling :3:16, > >> | |-ExpansionEnd > >> | | |-ExpansionStart :4:3, > >> | | |-ExpansionEnd :4:15, > >> | | `-Spelling :3:19, > >> | `-Spelling :2:16, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart :4:3, > >> | |-ExpansionEnd :4:15, > >> | `-Spelling :3:18, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart > >> | | |-ExpansionStart :4:7, > >> | | |-ExpansionEnd :4:13, > >> | | `-Spelling :2:14, > >> | |-ExpansionEnd > >> | | |-ExpansionStart :4:7, > >> | | |-ExpansionEnd :4:13, > >> | | `-Spelling :2:17, > >> | `-Spelling :1:14, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart :4:7, > >> | |-ExpansionEnd :4:13, > >> | `-Spelling :2:16, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart > >> | | |-ExpansionStart :4:9, > >> | | |-ExpansionEnd :4:12, > >> | | `-Spelling :2:14, > >> | |-ExpansionEnd > >> | | |-ExpansionStart :4:9, > >> | | |-ExpansionEnd :4:12, > >> | | `-Spelling :2:17, > >> | `-Spelling :1:14, > >> `-Spelling > >> |-Expansion > >> | |-ExpansionStart :4:9, > >> | |-ExpansionEnd :4:12, > >> | `-Spelling :2:16, > >> `-Spelling :4:11 > >> > >> > >> On Wed, May 8, 2013 at 8:49 PM, Manuel Klimek <[email protected]> > wrote: > >>> > >>> On Wed, May 8, 2013 at 6:42 PM, Chandler Carruth <[email protected] > > > >>> wrote: > >>>> > >>>> > >>>> On Wed, May 8, 2013 at 5:36 PM, Manuel Klimek <[email protected]> > wrote: > >>>>> > >>>>> In preparation for some docs on source locations I want to write I > came > >>>>> up > >>>>> with the little helper method that visualizes source locations as a > >>>>> tree. > >>>>> This is especially helpful when you have many nested levels of macro > >>>>> expansions. > >>>>> > >>>>> Example output: > >>>>> (SP=(:6:14), > >>>>> EX=(SP=(:2:14), > >>>>> ES=(:6:8), > >>>>> EE=(:6:15))) > >>>>> > >>>>> SP = spelling > >>>>> EX = expansion (if there's only a single location) > >>>>> ES/EE = expansion start, expansion end (in case there's a range) > >>>>> > >>>>> Feel free to bikeshed about the details :D > >>>> > >>>> > >>>> Two high-level questions unrelated to the code itself: > >>>> > >>>> 1) Should we visualize these trees in roughly the same tree-ish > syntax as > >>>> AST trees? Or is it useful to visualize them on a single line > *inside* the > >>>> AST tree? > >>> > >>> > >>> I'm all for bike shed color ideas: can you create a paste with how you > >>> want it to look? (I tried a few things, and they all looked bad - I'm > no > >>> good at that :P) > >>> > >>>> > >>>> 2) Is there a way to make this part of the testing of source locations > >>>> which is currently done mostly through c-index-test's testing of the > writing > >>>> out of cursor details from libclang? > >>> > >>> > >>> Not sure - I really want a format that's for users; I'd be happy to > create > >>> something more machine-readable (JSON for example), so we can use it in > >>> tests, though. > >>> > >>>> One nit-picky detail: please don't use the initialisms.... At least, > not > >>>> *these*. I see SP, EX, and ES in this syntax and I think "wait, is > this a > >>>> stack machine asm chunk?? some other weird assembly language?" before > my > >>>> mind returns to sanity. ;] > >>> > >>> > >>> Just tell me what to use :) I don't have strong feelings about anything > >>> here - the main problem is that with 4- or 5-layer macros, this can > quickly > >>> go deep and become unwieldy if names start getting too long (as you > know me > >>> I of course started with "SpellingLocation" etc :) > >>> > >>> Cheers, > >>> /Manuel > >> > >> > >> > >> _______________________________________________ > >> cfe-commits mailing list > >> [email protected] > >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >> > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
