1 /* Test the "ignore-value" module.
2 
3    Copyright (C) 2011-2020 Free Software Foundation, Inc.
4 
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9 
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14 
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
17 
18 /* Written by Eric Blake.  */
19 
20 #include <config.h>
21 
22 #include "ignore-value.h"
23 
24 #include <stdio.h>
25 
26 #include "attribute.h"
27 
28 struct s { int i; };
29 static char doChar (void) NODISCARD;
30 static int doInt (void) NODISCARD;
31 static off_t doOff (void) NODISCARD;
32 static void *doPtr (void) NODISCARD;
33 static struct s doStruct (void) NODISCARD;
34 
35 static char
doChar(void)36 doChar (void)
37 {
38   return 0;
39 }
40 
41 static int
doInt(void)42 doInt (void)
43 {
44   return 0;
45 }
46 
47 static off_t
doOff(void)48 doOff (void)
49 {
50   return 0;
51 }
52 
53 static void *
doPtr(void)54 doPtr (void)
55 {
56   return NULL;
57 }
58 
59 static struct s
doStruct(void)60 doStruct (void)
61 {
62   static struct s s1;
63   return s1;
64 }
65 
66 int
main(void)67 main (void)
68 {
69   /* If this test can compile with -Werror and the same warnings as
70      the rest of the project, then we are properly silencing warnings
71      about ignored return values.  */
72   ignore_value (doChar ());
73   ignore_value (doInt ());
74   ignore_value (doOff ());
75   ignore_value (doPtr ());
76   ignore_value (doStruct ());
77   return 0;
78 }
79