lib/tapioca/dsl/pipeline.rb in tapioca-0.9.4 vs lib/tapioca/dsl/pipeline.rb in tapioca-0.10.0

- old
+ new

@@ -5,11 +5,11 @@ module Dsl class Pipeline extend T::Sig sig { returns(T::Enumerable[T.class_of(Compiler)]) } - attr_reader :compilers + attr_reader :active_compilers sig { returns(T::Array[Module]) } attr_reader :requested_constants sig { returns(T.proc.params(error: String).void) } @@ -32,12 +32,12 @@ requested_compilers: [], excluded_compilers: [], error_handler: $stderr.method(:puts).to_proc, number_of_workers: nil ) - @compilers = T.let( - gather_compilers(requested_compilers, excluded_compilers), + @active_compilers = T.let( + gather_active_compilers(requested_compilers, excluded_compilers), T::Enumerable[T.class_of(Compiler)] ) @requested_constants = requested_constants @error_handler = error_handler @number_of_workers = number_of_workers @@ -85,33 +85,41 @@ sig { params(compiler_name: String).returns(T::Boolean) } def compiler_enabled?(compiler_name) potential_names = Compilers::NAMESPACES.map { |namespace| namespace + compiler_name } - @compilers.any? do |compiler| + active_compilers.any? do |compiler| potential_names.any?(compiler.name) end end + sig { returns(T::Array[T.class_of(Compiler)]) } + def compilers + @compilers = T.let(@compilers, T.nilable(T::Array[T.class_of(Compiler)])) + @compilers ||= Runtime::Reflection.descendants_of(Compiler).sort_by do |compiler| + T.must(compiler.name) + end + end + private sig do params( requested_compilers: T::Array[T.class_of(Compiler)], excluded_compilers: T::Array[T.class_of(Compiler)] ).returns(T::Enumerable[T.class_of(Compiler)]) end - def gather_compilers(requested_compilers, excluded_compilers) - Runtime::Reflection.descendants_of(Compiler).select do |klass| - (requested_compilers.empty? || requested_compilers.include?(klass)) && - !excluded_compilers.include?(klass) - end.sort_by { |klass| T.must(klass.name) } + def gather_active_compilers(requested_compilers, excluded_compilers) + active_compilers = compilers + active_compilers -= excluded_compilers + active_compilers &= requested_compilers unless requested_compilers.empty? + active_compilers end sig { params(requested_constants: T::Array[Module]).returns(T::Set[Module]) } def gather_constants(requested_constants) - constants = compilers.map(&:processable_constants).reduce(Set.new, :union) + constants = active_compilers.map(&:processable_constants).reduce(Set.new, :union) constants = filter_anonymous_and_reloaded_constants(constants) constants &= requested_constants unless requested_constants.empty? constants end @@ -143,10 +151,10 @@ sig { params(constant: Module).returns(T.nilable(RBI::File)) } def rbi_for_constant(constant) file = RBI::File.new(strictness: "true") - compilers.each do |compiler_class| + active_compilers.each do |compiler_class| next unless compiler_class.handles?(constant) compiler = compiler_class.new(self, file.root, constant) compiler.decorate rescue