+ self.option_context.add_option(self.opt_erasure, self.opt_no_check_erasure_cast, opt_rta)
+ end
+
+ redef fun process_options(args)
+ do
+ super
+
+ if opt_no_check_all.value then
+ opt_no_check_erasure_cast.value = true
+ end
+ end
+
+ var erasure_compiler_phase = new ErasureCompilerPhase(self, null)
+end
+
+class ErasureCompilerPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule, given_mmodules) do
+ if not toolcontext.opt_erasure.value then return
+
+ var modelbuilder = toolcontext.modelbuilder
+ var analysis = null
+ if toolcontext.opt_rta.value then
+ analysis = modelbuilder.do_rapid_type_analysis(mainmodule)
+ end
+ modelbuilder.run_separate_erasure_compiler(mainmodule, analysis)