steep 1.6.0.pre.2 → 1.6.0.pre.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +7 -0
 - data/Gemfile.lock +1 -1
 - data/lib/steep/interface/builder.rb +27 -13
 - data/lib/steep/type_construction.rb +11 -2
 - data/lib/steep/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 89c50cdd644b4f90f2b7f5a18c262c181088eda18b116b7604f8ca4b4d17363c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 6191d664a4a348dfdc43559c40a75ded920b83a2b245d28d10f84c3c72f7d324
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 833394273e491c154a8fd6ca60c693f1fd28f51d4dcb2f864c4d60abe4645e7dceb4d9914261d8237fb339e0c7f27a7625baedea3cd9ac1680d0d32a98b2867c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 827261fdcffe5a0d3b32ee5771bbc6577a7a9b71a0aa2f25f3cff5eb1c6a2817e592a56f6c7189d8a028a686b7a1d8e24b313e919427c253f372de3316ed6353
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -2,6 +2,13 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ## master
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            ## 1.6.0.pre.3 (2023-11-01)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ### Type checker core
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            * Object methods are moved to Kernel ([#952](https://github.com/soutaro/steep/pull/952))
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Check if `rescue` body has `bot` type ([#953](https://github.com/soutaro/steep/pull/953))
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       5 
12 
     | 
    
         
             
            ## 1.6.0.pre.2 (2023-10-31)
         
     | 
| 
       6 
13 
     | 
    
         | 
| 
       7 
14 
     | 
    
         
             
            ### Type checker core
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
| 
         @@ -1,4 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
1 
     | 
    
         
             
            module Steep
         
     | 
| 
       3 
2 
     | 
    
         
             
              module Interface
         
     | 
| 
       4 
3 
     | 
    
         
             
                class Builder
         
     | 
| 
         @@ -718,22 +717,30 @@ module Steep 
     | 
|
| 
       718 
717 
     | 
    
         
             
                    if member.is_a?(RBS::AST::Members::MethodDefinition)
         
     | 
| 
       719 
718 
     | 
    
         
             
                      case method_name.method_name
         
     | 
| 
       720 
719 
     | 
    
         
             
                      when :is_a?, :kind_of?, :instance_of?
         
     | 
| 
       721 
     | 
    
         
            -
                         
     | 
| 
       722 
     | 
    
         
            -
             
     | 
| 
       723 
     | 
    
         
            -
             
     | 
| 
       724 
     | 
    
         
            -
             
     | 
| 
      
 720 
     | 
    
         
            +
                        case
         
     | 
| 
      
 721 
     | 
    
         
            +
                        when RBS::BuiltinNames::Object.name,
         
     | 
| 
      
 722 
     | 
    
         
            +
                          RBS::BuiltinNames::Kernel.name
         
     | 
| 
      
 723 
     | 
    
         
            +
                          if member.instance?
         
     | 
| 
      
 724 
     | 
    
         
            +
                            return method_type.with(
         
     | 
| 
      
 725 
     | 
    
         
            +
                              type: method_type.type.with(
         
     | 
| 
      
 726 
     | 
    
         
            +
                                return_type: AST::Types::Logic::ReceiverIsArg.new(location: method_type.type.return_type.location)
         
     | 
| 
      
 727 
     | 
    
         
            +
                              )
         
     | 
| 
       725 
728 
     | 
    
         
             
                            )
         
     | 
| 
       726 
     | 
    
         
            -
                           
     | 
| 
      
 729 
     | 
    
         
            +
                          end
         
     | 
| 
       727 
730 
     | 
    
         
             
                        end
         
     | 
| 
       728 
731 
     | 
    
         | 
| 
       729 
732 
     | 
    
         
             
                      when :nil?
         
     | 
| 
       730 
733 
     | 
    
         
             
                        case defined_in
         
     | 
| 
       731 
     | 
    
         
            -
                        when RBS::BuiltinNames::Object.name, 
     | 
| 
       732 
     | 
    
         
            -
                           
     | 
| 
       733 
     | 
    
         
            -
             
     | 
| 
       734 
     | 
    
         
            -
             
     | 
| 
      
 734 
     | 
    
         
            +
                        when RBS::BuiltinNames::Object.name,
         
     | 
| 
      
 735 
     | 
    
         
            +
                          AST::Builtin::NilClass.module_name,
         
     | 
| 
      
 736 
     | 
    
         
            +
                          RBS::BuiltinNames::Kernel.name
         
     | 
| 
      
 737 
     | 
    
         
            +
                          if member.instance?
         
     | 
| 
      
 738 
     | 
    
         
            +
                            return method_type.with(
         
     | 
| 
      
 739 
     | 
    
         
            +
                              type: method_type.type.with(
         
     | 
| 
      
 740 
     | 
    
         
            +
                                return_type: AST::Types::Logic::ReceiverIsNil.new(location: method_type.type.return_type.location)
         
     | 
| 
      
 741 
     | 
    
         
            +
                              )
         
     | 
| 
       735 
742 
     | 
    
         
             
                            )
         
     | 
| 
       736 
     | 
    
         
            -
             
     | 
| 
      
 743 
     | 
    
         
            +
                        end
         
     | 
| 
       737 
744 
     | 
    
         
             
                        end
         
     | 
| 
       738 
745 
     | 
    
         | 
| 
       739 
746 
     | 
    
         
             
                      when :!
         
     | 
| 
         @@ -757,8 +764,14 @@ module Steep 
     | 
|
| 
       757 
764 
     | 
    
         
             
                              return_type: AST::Types::Logic::ArgIsReceiver.new(location: method_type.type.return_type.location)
         
     | 
| 
       758 
765 
     | 
    
         
             
                            )
         
     | 
| 
       759 
766 
     | 
    
         
             
                          )
         
     | 
| 
       760 
     | 
    
         
            -
                        when RBS::BuiltinNames::Object.name, 
     | 
| 
       761 
     | 
    
         
            -
                          RBS::BuiltinNames:: 
     | 
| 
      
 767 
     | 
    
         
            +
                        when RBS::BuiltinNames::Object.name,
         
     | 
| 
      
 768 
     | 
    
         
            +
                          RBS::BuiltinNames::Kernel.name,
         
     | 
| 
      
 769 
     | 
    
         
            +
                          RBS::BuiltinNames::String.name,
         
     | 
| 
      
 770 
     | 
    
         
            +
                          RBS::BuiltinNames::Integer.name,
         
     | 
| 
      
 771 
     | 
    
         
            +
                          RBS::BuiltinNames::Symbol.name,
         
     | 
| 
      
 772 
     | 
    
         
            +
                          RBS::BuiltinNames::TrueClass.name,
         
     | 
| 
      
 773 
     | 
    
         
            +
                          RBS::BuiltinNames::FalseClass.name,
         
     | 
| 
      
 774 
     | 
    
         
            +
                          TypeName("::NilClass")
         
     | 
| 
       762 
775 
     | 
    
         
             
                          # Value based type-case works on literal types which is available for String, Integer, Symbol, TrueClass, FalseClass, and NilClass
         
     | 
| 
       763 
776 
     | 
    
         
             
                          return method_type.with(
         
     | 
| 
       764 
777 
     | 
    
         
             
                            type: method_type.type.with(
         
     | 
| 
         @@ -783,3 +796,4 @@ module Steep 
     | 
|
| 
       783 
796 
     | 
    
         
             
                end
         
     | 
| 
       784 
797 
     | 
    
         
             
              end
         
     | 
| 
       785 
798 
     | 
    
         
             
            end
         
     | 
| 
      
 799 
     | 
    
         
            +
             
     | 
| 
         @@ -2214,6 +2214,10 @@ module Steep 
     | 
|
| 
       2214 
2214 
     | 
    
         
             
                          end
         
     | 
| 
       2215 
2215 
     | 
    
         
             
                        end
         
     | 
| 
       2216 
2216 
     | 
    
         | 
| 
      
 2217 
     | 
    
         
            +
                        resbody_pairs.select! do |pair|
         
     | 
| 
      
 2218 
     | 
    
         
            +
                          no_subtyping?(sub_type: pair.type, super_type: AST::Types::Bot.new)
         
     | 
| 
      
 2219 
     | 
    
         
            +
                        end
         
     | 
| 
      
 2220 
     | 
    
         
            +
             
     | 
| 
       2217 
2221 
     | 
    
         
             
                        resbody_types = resbody_pairs.map(&:type)
         
     | 
| 
       2218 
2222 
     | 
    
         
             
                        resbody_envs = resbody_pairs.map {|pair| pair.context.type_env }
         
     | 
| 
       2219 
2223 
     | 
    
         | 
| 
         @@ -2225,8 +2229,13 @@ module Steep 
     | 
|
| 
       2225 
2229 
     | 
    
         
             
                            .update_type_env {|env| env.join(*resbody_envs, env) }
         
     | 
| 
       2226 
2230 
     | 
    
         
             
                            .add_typing(node, type: union_type(else_type, *resbody_types))
         
     | 
| 
       2227 
2231 
     | 
    
         
             
                        else
         
     | 
| 
       2228 
     | 
    
         
            -
                           
     | 
| 
       2229 
     | 
    
         
            -
                             
     | 
| 
      
 2232 
     | 
    
         
            +
                          if resbody_types.empty?
         
     | 
| 
      
 2233 
     | 
    
         
            +
                            constr = body_pair ? body_pair.constr : self
         
     | 
| 
      
 2234 
     | 
    
         
            +
                            constr.add_typing(node, type: body_pair&.type || AST::Builtin.nil_type)
         
     | 
| 
      
 2235 
     | 
    
         
            +
                          else
         
     | 
| 
      
 2236 
     | 
    
         
            +
                            update_type_env {|env| env.join(*resbody_envs, else_constr.context.type_env) }
         
     | 
| 
      
 2237 
     | 
    
         
            +
                              .add_typing(node, type: union_type(*[body_pair&.type, *resbody_types].compact))
         
     | 
| 
      
 2238 
     | 
    
         
            +
                          end
         
     | 
| 
       2230 
2239 
     | 
    
         
             
                        end
         
     | 
| 
       2231 
2240 
     | 
    
         
             
                      end
         
     | 
| 
       2232 
2241 
     | 
    
         | 
    
        data/lib/steep/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: steep
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.6.0.pre. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.6.0.pre.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Soutaro Matsumoto
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2023- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-11-01 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: parser
         
     |