68 lines · cpp
1// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused %s2// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused %s -frecovery-ast -frecovery-ast-type3 4// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused -fexperimental-new-constant-interpreter %s5// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused -frecovery-ast -frecovery-ast-type -fexperimental-new-constant-interpreter %s6 7template <typename ...Ts>8void f() {9 ((^ { Ts t; }), ...);10 ((^ (Ts t) {}), ...);11 ((^ Ts () {}), ...);12 13 ^ { Ts t; }; // expected-error {{unexpanded parameter pack 'Ts'}}14 ^ (Ts t) {}; // expected-error {{unexpanded parameter pack 'Ts'}}15 ^ Ts () {}; // expected-error {{unexpanded parameter pack 'Ts'}}16}17 18template <typename ...Ts>19void gh109148() {20 (^Ts); // expected-error {{expected expression}}21 22 [] {23 (^Ts); // expected-error {{expected expression}}24 ^Ts; // expected-error {{expected expression}}25 ^(Ts); // expected-error {{expected expression}}26 ^ Ts); // expected-error {{expected expression}}27 };28 29 ([] {30 (^Ts); // expected-error {{expected expression}}31 ^Ts; // expected-error {{expected expression}}32 ^(Ts); // expected-error {{expected expression}}33 ^ Ts); // expected-error {{expected expression}}34 }, ...); // expected-error {{pack expansion does not contain any unexpanded parameter packs}}35 36 [] { // expected-error {{unexpanded parameter pack 'Ts'}}37 ^ (Ts) {};38 };39 40 [] { // expected-error {{unexpanded parameter pack 'Ts'}}41 ^ { Ts x; };42 };43 44 [] { // expected-error {{unexpanded parameter pack 'Ts'}}45 Ts s;46 (^Ts); // expected-error {{expected expression}}47 };48 49 ([] {50 Ts s;51 (^Ts); // expected-error {{expected expression}}52 }, ...);53 54 [] { // expected-error {{unexpanded parameter pack 'Ts'}}55 ^ { Ts s; return not_defined; }; // expected-error {{use of undeclared identifier 'not_defined'}}56 };57}58 59void g() {60 f<>();61 f<int>();62 f<long, float>();63 64 gh109148<>();65 gh109148<int>();66 gh109148<long, float>();67}68