lib/graphql/language/parser.y in graphql-1.7.14 vs lib/graphql/language/parser.y in graphql-1.8.0.pre1

- old
+ new

@@ -80,11 +80,12 @@ default_value_opt: /* none */ { return nil } | EQUALS literal_value { return val[1] } selection_set: - LCURLY selection_list RCURLY { return val[1] } + LCURLY RCURLY { return [] } + | LCURLY selection_list RCURLY { return val[1] } selection_set_opt: /* none */ { return [] } | selection_set { return val[0] } @@ -150,12 +151,16 @@ | FRAGMENT | ON | operation_type | schema_keyword + name_list: + name { return [make_node(:TypeName, name: val[0])] } + | name_list name { val[0] << make_node(:TypeName, name: val[1]) } + enum_value_definition: - enum_name directives_list_opt { return make_node(:EnumValueDefinition, name: val[0], directives: val[1], description: get_description(val[0]), position_source: val[0]) } + enum_name directives_list_opt { return make_node(:EnumValueDefinition, name: val[0], directives: val[1], description: get_description(val[0])) } enum_value_definitions: enum_value_definition { return [val[0]] } | enum_value_definitions enum_value_definition { return val[0] << val[1] } @@ -300,25 +305,15 @@ return make_node(:ObjectTypeDefinition, name: val[1], interfaces: val[2], directives: val[3], fields: val[5], description: get_description(val[0]), position_source: val[0]) } implements_opt: /* none */ { return [] } - | IMPLEMENTS AMP interfaces_list { return val[2] } - | IMPLEMENTS interfaces_list { return val[1] } - | IMPLEMENTS legacy_interfaces_list { return val[1] } + | IMPLEMENTS name_list { return val[1] } - interfaces_list: - name { return [make_node(:TypeName, name: val[0], position_source: val[0])] } - | interfaces_list AMP name { val[0] << make_node(:TypeName, name: val[2], position_source: val[2]) } - - legacy_interfaces_list: - name { return [make_node(:TypeName, name: val[0], position_source: val[0])] } - | legacy_interfaces_list name { val[0] << make_node(:TypeName, name: val[1], position_source: val[1]) } - input_value_definition: name COLON type default_value_opt directives_list_opt { - return make_node(:InputValueDefinition, name: val[0], type: val[2], default_value: val[3], directives: val[4], description: get_description(val[0]), position_source: val[0]) + return make_node(:InputValueDefinition, name: val[0], type: val[2], default_value: val[3], directives: val[4], description: get_description(val[0])) } input_value_definition_list: input_value_definition { return [val[0]] } | input_value_definition_list input_value_definition { val[0] << val[1] } @@ -327,15 +322,14 @@ /* none */ { return [] } | LPAREN input_value_definition_list RPAREN { return val[1] } field_definition: name arguments_definitions_opt COLON type directives_list_opt { - return make_node(:FieldDefinition, name: val[0], arguments: val[1], type: val[3], directives: val[4], description: get_description(val[0]), position_source: val[0]) + return make_node(:FieldDefinition, name: val[0], arguments: val[1], type: val[3], directives: val[4], description: get_description(val[0])) } field_definition_list: - /* none */ { return [] } - | field_definition { return [val[0]] } + field_definition { return [val[0]] } | field_definition_list field_definition { val[0] << val[1] } interface_type_definition: INTERFACE name directives_list_opt LCURLY field_definition_list RCURLY { return make_node(:InterfaceTypeDefinition, name: val[1], directives: val[2], fields: val[4], description: get_description(val[0]), position_source: val[0])