lsym_period.c revision 1.5
1/* $NetBSD: lsym_period.c,v 1.5 2023/05/11 09:28:53 rillig Exp $ */
2
3/*
4 * Tests for the token lsym_period, which represents '.' in these contexts:
5 *
6 * In an initializer, '.' starts a named designator (since C99).
7 *
8 * In an expression, 'sou.member' accesses the member 'member' in the struct
9 * or union 'sou'.
10 *
11 * In a function prototype declaration, the sequence '.' '.' '.' marks the
12 * start of a variable number of arguments.  It would have been more intuitive
13 * to model them as a single token, but it doesn't make any difference for
14 * formatting the code.
15 *
16 * See also:
17 *	lsym_word.c		for '.' inside numeric constants
18 */
19
20/* Designators in an initialization */
21//indent input
22struct point {
23	int x;
24	int y;
25} p = {
26	.x = 3,
27	.y = 4,
28};
29//indent end
30
31//indent run-equals-input -di0
32
33
34/* Accessing struct members */
35//indent input
36time_t
37get_time(struct stat st)
38{
39	return st.st_mtime > 0 ? st . st_atime : st.st_ctime;
40}
41//indent end
42
43//indent run
44time_t
45get_time(struct stat st)
46{
47	return st.st_mtime > 0 ? st.st_atime : st.st_ctime;
48}
49//indent end
50
51//indent run-equals-prev-output -Ttime_t
52
53
54/* Varargs in a function declaration */
55//indent input
56void my_printf(const char *, ...);
57//indent end
58
59//indent run-equals-input -di0
60