Skip to content

Commit 5667437

Browse files
committed
Properly handle lookups for compiling the size directive.
Having this resulted in a hang from an key not found exception.
1 parent ef544cf commit 5667437

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/compilers/component.cr

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -188,19 +188,27 @@ module Mint
188188

189189
sizes =
190190
node.sizes
191-
.uniq { |size| lookups[size][0].as(Ast::HtmlElement) }
192-
.map do |size|
193-
element =
194-
lookups[size][0].as(Ast::HtmlElement)
195-
196-
item =
197-
(self.sizes[element] ||= Size.new)
198-
199-
{node, item, js.call(Builtin::UseDimensions, [
200-
[element.ref.as(Ast::Node)] of Item,
201-
[dom_get_dimensions] of Item,
202-
[dom_dimensions_empty] of Item,
203-
])}
191+
.uniq do |size|
192+
case item = lookups[size]?
193+
when Tuple(Ast::Node, Ast::Node?)
194+
item[0]
195+
end
196+
end
197+
.compact_map do |size|
198+
case item = lookups[size]?
199+
when Tuple(Ast::Node, Ast::Node?)
200+
case element = item[0]
201+
when Ast::HtmlElement
202+
item =
203+
(self.sizes[element] ||= Size.new)
204+
205+
{node, item, js.call(Builtin::UseDimensions, [
206+
[element.ref.as(Ast::Node)] of Item,
207+
[dom_get_dimensions] of Item,
208+
[dom_dimensions_empty] of Item,
209+
])}
210+
end
211+
end
204212
end
205213

206214
items =

0 commit comments

Comments
 (0)