class D
def foo(x, y, z)
end
end
class C
def initialize(x)
@target = x
end
def method_missing(m, *args)
@target.send(m, *args)
end
end
C.new(D.new).foo(:X, :Y, :Z)
__END__
# Classes
class D
def foo: (:X x, :Y y, :Z z) -> nil
end
class C
@target: D
def initialize: (D x) -> D
def method_missing: (:foo m, *:X | :Y | :Z args) -> nil
end