Skip to content

Commit 88471dd

Browse files
fix: RVI20 incorrectly shows optional extension multiple times (#774)
fixes: #773
1 parent 95013b4 commit 88471dd

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

lib/arch_obj_models/extension.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ def extension
469469
# @param requirements [String] Single requirement
470470
# @param requirements [Array<String>] List of requirements, all of which must hold
471471
# @param arch [Architecture]
472+
# @param presence [String or Presence or nil]
472473
def initialize(name, *requirements, arch: nil, note: nil, req_id: nil, presence: nil)
473474
raise ArgumentError, "For #{name}, got class #{arch.class} but need Architecture" unless arch.is_a?(Architecture)
474475

lib/arch_obj_models/portfolio.rb

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -522,10 +522,10 @@ def in_scope_ext_reqs(desired_presence = nil)
522522

523523
# Convert desired_present argument to Presence object if not nil.
524524
desired_presence_converted =
525-
desired_presence.nil? ? nil :
526-
desired_presence.is_a?(String) ? desired_presence :
525+
desired_presence.nil? ? nil :
526+
desired_presence.is_a?(String) ? desired_presence :
527527
desired_presence.is_a?(Presence) ? desired_presence :
528-
Presence.new(desired_presence)
528+
Presence.new(desired_presence)
529529

530530
missing_ext = false
531531

@@ -665,10 +665,8 @@ def uses_optional_types?
665665

666666
@uses_optional_types = false
667667

668-
# Iterate through different kinds of optional using the "object" version (not the string version).
669-
Presence.optional_types_obj.each do |optional_type_obj|
670-
# See if any extension reqs have this type of optional.
671-
unless in_scope_ext_reqs(optional_type_obj).empty?
668+
in_scope_ext_reqs(Presence.optional)&.each do |ext_req|
669+
if ext_req.presence.uses_optional_types?
672670
@uses_optional_types = true
673671
end
674672
end

lib/presence.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ def self.optional_types_obj
8181
@optional_types_obj
8282
end
8383

84+
# @return [Boolean] True if Presence object differentiates between optional types.
85+
def uses_optional_types? = !@optional_type.nil?
86+
8487
def to_s
8588
@optional_type.nil? ? "#{presence}" : "#{presence} (#{optional_type})"
8689
end

0 commit comments

Comments
 (0)