@@ -84,7 +84,7 @@ def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil, opti
8484      @new_platform  =  nil 
8585      @removed_platform  =  nil 
8686
87-       if  lockfile  &&  File . exist? ( lockfile ) 
87+       if  lockfile_exists? 
8888        @lockfile_contents  =  Bundler . read_file ( lockfile ) 
8989        @locked_gems  =  LockfileParser . new ( @lockfile_contents ) 
9090        @locked_platforms  =  @locked_gems . platforms 
@@ -302,6 +302,10 @@ def resolve
302302      end 
303303    end 
304304
305+     def  should_complete_platforms? 
306+       !lockfile_exists?  && generic_local_platform_is_ruby?  && !Bundler . settings [ :force_ruby_platform ] 
307+     end 
308+ 
305309    def  spec_git_paths 
306310      sources . git_sources . map  { |s | File . realpath ( s . path )  if  File . exist? ( s . path )  } . compact 
307311    end 
@@ -491,6 +495,10 @@ def unlocking?
491495
492496    private 
493497
498+     def  lockfile_exists? 
499+       lockfile  && File . exist? ( lockfile ) 
500+     end 
501+ 
494502    def  resolver 
495503      @resolver  ||= Resolver . new ( resolution_packages ,  gem_version_promoter ) 
496504    end 
@@ -567,11 +575,12 @@ def materialize(dependencies)
567575    end 
568576
569577    def  start_resolution 
570-       result  =  resolver . start 
578+       result  =  SpecSet . new ( resolver . start ) 
571579
572580      @resolved_bundler_version  =  result . find  { |spec | spec . name  == "bundler"  } &.version 
581+       @platforms  =  result . complete_platforms! ( platforms )  if  should_complete_platforms? 
573582
574-       SpecSet . new ( SpecSet . new ( result ) . for ( dependencies ,  false ,  @platforms ) ) 
583+       SpecSet . new ( result . for ( dependencies ,  false ,  @platforms ) ) 
575584    end 
576585
577586    def  precompute_source_requirements_for_indirect_dependencies? 
@@ -592,7 +601,7 @@ def pin_locally_available_names(source_requirements)
592601    end 
593602
594603    def  current_ruby_platform_locked? 
595-       return  false  unless  generic_local_platform  ==  Gem :: Platform :: RUBY 
604+       return  false  unless  generic_local_platform_is_ruby? 
596605      return  false  if  Bundler . settings [ :force_ruby_platform ]  && !@platforms . include? ( Gem ::Platform ::RUBY ) 
597606
598607      current_platform_locked? 
0 commit comments