Skip to content

Commit

Permalink
Simplify Call.new convenience overloads
Browse files Browse the repository at this point in the history
  • Loading branch information
straight-shoota committed Feb 8, 2025
1 parent 0cc0264 commit 7c173d5
Showing 1 changed file with 9 additions and 17 deletions.
26 changes: 9 additions & 17 deletions src/compiler/crystal/syntax/ast.cr
Original file line number Diff line number Diff line change
Expand Up @@ -656,30 +656,22 @@ module Crystal
property? args_in_brackets = false
property? has_parentheses = false

def initialize(@obj, @name, @args = [] of ASTNode, @block = nil, @block_arg = nil, @named_args = nil, @global : Bool = false)
def initialize(@obj, @name, @args : Array(ASTNode) = [] of ASTNode, @block = nil, @block_arg = nil, @named_args = nil, @global : Bool = false)
if block = @block
block.call = self
end
end

def self.new(obj, name, arg : ASTNode, global = false)
new obj, name, [arg] of ASTNode, global: global
def self.new(obj, name, *args : ASTNode, global = false)
{% if compare_versions(Crystal::VERSION, "1.5.0") > 0 %}
new obj, name, [*args] of ASTNode, global: global
{% else %}
new obj, name, args.to_a(&.as(ASTNode)), global: global
{% end %}
end

def self.new(obj, name, arg1 : ASTNode, arg2 : ASTNode)
new obj, name, [arg1, arg2] of ASTNode
end

def self.new(obj, name, arg1 : ASTNode, arg2 : ASTNode, arg3 : ASTNode)
new obj, name, [arg1, arg2, arg3] of ASTNode
end

def self.global(name, arg : ASTNode)
new nil, name, [arg] of ASTNode, global: true
end

def self.global(name, arg1 : ASTNode, arg2 : ASTNode)
new nil, name, [arg1, arg2] of ASTNode, global: true
def self.global(name, *args : ASTNode)
new nil, name, *args, global: true
end

def name_size
Expand Down

0 comments on commit 7c173d5

Please sign in to comment.