File tree Expand file tree Collapse file tree 3 files changed +14
-0
lines changed Expand file tree Collapse file tree 3 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -409,6 +409,14 @@ module Crystal
409409 assert_macro %( {{'a'.ord}}) , %( 97)
410410 assert_macro %( {{'龍'.ord}}) , %( 40845)
411411 end
412+
413+ it " executes zero?" do
414+ assert_macro " {{0.zero?}}" , " true"
415+ assert_macro " {{1.zero?}}" , " false"
416+
417+ assert_macro " {{0.0.zero?}}" , " true"
418+ assert_macro " {{0.1.zero?}}" , " false"
419+ end
412420 end
413421
414422 describe " string methods" do
Original file line number Diff line number Diff line change @@ -540,6 +540,10 @@ module Crystal::Macros
540540
541541 # Any number literal.
542542 class NumberLiteral < ASTNode
543+ # Returns `true` if value is 0, `false` otherwise.
544+ def zero ? : BoolLiteral
545+ end
546+
543547 # Compares this node's value to another node's value.
544548 def < (other : NumberLiteral ) : BoolLiteral
545549 end
Original file line number Diff line number Diff line change @@ -548,6 +548,8 @@ module Crystal
548548 interpret_check_args { SymbolLiteral .new(kind.to_s) }
549549 when " to_number"
550550 interpret_check_args { MacroId .new(to_number.to_s) }
551+ when " zero?"
552+ interpret_check_args { BoolLiteral .new(to_number.zero?) }
551553 else
552554 super
553555 end
You can’t perform that action at this time.
0 commit comments