File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3604,7 +3604,8 @@ bool Converter::VisitInitListExpr(clang::InitListExpr *expr) {
36043604bool Converter::VisitCompoundLiteralExpr (clang::CompoundLiteralExpr *expr) {
36053605 auto record = expr->getType ()->getAsRecordDecl ();
36063606 if (!record || !record->hasAttr <clang::TransparentUnionAttr>()) {
3607- return true ;
3607+ Convert (expr->getInitializer ());
3608+ return false ;
36083609 }
36093610 auto init = clang::cast<clang::InitListExpr>(expr->getInitializer ());
36103611 assert (init->getNumInits () == 1 );
@@ -3958,7 +3959,9 @@ bool Converter::VisitCXXDefaultArgExpr(clang::CXXDefaultArgExpr *expr) {
39583959 if (expr->getType ()->isPointerType ()) {
39593960 StrCat (token::kDefault );
39603961 computed_expr_type_ = ComputedExprType::FreshPointer;
3962+ return false ;
39613963 }
3964+ Convert (expr->getExpr ());
39623965 return false ;
39633966}
39643967
Original file line number Diff line number Diff line change @@ -21,6 +21,10 @@ Bar global_bar(9);
2121
2222int by_global_ref (const Bar &b = global_bar) { return b.v ; }
2323
24+ template <typename T> int shifted (T x, int y = -1 ) { return x + y; }
25+
26+ template <typename R> int first (R &&r) { return r[0 ]; }
27+
2428template <typename T> struct Holder {
2529 T v;
2630 explicit Holder (T v = 0 ) : v(v) {}
@@ -55,5 +59,9 @@ int main() {
5559 Holder<int > h (4 );
5660 assert (h.v == 4 );
5761
62+ assert (shifted (3 ) == 2 );
63+ assert (shifted (3 , 4 ) == 7 );
64+ assert (first ((int []){4 , 5 , 6 }) == 4 );
65+
5866 return 0 ;
5967}
You can’t perform that action at this time.
0 commit comments