/src/tools/syntax/tree/liberty_ast_type_parameter.e
Specman e | 58 lines | 35 code | 9 blank | 14 comment | 0 complexity | f5ef07be00b8908f1764d8d9c3ffdab4 MD5 | raw file
1-- This file is part of Liberty Eiffel. 2-- 3-- Liberty Eiffel is free software: you can redistribute it and/or modify 4-- it under the terms of the GNU General Public License as published by 5-- the Free Software Foundation, version 3 of the License. 6-- 7-- Liberty Eiffel is distributed in the hope that it will be useful, 8-- but WITHOUT ANY WARRANTY; without even the implied warranty of 9-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10-- GNU General Public License for more details. 11-- 12-- You should have received a copy of the GNU General Public License 13-- along with Liberty Eiffel. If not, see <http://www.gnu.org/licenses/>. 14-- 15class LIBERTY_AST_TYPE_PARAMETER 16 17inherit 18 LIBERTY_AST_NON_TERMINAL_NODE 19 20create {LIBERTY_NODE_FACTORY} 21 make 22 23feature {LIBERTY_AST_HANDLER} 24 class_name: LIBERTY_AST_CLASS_NAME is 25 do 26 Result ::= nodes.item(0) 27 end 28 29 has_constraint: BOOLEAN is 30 do 31 Result := count = 3 32 check 33 Result implies nodes.item(2).name.is_equal(once "Type_Definition") 34 end 35 end 36 37 constraint: LIBERTY_AST_TYPE_DEFINITION is 38 require 39 has_constraint 40 do 41 Result ::= nodes.item(2) 42 end 43 44feature {ANY} 45 count: INTEGER is 46 do 47 Result := nodes.count 48 end 49 50 name: STRING is "Type_Parameter" 51 52feature {} 53 possible_counts: SET[INTEGER] is 54 once 55 Result := {AVL_SET[INTEGER] << 1, 3 >> } 56 end 57 58end