Skip to content

Commit e86296d

Browse files
authored
Merge pull request #2118 from ksss/record-memory
Reduce object allocation for record type
2 parents e4b4d58 + 1782190 commit e86296d

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

lib/rbs/types.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -521,13 +521,20 @@ class Record
521521
def initialize(all_fields: nil, fields: nil, location:)
522522
case
523523
when fields && all_fields.nil?
524-
@all_fields = fields.map { |k, v| [k, [v, true]] }.to_h
524+
@all_fields = fields.transform_values { |v| [v, true] }
525525
@fields = fields
526526
@optional_fields = {}
527527
when all_fields && fields.nil?
528528
@all_fields = all_fields
529-
@fields = all_fields.filter_map { |k, (v, required)| [k, v] if required }.to_h
530-
@optional_fields = all_fields.filter_map { |k, (v, required)| [k, v] unless required }.to_h
529+
@fields = {}
530+
@optional_fields = {}
531+
all_fields.each do |(k, (v, required))|
532+
if required
533+
@fields[k] = v
534+
else
535+
@optional_fields[k] = v
536+
end
537+
end
531538
else
532539
raise ArgumentError, "only one of `:fields` or `:all_fields` is requireds"
533540
end

0 commit comments

Comments
 (0)