/* 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", /* BUILD EnumItem(other) */ "other" }; /* TREE *Enum(TrailingComma) * EnumItem(rice) * EnumItem(noodles) * EnumItem(other) */ enum TrailingComma { "rice", "noodles", "other", }; /* BUILD Error(Unexpected string "noodles" after string "rice".) */ /* ERROR Unexpected string "noodles" after string "rice". */ enum MissingComma { "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 identifier "somename" after "{".) */ /* ERROR Unexpected identifier "somename" after "{". */ enum ExtraComma { somename, "noodles", ,"other", }; /* BUILD Enum(MealType3) */ enum MealType3 { /* BUILD EnumItem(rice) */ "rice", /* BUILD EnumItem(noodles) */ "noodles", /* BUILD EnumItem(other) */ "other" };