Method: Divine::BabelHelperMethods#sanity_check
- Defined in:
- lib/divine/code_generators/code_generator.rb
#sanity_check(ss) ⇒ Object
Sanity check the different revisions of the struct
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/divine/code_generators/code_generator.rb', line 96 def sanity_check(ss) vos = ss.sort do |x,y| v1,v2 = [x,y].map(&:version) v1 <=> v2 end # Check version numbers unless vos.map(&:version).uniq.size == ss.size raise "Inconsistent version numbering for '#{ss.first.name}': #{vos.map(&:version).join(', ')}" end # Check that we don't have multiple variables with same name vos.each do |s| names = s.fields.group_by(&:name) names.each_pair do |k, v| raise "Multiple fields with same name '#{k}' is defined in '#{s.name}', version #{s.version}" unless v.size == 1 end end # Check types between versions check_field_types(vos) # Check for changed definitions check_freezed_structs(vos) # Return them ordered by version vos end |