|  | /* 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 | 
|  | }; |