/src/tools/semantics/code/expressions/liberty_typed_manifest.e
Specman e | 53 lines | 32 code | 7 blank | 14 comment | 0 complexity | c75f875ad1f43e409559765432db312f 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-- 15deferred class LIBERTY_TYPED_MANIFEST[E_] 16 17inherit 18 LIBERTY_EXPRESSION 19 20feature {ANY} 21 manifest: E_ 22 result_type: LIBERTY_TYPE 23 24 specialized_in (a_type: LIBERTY_ACTUAL_TYPE): like Current is 25 do 26 Result := Current 27 end 28 29feature {LIBERTY_REACHABLE, LIBERTY_REACHABLE_COLLECTION_MARKER} 30 mark_reachable_code (mark: INTEGER) is 31 do 32 result_type.mark_reachable_code(mark) 33 end 34 35feature {} 36 make (a_type: like result_type; a_manifest: like manifest; a_position: like position) is 37 require 38 a_type /= Void 39 a_position /= Void 40 do 41 result_type := a_type 42 manifest := a_manifest 43 position := a_position 44 ensure 45 result_type = a_type 46 manifest = a_manifest 47 position = a_position 48 end 49 50invariant 51 result_type /= Void 52 53end