Module: TypeProf::Reporters
Relationships & Source Files | |
Defined in: | lib/typeprof/export.rb |
Class Method Summary
Class Method Details
.filter_backtrace(trace) (mod_func)
[ GitHub ]# File 'lib/typeprof/export.rb', line 20
def filter_backtrace(trace) ntrace = [trace.first] trace.each_cons(2) do |ep1, ep2| ntrace << ep2 if ep1.ctx != ep2.ctx end ntrace end
.generate_analysis_trace(state, visited, backward_edge) (mod_func)
[ GitHub ]# File 'lib/typeprof/export.rb', line 5
def generate_analysis_trace(state, visited, backward_edge) return nil if visited[state] visited[state] = true prev_states = backward_edges[state] if prev_states prev_states.each_key do |pstate| trace = generate_analysis_trace(pstate, visited, backward_edge) return [state] + trace if trace end nil else [] end end
.show_error(errors, backward_edge, output) (mod_func)
[ GitHub ]# File 'lib/typeprof/export.rb', line 39
def show_error(errors, backward_edge, output) return if errors.empty? return unless Config.current. [:show_errors] output.puts "# Errors" errors.each do |ep, msg| if ENV["TP_DETAIL"] backtrace = filter_backtrace(generate_analysis_trace(ep, {}, backward_edge)) else backtrace = [ep] end loc, *backtrace = backtrace.map do |ep| ep&.source_location end output.puts "#{ loc }: #{ msg }" backtrace.each do |loc| output.puts " from #{ loc }" end end output.puts end
.show_gvars(scratch, gvars, output) (mod_func)
[ GitHub ]# File 'lib/typeprof/export.rb', line 71
def show_gvars(scratch, gvars, output) gvars = gvars.dump.filter_map do |gvar_name, entry| if entry.type != Type.bot && !entry.rbs_declared [gvar_name, entry] end end # A signature for global variables is not supported in RBS return if gvars.empty? output.puts "# Global variables" gvars.each do |gvar_name, entry| output.puts "#{ gvar_name }: #{ entry.type.screen_name(scratch) }" end output.puts end
.show_message(terminated, output) (mod_func)
[ GitHub ].show_reveal_types(scratch, reveal_types, output) (mod_func)
[ GitHub ]# File 'lib/typeprof/export.rb', line 61
def show_reveal_types(scratch, reveal_types, output) return if reveal_types.empty? output.puts "# Revealed types" reveal_types.each do |source_location, ty| output.puts "# #{ source_location } #=> #{ ty.screen_name(scratch) }" end output.puts end