class Dry::Schema::MessageCompiler

def visit_predicate(node, opts)

Other tags:
    Api: - private
def visit_predicate(node, opts)
  predicate, args = node
  tokens = message_tokens(args)
  path, *arg_vals, input = predicate_resolvers[predicate].(args, opts)
  options = opts.dup.update(
    path: path.last, **tokens, **lookup_options(arg_vals: arg_vals, input: input)
  ).to_h
  template, meta = messages[predicate, options]
  unless template
    raise MissingMessageError.new(path, messages.looked_up_paths(predicate, options))
  end
  text = message_text(template, tokens, options)
  message_type(options).new(
    text: text,
    meta: meta,
    path: path,
    predicate: predicate,
    args: arg_vals,
    input: input
  )
end