• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* Copyright 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 ExtendedAttribute 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/* TREE
33 *Interface(Foo)
34 *  ExtAttributes()
35 *    ExtAttribute(foo)
36 *      Arguments()
37 */
38
39[foo()] interface Foo {};
40
41/* TREE
42 *Interface(Foo)
43 *  ExtAttributes()
44 *    ExtAttribute(foo)
45 *      Values()
46 */
47
48[foo(1)] interface Foo {};
49
50/* TREE
51 *Interface(Foo)
52 *  ExtAttributes()
53 *    ExtAttribute(foo)
54 *      Values()
55 */
56
57[foo(1 true 1.2e-3)] interface Foo {};
58
59/* TREE
60 *Interface(Foo)
61 *  ExtAttributes()
62 *    ExtAttribute(foo)
63 *      Arguments()
64 *        Error(Unexpected ).)
65 */
66
67[foo(null)] interface Foo {};
68
69/* TREE
70 *Interface(Foo)
71 *  ExtAttributes()
72 *    ExtAttribute(foo)
73 */
74
75[foo=1] interface Foo {};
76
77/* TREE
78 *Interface(Foo)
79 *  ExtAttributes()
80 *    ExtAttribute(foo)
81 */
82
83[foo=true] interface Foo {};
84
85/* TREE
86 *Interface(Foo)
87 *  ExtAttributes()
88 *    ExtAttribute(foo)
89 */
90
91[foo=1.2e-3] interface Foo {};
92
93/* TREE
94 *Interface(Foo)
95 *  ExtAttributes()
96 *    ExtAttribute(foo)
97 */
98
99[foo=(bar, baz)] interface Foo {};
100