lib/finitio/system.rb in finitio-0.7.0.pre.rc1 vs lib/finitio/system.rb in finitio-0.7.0.pre.rc2

- old
+ new

@@ -24,10 +24,20 @@ end @types[type.name] = type end + def each_type(&bl) + @types.values.each(&bl) + end + private :each_type + + def each_import(&bl) + @imports.each(&bl) + end + private :each_import + def get_type(name) fetch(name){|_| fetch(name.to_s){ nil } } end @@ -83,9 +93,24 @@ @types.each_pair.map{|k,v| "#{k} = #{v}" }.join("\n") end def dup System.new(@types.dup, @imports.dup) + end + + def check_and_warn(io = STDERR) + each_type do |t| + next unless t.named? + each_import do |i| + next unless found = i.get_type(t.name) + if found == t + STDERR.puts "WARN: duplicate type def `#{t.name}`" + else + STDERR.puts "NOTICE: Type erasure `#{t.name}`" + end + end + end + self end end # class System end # module Finitio