Hi Richard, Thanks for your review. Committed as r206133 with suggested change. Thanks.
Logan On Sat, Apr 12, 2014 at 3:45 AM, Richard Smith <[email protected]>wrote: > Sorry for the delay! > > + // but the type cast should be considered as failure. > + > + OverloadExpr* oe = OverloadExpr::find(SrcExpr.get()).Expression; > + Self.Diag(OpRange.getBegin(), diag::err_bad_cstyle_cast_overload) > + << oe->getName() << DestType << OpRange > + << oe->getQualifierLoc().getSourceRange(); > + Self.NoteAllOverloadCandidates(SrcExpr.get()); > > Some tiny typographical things here: no blank line between the comment and > the code, put the * on the right not on the left, and 'oe' should be 'OE'. > Otherwise, this looks good to me. Do you need someone to commit it for you? > > > On Thu, Mar 27, 2014 at 9:51 AM, Logan Chien <[email protected]>wrote: > >> Ping? >> >> >> On Mon, Mar 17, 2014 at 11:59 PM, Logan Chien >> <[email protected]>wrote: >> >>> Hi, >>> >>> It seems that if the C-style type cast is applied to the overloaded >>> function and the destination type is function type, then Clang will crash >>> with assertion failure. For example, >>> >>> void foo(int); >>> void foo(int, int); >>> void bar() { >>> typedef void (ft)(int); >>> ft p = (ft)foo; >>> } >>> >>> In this case, the overloaded function foo will be cast to a function >>> type, which should be considered as an error. But, unfortunately, since >>> the function resolution is using canonical type, the matched function will >>> be returned, and raise SEGV at lib/Sema/SemaCast.cpp:2101. >>> >>> This patch fixes this issue by removing the assertion and add some error >>> diagnostics as the one in static_cast. Please have a look. Thanks. >>> >>> Logan >>> >> >> >> _______________________________________________ >> 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
