annotate gcc/testsuite/g++.dg/lookup/missing-std-include-7.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR c++/85021: Verify that we suggest missing headers for common names in std::
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 if there's a "using namespace std;" active. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 /* No using-directive. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 void test_1 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 // { dg-bogus "'<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 /* Local using-directive. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 void test_2 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 using namespace std;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 // { dg-message "'std::cout' is defined in header '<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 /* Local using-directive, but not of "std". */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 namespace not_std {}
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 void test_3 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 using namespace not_std;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 // { dg-bogus "'<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 /* Local using-directive in wrong block. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 void test_4 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 using namespace std;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 // { dg-bogus "'<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 /* Local using-directive used from nested block. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 void test_5 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 using namespace std;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 for (int i = 0; i < 10; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 // { dg-message "'std::cout' is defined in header '<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 namespace ns_1 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 namespace ns_2 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 using namespace std;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 /* using-directive within the same namespace. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 void test_6 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 // { dg-message "'std::cout' is defined in header '<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 namespace ns_3 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 /* Locate the using-directive within ns_2, the parent namespace. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 void test_7 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 // { dg-message "'std::cout' is defined in header '<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 } // namespace ns_3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 } // namespace ns_2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 /* Back in ns_1, should not locate the using-directive. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 void test_8 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 // { dg-bogus "'<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 } // namespace ns_1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 /* using-directive in global namespace. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 using namespace std;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 void test_9 ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 cout << "test"; // { dg-error "'cout' was not declared in this scope" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 // { dg-message "'std::cout' is defined in header '<iostream>'" "" { target *-*-* } .-1 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100