On Nov 26, 2012, at 14:11 , Eli Friedman <[email protected]> wrote:
> On Sat, Nov 17, 2012 at 10:47 AM, Grzegorz Jablonski <[email protected]> > wrote: >> On 11/10/2012 12:35 AM, Eli Friedman wrote: >>> >>> On Wed, Oct 31, 2012 at 9:27 AM, Jordan Rose <[email protected]> >>> wrote: >>>> >>>> [...] >>>> >>>> If you're okay with adding a PrintImplicitNodes bit to PrintingPolicy >>>> that >>>> would be good enough for us. Otherwise we'll have to think of something >>>> else. >>> >>> This seems okay to me. Grzegorz? >> >> Patch attached. > > Sorry about the delayed review. > > It doesn't look like your patch sets the PrintImplicitNodes bit > correctly in all the cases we care about; for example, the following > testcase: > > struct MyClass10 > { > operator const char *() { return "str"; } > }; > > void test10(const char *str) > { > MyClass10* m; > extern int x; > extern decltype(test10(*m)) x; > } > > currently gives: > > <stdin>:10:33: error: redefinition of 'x' with a different type: > 'decltype(test10(*m.operator const char *()))' (aka 'void') vs 'int' > extern decltype(test10(*m)) x; > ^ > <stdin>:9:16: note: previous definition is here > extern int x; > ^ I wonder if PrintImplicitNodes should default to 'false'; dumpers can take the extra time to set it to 'true', but the default behavior will be more user-friendly that way. It's a conservative change, though; does that mean we're getting it wrong currently? Jordan _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
