Sha256: c4f4d5828b3d372acb8b176bff5824eba24f7e3b4ae120d2448957e35e1cb3dc
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
require 'duby/typer' module Duby module Typer class MathTyper < BaseTyper def name "Math" end def method_type(typer, target_type, name, parameter_types) return nil unless parameter_types.size == 1 result = case name when '-', '+', '*', '/', '%' case target_type when typer.fixnum_type case parameter_types[0] when typer.fixnum_type typer.fixnum_type when typer.float_type typer.float_type else nil end when typer.float_type case parameter_types[0] when typer.float_type typer.float_type when typer.fixnum_type typer.float_type else nil end else nil end when '<<', '>>', '>>>', '&', '|', '^' case target_type when typer.fixnum_type case parameter_types[0] when typer.fixnum_type typer.fixnum_type else nil end else nil end when '<', '>', '<=', '>=', '==' case target_type when typer.fixnum_type case parameter_types[0] when typer.fixnum_type typer.boolean_type else nil end when typer.float_type case parameter_types[0] when typer.float_type typer.boolean_type else nil end else nil end else nil end if result log "Method type for \"#{name}\" #{parameter_types} on #{target_type} = #{result}" else log "Method type for \"#{name}\" #{parameter_types} on #{target_type} not found" end result end end end typer_plugins << Typer::MathTyper.new end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
duby-0.0.2-java | lib/duby/plugin/math.rb |
duby-0.0.1 | lib/duby/plugin/math.rb |