blob: 1b088b840098d9aea42c7ae4cace08ce0d6e1eb2 [file] [log] [blame]
/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. */
/* Test Enum productions
Run with --test to generate an AST and verify that all comments accurately
reflect the state of the Nodes.
BUILD Type(Name)
This comment signals that a node of type <Type> is created with the
name <Name>.
ERROR Error String
This comment signals that a error of <Error String> is generated. The error
is not assigned to a node, but are expected in order.
PROP Key=Value
This comment signals that a property has been set on the Node such that
<Key> = <Value>.
TREE
Type(Name)
Type(Name)
Type(Name)
Type(Name)
...
This comment signals that a tree of nodes matching the BUILD comment
symatics should exist. This is an exact match.
*/
/* TREE
*Enum(MealType1)
* EnumItem(rice)
* EnumItem(noodles)
* EnumItem(other)
*/
enum MealType1 {
/* BUILD EnumItem (rice) */
rice,
/* BUILD EnumItem (noodles) */
noodles,
/* BUILD EnumItem(other) */
other
};
/* BUILD Error(Enum missing name.) */
/* ERROR Enum missing name. */
enum {
rice,
noodles,
other,
};
/* TREE
*Enum(MealType2)
* EnumItem(rice)
* EnumItem(noodles)
* EnumItem(other)
*/
enum MealType2 {
/* BUILD EnumItem(rice) */
rice,
/* BUILD EnumItem(noodles) */
noodles = 1,
/* BUILD EnumItem(other) */
other
};
/* BUILD Error(Unexpected identifier "noodles" after identifier "rice".) */
/* ERROR Unexpected identifier "noodles" after identifier "rice". */
enum MissingComma {
rice
noodles,
other
};
/* BUILD Error(Trailing comma in block.) */
/* ERROR Trailing comma in block. */
enum TrailingComma {
rice,
noodles,
other,
};
/* BUILD Error(Unexpected "," after ",".) */
/* ERROR Unexpected "," after ",". */
enum ExtraComma {
rice,
noodles,
,other,
};
/* BUILD Error(Unexpected keyword "interface" after "{".) */
/* ERROR Unexpected keyword "interface" after "{". */
enum ExtraComma {
interface,
noodles,
,other,
};
/* BUILD Error(Unexpected string "somename" after "{".) */
/* ERROR Unexpected string "somename" after "{". */
enum ExtraComma {
"somename",
noodles,
other,
};
/* BUILD Enum(MealType3) */
enum MealType3 {
/* BUILD EnumItem(rice) */
rice = 1 << 1,
/* BUILD EnumItem(noodles) */
noodles = 0x1 << 0x2,
/* BUILD EnumItem(other) */
other = 012 << 777
};
/* BUILD Enum(MealType4) */
enum MealType4 {
/* BUILD EnumItem(rice) */
rice = true,
/* BUILD EnumItem(noodles) */
noodles = false
};