Home | History | Annotate | Download | only in test_parser
      1 /* Copyright (c) 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 Enum productions
      6 
      7 Run with --test to generate an AST and verify that all comments accurately
      8 reflect the state of the Nodes.
      9 
     10 BUILD Type(Name)
     11 This comment signals that a node of type <Type> is created with the
     12 name <Name>.
     13 
     14 ERROR Error String
     15 This comment signals that a error of <Error String> is generated.  The error
     16 is not assigned to a node, but are expected in order.
     17 
     18 PROP Key=Value
     19 This comment signals that a property has been set on the Node such that
     20 <Key> = <Value>.
     21 
     22 TREE
     23 Type(Name)
     24   Type(Name)
     25   Type(Name)
     26     Type(Name)
     27     ...
     28 This comment signals that a tree of nodes matching the BUILD comment
     29 symatics should exist.  This is an exact match.
     30 */
     31 
     32 /* TREE
     33  *Enum(MealType1)
     34  *  EnumItem(rice)
     35  *  EnumItem(noodles)
     36  *  EnumItem(other)
     37 */
     38 enum MealType1 {
     39   /* BUILD EnumItem (rice) */
     40   "rice",
     41   /* BUILD EnumItem (noodles) */
     42   "noodles",
     43   /* BUILD EnumItem(other) */
     44   "other"
     45 };
     46 
     47 /* BUILD Error(Enum missing name.) */
     48 /* ERROR Enum missing name. */
     49 enum {
     50   "rice",
     51   "noodles",
     52   "other"
     53 };
     54 
     55 /* TREE
     56  *Enum(MealType2)
     57  *  EnumItem(rice)
     58  *  EnumItem(noodles)
     59  *  EnumItem(other)
     60 */
     61 enum MealType2 {
     62   /* BUILD EnumItem(rice) */
     63   "rice",
     64   /* BUILD EnumItem(noodles) */
     65   "noodles",
     66   /* BUILD EnumItem(other) */
     67   "other"
     68 };
     69 
     70 /* TREE
     71  *Enum(TrailingComma)
     72  *  EnumItem(rice)
     73  *  EnumItem(noodles)
     74  *  EnumItem(other)
     75 */
     76 enum TrailingComma {
     77   "rice",
     78   "noodles",
     79   "other",
     80 };
     81 
     82 /* BUILD Error(Unexpected string "noodles" after string "rice".) */
     83 /* ERROR Unexpected string "noodles" after string "rice". */
     84 enum MissingComma {
     85   "rice"
     86   "noodles",
     87   "other"
     88 };
     89 
     90 /* BUILD Error(Unexpected "," after ",".) */
     91 /* ERROR Unexpected "," after ",". */
     92 enum ExtraComma {
     93   "rice",
     94   "noodles",
     95   ,"other",
     96 };
     97 
     98 /* BUILD Error(Unexpected keyword "interface" after "{".) */
     99 /* ERROR Unexpected keyword "interface" after "{". */
    100 enum ExtraComma {
    101   interface,
    102   "noodles",
    103   ,"other",
    104 };
    105 
    106 /* BUILD Error(Unexpected identifier "somename" after "{".) */
    107 /* ERROR Unexpected identifier "somename" after "{". */
    108 enum ExtraComma {
    109   somename,
    110   "noodles",
    111   ,"other",
    112 };
    113 
    114 /* BUILD Enum(MealType3) */
    115 enum MealType3 {
    116   /* BUILD EnumItem(rice) */
    117   "rice",
    118   /* BUILD EnumItem(noodles) */
    119   "noodles",
    120   /* BUILD EnumItem(other) */
    121   "other"
    122 };
    123 
    124