annotate clang/test/Frontend/verify-prefixes.c @ 169:1f21f60db75c

Added tag llvm10 for changeset 980e56f2e095
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 09:26:57 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 #if GC
anatofuz
parents:
diff changeset
2 # define GCONST const
anatofuz
parents:
diff changeset
3 #else
anatofuz
parents:
diff changeset
4 # define GCONST
anatofuz
parents:
diff changeset
5 #endif
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 // gconst-note@8 {{variable 'glb' declared const here}}
anatofuz
parents:
diff changeset
8 GCONST int glb = 5;
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 // Check various correct prefix spellings and combinations.
anatofuz
parents:
diff changeset
12 //
anatofuz
parents:
diff changeset
13 // RUN: %clang_cc1 -DGC -verify=gconst %s
anatofuz
parents:
diff changeset
14 // RUN: %clang_cc1 -Wcast-qual -DLC -verify=lconst %s
anatofuz
parents:
diff changeset
15 // RUN: %clang_cc1 -DSC -verify=expected %s
anatofuz
parents:
diff changeset
16 // RUN: %clang_cc1 -DSC -verify %s
anatofuz
parents:
diff changeset
17 // RUN: %clang_cc1 -DSC -verify -verify %s
anatofuz
parents:
diff changeset
18 // RUN: %clang_cc1 -verify=nconst %s
anatofuz
parents:
diff changeset
19 // RUN: %clang_cc1 -verify=n-const %s
anatofuz
parents:
diff changeset
20 // RUN: %clang_cc1 -verify=n_const %s
anatofuz
parents:
diff changeset
21 // RUN: %clang_cc1 -verify=NConst %s
anatofuz
parents:
diff changeset
22 // RUN: %clang_cc1 -verify=NConst2 %s
anatofuz
parents:
diff changeset
23 // RUN: %clang_cc1 -Wcast-qual -DGC -DLC -verify=gconst,lconst %s
anatofuz
parents:
diff changeset
24 // RUN: %clang_cc1 -Wcast-qual -DGC -DLC -DSC -verify=gconst,lconst,expected %s
anatofuz
parents:
diff changeset
25 // RUN: %clang_cc1 -Wcast-qual -DGC -DLC -verify=gconst -verify=lconst %s
anatofuz
parents:
diff changeset
26 // RUN: %clang_cc1 -Wcast-qual -DGC -DLC -DSC -verify=gconst,lconst -verify %s
anatofuz
parents:
diff changeset
27 // RUN: %clang_cc1 -DGC -DSC -verify -verify=gconst -verify %s
anatofuz
parents:
diff changeset
28 //
anatofuz
parents:
diff changeset
29 // Duplicate prefixes.
anatofuz
parents:
diff changeset
30 // RUN: %clang_cc1 -Wcast-qual -DGC -DLC -verify=gconst,lconst,gconst %s
anatofuz
parents:
diff changeset
31 // RUN: %clang_cc1 -DGC -verify=gconst -verify=gconst,gconst %s
anatofuz
parents:
diff changeset
32 // RUN: %clang_cc1 -DSC -verify=expected -verify=expected %s
anatofuz
parents:
diff changeset
33 // RUN: %clang_cc1 -DSC -verify -verify=expected %s
anatofuz
parents:
diff changeset
34 //
anatofuz
parents:
diff changeset
35 // Various tortured cases: multiple directives with different prefixes per
anatofuz
parents:
diff changeset
36 // line, prefixes used as comments, prefixes prefixing prefixes, and prefixes
anatofuz
parents:
diff changeset
37 // with special suffixes.
anatofuz
parents:
diff changeset
38 // RUN: %clang_cc1 -Wcast-qual -DLC -verify=foo %s
anatofuz
parents:
diff changeset
39 // RUN: %clang_cc1 -DSC -verify=bar %s
anatofuz
parents:
diff changeset
40 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=foo,bar %s
anatofuz
parents:
diff changeset
41 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=bar,foo %s
anatofuz
parents:
diff changeset
42 // RUN: %clang_cc1 -DSC -verify=foo-bar %s
anatofuz
parents:
diff changeset
43 // RUN: %clang_cc1 -Wcast-qual -DLC -verify=bar-foo %s
anatofuz
parents:
diff changeset
44 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=foo,foo-bar %s
anatofuz
parents:
diff changeset
45 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=foo-bar,foo %s
anatofuz
parents:
diff changeset
46 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=bar,bar-foo %s
anatofuz
parents:
diff changeset
47 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=bar-foo,bar %s
anatofuz
parents:
diff changeset
48 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=foo-bar,bar-foo %s
anatofuz
parents:
diff changeset
49 // RUN: %clang_cc1 -DSC -verify=foo-warning %s
anatofuz
parents:
diff changeset
50 // RUN: %clang_cc1 -Wcast-qual -DLC -verify=bar-warning-re %s
anatofuz
parents:
diff changeset
51 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=foo,foo-warning %s
anatofuz
parents:
diff changeset
52 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=foo-warning,foo %s
anatofuz
parents:
diff changeset
53 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=bar,bar-warning-re %s
anatofuz
parents:
diff changeset
54 // RUN: %clang_cc1 -Wcast-qual -DLC -DSC -verify=bar-warning-re,bar %s
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 // Check invalid prefixes. Check that there's no additional output, which
anatofuz
parents:
diff changeset
58 // might indicate that diagnostic verification became enabled even though it
anatofuz
parents:
diff changeset
59 // was requested incorrectly. Check that prefixes are reported in command-line
anatofuz
parents:
diff changeset
60 // order.
anatofuz
parents:
diff changeset
61 //
anatofuz
parents:
diff changeset
62 // RUN: not %clang_cc1 -verify=5abc,-xy,foo,_k -verify='#a,b$' %s 2> %t
anatofuz
parents:
diff changeset
63 // RUN: FileCheck --check-prefixes=ERR %s < %t
anatofuz
parents:
diff changeset
64 //
anatofuz
parents:
diff changeset
65 // ERR-NOT: {{.}}
anatofuz
parents:
diff changeset
66 // ERR: error: invalid value '5abc' in '-verify='
anatofuz
parents:
diff changeset
67 // ERR-NEXT: note: -verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores
anatofuz
parents:
diff changeset
68 // ERR-NEXT: error: invalid value '-xy' in '-verify='
anatofuz
parents:
diff changeset
69 // ERR-NEXT: note: -verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores
anatofuz
parents:
diff changeset
70 // ERR-NEXT: error: invalid value '_k' in '-verify='
anatofuz
parents:
diff changeset
71 // ERR-NEXT: note: -verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores
anatofuz
parents:
diff changeset
72 // ERR-NEXT: error: invalid value '#a' in '-verify='
anatofuz
parents:
diff changeset
73 // ERR-NEXT: note: -verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores
anatofuz
parents:
diff changeset
74 // ERR-NEXT: error: invalid value 'b$' in '-verify='
anatofuz
parents:
diff changeset
75 // ERR-NEXT: note: -verify prefixes must start with a letter and contain only alphanumeric characters, hyphens, and underscores
anatofuz
parents:
diff changeset
76 // ERR-NOT: {{.}}
anatofuz
parents:
diff changeset
77
anatofuz
parents:
diff changeset
78
anatofuz
parents:
diff changeset
79 // Check that our test code actually has expected diagnostics when there's no
anatofuz
parents:
diff changeset
80 // -verify.
anatofuz
parents:
diff changeset
81 //
anatofuz
parents:
diff changeset
82 // RUN: not %clang_cc1 -Wcast-qual -DGC -DLC -DSC %s 2> %t
anatofuz
parents:
diff changeset
83 // RUN: FileCheck --check-prefix=ALL %s < %t
anatofuz
parents:
diff changeset
84 //
anatofuz
parents:
diff changeset
85 // ALL: cannot assign to variable 'glb' with const-qualified type 'const int'
anatofuz
parents:
diff changeset
86 // ALL: variable 'glb' declared const here
anatofuz
parents:
diff changeset
87 // ALL: cast from 'const int *' to 'int *' drops const qualifier
anatofuz
parents:
diff changeset
88 // ALL: initializing 'int *' with an expression of type 'const int *' discards qualifiers
anatofuz
parents:
diff changeset
89
anatofuz
parents:
diff changeset
90
anatofuz
parents:
diff changeset
91 #if LC
anatofuz
parents:
diff changeset
92 # define LCONST const
anatofuz
parents:
diff changeset
93 #else
anatofuz
parents:
diff changeset
94 # define LCONST
anatofuz
parents:
diff changeset
95 #endif
anatofuz
parents:
diff changeset
96
anatofuz
parents:
diff changeset
97 #if SC
anatofuz
parents:
diff changeset
98 # define SCONST const
anatofuz
parents:
diff changeset
99 #else
anatofuz
parents:
diff changeset
100 # define SCONST
anatofuz
parents:
diff changeset
101 #endif
anatofuz
parents:
diff changeset
102
anatofuz
parents:
diff changeset
103 void foo() {
anatofuz
parents:
diff changeset
104 LCONST int loc = 5;
anatofuz
parents:
diff changeset
105 SCONST static int sta = 5;
anatofuz
parents:
diff changeset
106 // We don't actually expect 1-2 occurrences of this error. We're just
anatofuz
parents:
diff changeset
107 // checking the parsing.
anatofuz
parents:
diff changeset
108 glb = 6; // gconst-error1-2 {{cannot assign to variable 'glb' with const-qualified type 'const int'}}
anatofuz
parents:
diff changeset
109 *(int*)(&loc) = 6; // lconst-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
anatofuz
parents:
diff changeset
110 ; // Code, comments, and many directives with different prefixes per line, including cases where some prefixes (foo and bar) prefix others (such as foo-bar and bar-foo), such that some prefixes appear as normal comments and some have special suffixes (-warning and -re): foo-warning@-1 {{cast from 'const int *' to 'int *' drops const qualifier}} foo-bar-warning@+1 {{initializing 'int *' with an expression of type 'const int *' discards qualifiers}} foo-warning-warning@+1 {{initializing 'int *' with an expression of type 'const int *' discards qualifiers}} bar-warning-re-warning@-1 {{cast from 'const int *' to 'int *' drops const qualifier}} bar-foo-warning@-1 {{cast from 'const int *' to 'int *' drops const qualifier}} bar-warning@+1 {{initializing 'int *' with an expression of type 'const int *' discards qualifiers}}
anatofuz
parents:
diff changeset
111 int *p = &sta; // expected-warning {{initializing 'int *' with an expression of type 'const int *' discards qualifiers}}
anatofuz
parents:
diff changeset
112 }
anatofuz
parents:
diff changeset
113
anatofuz
parents:
diff changeset
114 // nconst-no-diagnostics
anatofuz
parents:
diff changeset
115 // n-const-no-diagnostics
anatofuz
parents:
diff changeset
116 // n_const-no-diagnostics
anatofuz
parents:
diff changeset
117 // NConst-no-diagnostics
anatofuz
parents:
diff changeset
118 // NConst2-no-diagnostics