/* 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 is created with the name . ERROR Error String This comment signals that a error of 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 = . 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 };