1 /* Test nullptr.
2 Copyright 2023 Free Software Foundation, Inc.
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */
16
17 /* Written by Bruno Haible. */
18
19 #include <config.h>
20
21 int *my_null = nullptr;
22
23 #if 0 /* not yet */
24 /* Header that is supposed to define nullptr_t. */
25 # include <stddef.h>
26 #endif
27
28 #include <stdarg.h>
29
30 #include "macros.h"
31
32 #if 0 /* not yet */
33
34 static void
35 simple_callee (nullptr_t x)
36 {
37 ASSERT (x == NULL);
38 }
39
40 #endif
41
42 static void
43 varargs_callee (const char *first, ...)
44 {
45 va_list args;
46 const char *arg;
47
48 ASSERT (first[0] == 't');
49 va_start (args, first);
50
51 arg = va_arg (args, const char *);
52 ASSERT (arg == NULL);
53
54 arg = va_arg (args, const char *);
55 ASSERT (arg[0] == 'f');
56
57 arg = va_arg (args, const char *);
58 ASSERT (arg == NULL);
59
60 va_end (args);
61 }
62
63 int
64 main ()
65 {
66 varargs_callee ("type", nullptr, "foo", nullptr);
67
68 return 0;
69 }