On Mon, Nov 26, 2012 at 3:09 PM, Jordan Rose <[email protected]> wrote: > > 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.
This seems reasonable to me. > It's a conservative change, though; does that mean we're getting it wrong > currently? Yes. -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
