brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 157e2b5 Raw
52 lines · cpp
1// RUN: %clang_cc1 -std=c++1z -verify %s -Wno-vexing-parse2 3int g, h;4typedef int T;5int f() {6  // init-statement declarations7  if (T n = 0; n != 0) {}8  if (T f(); f()) {}9  if (T(f()); f()) {}10  if (T(f()), g, h; f()) {}11  if (T f(); f()) {}12  if (T f(), g, h; f()) {}13  if (T(n) = 0; n) {}14 15  // init-statement expressions16  if (T{f()}; f()) {} // expected-warning {{expression result unused}}17  if (T{f()}, g, h; f()) {} // expected-warning 2{{left operand of comma operator has no effect}} expected-warning {{expression result unused}}18  if (T(f()), g, h + 1; f()) {} // expected-warning 2{{left operand of comma operator has no effect}} expected-warning {{expression result unused}}19 20  // condition declarations21  if (T(n){g}) {}22  if (T f()) {} // expected-error {{function type}}23  if (T f(), g, h) {} // expected-error {{function type}}24  if (T(n) = 0) {}25 26  // condition expressions27  if (T(f())) {}28  if (T{f()}) {}29  if (T(f()), g, h) {} // expected-warning 2{{left operand of comma operator has no effect}}30  if (T{f()}, g, h) {} // expected-warning 2{{left operand of comma operator has no effect}}31 32  // none of the above, disambiguated as expression (can't be a declaration)33  if (T(n)(g)) {} // expected-error {{undeclared identifier 'n'}}34  if (T(n)(int())) {} // expected-error {{undeclared identifier 'n'}}35 36  // Likewise for 'switch'37  switch (int n; n) {}38  switch (g; int g = 5) {} // expected-warning {{expression result unused}}39 40  if (int a, b; int c = a) { // expected-note 6{{previous}}41    int a; // expected-error {{redefinition}}42    int b; // expected-error {{redefinition}}43    int c; // expected-error {{redefinition}}44  } else {45    int a; // expected-error {{redefinition}}46    int b; // expected-error {{redefinition}}47    int c; // expected-error {{redefinition}}48  }49 50  return 0;51}52