• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*=============================================================================
2     Boost.Wave: A Standard compliant C++ preprocessor library
3     http://www.boost.org/
4 
5     Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
6     Software License, Version 1.0. (See accompanying file
7     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 =============================================================================*/
9 
10 // Tests the correctness of parameter replacement, if the parameter is
11 // adjacent to an operator '##'.
12 
13 #define CONCAT(a, b) PRIMITIVE_CONCAT(a, b)
14 #define PRIMITIVE_CONCAT(a, b) a ## b
15 
16 //R #line 18 "t_1_006.cpp"
17 //R 123
18 CONCAT(1, PRIMITIVE_CONCAT(2, 3))
19 //R #line 21 "t_1_006.cpp"
20 //R 123
21 CONCAT(1, CONCAT(2, 3))
22 // E t_1_006.cpp(23): error: pasting the following two tokens does not give a valid preprocessing token: "1" and "CONCAT"
23 //R #line 25 "t_1_006.cpp"
24 //R 1 CONCAT(2, 3)
25 PRIMITIVE_CONCAT(1, CONCAT(2, 3))
26 
27 //H 10: t_1_006.cpp(13): #define
28 //H 08: t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)
29 //H 10: t_1_006.cpp(14): #define
30 //H 08: t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b
31 //H 00: t_1_006.cpp(18): CONCAT(1, PRIMITIVE_CONCAT(2, 3)), [t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
32 //H 00: t_1_006.cpp(18): PRIMITIVE_CONCAT(2, 3), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
33 //H 02: 23
34 //H 03: 23
35 //H 02: PRIMITIVE_CONCAT(1,  23)
36 //H 00: t_1_006.cpp(13): PRIMITIVE_CONCAT(1, 23), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
37 //H 02: 123
38 //H 03: 123
39 //H 03: 123
40 //H 00: t_1_006.cpp(21): CONCAT(1, CONCAT(2, 3)), [t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
41 //H 00: t_1_006.cpp(21): CONCAT(2, 3), [t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
42 //H 02: PRIMITIVE_CONCAT(2,  3)
43 //H 00: t_1_006.cpp(13): PRIMITIVE_CONCAT(2, 3), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
44 //H 02: 23
45 //H 03: 23
46 //H 03: 23
47 //H 02: PRIMITIVE_CONCAT(1,  23)
48 //H 00: t_1_006.cpp(13): PRIMITIVE_CONCAT(1, 23), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
49 //H 02: 123
50 //H 03: 123
51 //H 03: 123
52 //H 00: t_1_006.cpp(25): PRIMITIVE_CONCAT(1, CONCAT(2, 3)), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
53 //H 02: 1CONCAT(2, 3)
54 //H 03: 1CONCAT(2, 3)
55