Skip to content

Commit 8bc3cee

Browse files
SijaRX14
authored andcommittedJan 20, 2018
Add #clear method to ArrayLiteral/HashLiteral (#5265)
1 parent 6c2297b commit 8bc3cee

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed
 

‎src/compiler/crystal/macros.cr

+8
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,10 @@ module Crystal::Macros
542542
def splat(trailing_string : StringLiteral = nil) : MacroId
543543
end
544544

545+
# Similar to `Array#clear`
546+
def clear : ArrayLiteral
547+
end
548+
545549
# Similar to `Array#empty?`
546550
def empty? : BoolLiteral
547551
end
@@ -625,6 +629,10 @@ module Crystal::Macros
625629

626630
# A hash literal.
627631
class HashLiteral < ASTNode
632+
# Similar to `Hash#clear`
633+
def clear : HashLiteral
634+
end
635+
628636
# Similar to `Hash#empty?`
629637
def empty? : BoolLiteral
630638
end

‎src/compiler/crystal/macros/methods.cr

+10
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,11 @@ module Crystal
753753
interpret_argless_method(method, args) { @of || Nop.new }
754754
when "type"
755755
interpret_argless_method(method, args) { @name || Nop.new }
756+
when "clear"
757+
interpret_argless_method(method, args) do
758+
elements.clear
759+
self
760+
end
756761
else
757762
value = intepret_array_or_tuple_method(self, ArrayLiteral, method, args, block, interpreter)
758763
value || super
@@ -837,6 +842,11 @@ module Crystal
837842
interpret_argless_method(method, args) { @of.try(&.value) || Nop.new }
838843
when "type"
839844
interpret_argless_method(method, args) { @name || Nop.new }
845+
when "clear"
846+
interpret_argless_method(method, args) do
847+
entries.clear
848+
self
849+
end
840850
else
841851
super
842852
end

0 commit comments

Comments
 (0)
Please sign in to comment.