1/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2   Use of this source code is governed by a BSD-style license that can be
3  found in the LICENSE file. */
4
5/* Test Callback productions
6
7Run with --test to generate an AST and verify that all comments accurately
8reflect the state of the Nodes.
9
10BUILD Type(Name)
11This comment signals that a node of type <Type> is created with the
12name <Name>.
13
14ERROR Error String
15This comment signals that a error of <Error String> is generated.  The error
16is not assigned to a node, but are expected in order.
17
18PROP Key=Value
19This comment signals that a property has been set on the Node such that
20<Key> = <Value>.
21
22TREE
23Type(Name)
24  Type(Name)
25  Type(Name)
26    Type(Name)
27    ...
28This comment signals that a tree of nodes matching the BUILD comment
29symatics should exist.  This is an exact match.
30*/
31
32
33/* TREE
34 *Callback(VoidFunc)
35 *  Type()
36 *    PrimitiveType(void)
37 *  Arguments()
38 */
39callback VoidFunc = void();
40
41/* TREE
42 *Callback(VoidFuncLongErr)
43 *  Type()
44 *    PrimitiveType(void)
45 *  Arguments()
46 *    Error(Unexpected ).)
47 */
48callback VoidFuncLongErr = void ( long );
49
50/* TREE
51 *Callback(VoidFuncLong)
52 *  Type()
53 *    PrimitiveType(void)
54 *  Arguments()
55 *    Argument(L1)
56 *      Type()
57 *        PrimitiveType(long)
58 */
59callback VoidFuncLong = void ( long L1 );
60
61/* TREE
62 *Callback(VoidFuncLongArray)
63 *  Type()
64 *    PrimitiveType(void)
65 *  Arguments()
66 *    Argument(L1)
67 *      Type()
68 *        PrimitiveType(long)
69 *        Array()
70 */
71callback VoidFuncLongArray = void ( long[] L1 );
72
73/* TREE
74 *Callback(VoidFuncLongArray5)
75 *  Type()
76 *    PrimitiveType(void)
77 *  Arguments()
78 *    Argument(L1)
79 *      Type()
80 *        PrimitiveType(long)
81 *        Array(5)
82 */
83callback VoidFuncLongArray5 = void ( long[5] L1 );
84
85
86/* TREE
87 *Callback(VoidFuncLongArray54)
88 *  Type()
89 *    PrimitiveType(void)
90 *  Arguments()
91 *    Argument(L1)
92 *      Type()
93 *        PrimitiveType(long)
94 *        Array(5)
95 *    Argument(L2)
96 *      Type()
97 *        PrimitiveType(long long)
98 *        Array(4)
99 */
100callback VoidFuncLongArray54 = void ( long[5] L1, long long [4] L2 );
101
102
103/* TREE
104 *Callback(VoidFuncLongIdent)
105 *  Type()
106 *    PrimitiveType(void)
107 *  Arguments()
108 *    Argument(L1)
109 *      Type()
110 *        PrimitiveType(long)
111 *        Array(5)
112 *    Argument(L2)
113 *      Type()
114 *        Typeref(VoidFuncLongArray)
115 */
116callback VoidFuncLongIdent = void ( long[5] L1, VoidFuncLongArray L2 );
117