llvm-project

Форк
0
/
cxx1z-init-statement.cpp 
51 строка · 1.8 Кб
1
// RUN: %clang_cc1 -std=c++1z -verify %s -Wno-vexing-parse
2

3
int g, h;
4
typedef int T;
5
int f() {
6
  // init-statement declarations
7
  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 expressions
16
  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 declarations
21
  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 expressions
27
  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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.