llvm-project

Форк
0
/
cxx-stmt.cpp 
68 строк · 1.2 Кб
1
// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
2

3
void f1()
4
{
5
  try {
6
    ;
7
  } catch(int i) {
8
    ;
9
  } catch(...) {
10
  }
11
}
12

13
void f2()
14
{
15
  try; // expected-error {{expected '{'}}
16

17
  try {}
18
  catch; // expected-error {{expected '('}}
19

20
  try {}
21
  catch (...); // expected-error {{expected '{'}}
22

23
  try {}
24
  catch {} // expected-error {{expected '('}}
25
}
26

27
void f3() try {
28
} catch(...) {
29
}
30

31
struct A {
32
  int i;
33
  A(int);
34
  A(char);
35
  A() try : i(0) {} catch(...) {}
36
  void f() try {} catch(...) {}
37
  A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
38
};
39

40
A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
41
A::A(int j) try : i(j) {} catch(...) {}
42

43

44

45
// PR5740
46
struct Type { };
47

48
enum { Type } Kind;
49
void f4() {
50
  int i = 0;
51
  switch (Kind) {
52
    case Type: i = 7; break;  // no error.
53
  }
54
}
55

56
// PR5500
57
void f5() {
58
  asm volatile ("":: :"memory");
59
  asm volatile ("": ::"memory");
60
}
61

62
int f6() {
63
  int k, // expected-note {{change this ',' to a ';' to call 'f6'}}
64
  f6(), // expected-error {{expected ';'}} expected-warning {{interpreted as a function declaration}} expected-note {{replace paren}}
65
  int n = 0, // expected-error {{expected ';'}}
66
  return f5(), // ok
67
  int(n);
68
}
69

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

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

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

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