class Rubydex::MethodReference
Public Instance Methods
Source
static VALUE rdxr_method_reference_document(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
const uint64_t *uri_id = rdx_method_reference_document(graph, data->id);
if (uri_id == NULL) {
rb_raise(rb_eRuntimeError, "Method reference not found");
}
VALUE argv[] = {data->graph_obj, ULL2NUM(*uri_id)};
free_u64(uri_id);
return rb_class_new_instance(2, argv, cDocument);
}
Returns the document this method reference belongs to.
Source
static VALUE rdxr_method_reference_location(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
Location *loc = rdx_method_reference_location(graph, data->id);
if (loc == NULL) {
rb_raise(rb_eRuntimeError, "Method reference must exist for a valid id");
}
VALUE location = rdxi_build_location_value(loc);
rdx_location_free(loc);
return location;
}
Returns the source location for this method reference.
Source
static VALUE rdxr_method_reference_name(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
const char *name = rdx_method_reference_name(graph, data->id);
if (name == NULL) {
rb_raise(rb_eRuntimeError, "Method reference must exist for a valid id");
}
return rdxi_owned_c_string_to_ruby(name);
}
Returns the referenced method name.
static VALUE rdxr_method_reference_receiver(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
const struct CDeclaration *decl = rdx_method_reference_receiver_declaration(graph, data->id);
if (decl == NULL) {
return Qnil;
}
VALUE decl_class = rdxi_declaration_class_for_kind(decl->kind);
VALUE argv[] = {data->graph_obj, ULL2NUM(decl->id)};
free_c_declaration(decl);
return rb_class_new_instance(2, argv, decl_class);
}
Returns the resolved declaration for the receiver of the method call. Returns nil when the receiver is not a tracked constant or cannot be resolved.