Class: Rubydex::MethodAliasDefinition
- Inherits:
-
Definition
- Object
- Definition
- Rubydex::MethodAliasDefinition
- Defined in:
- ext/rubydex/definition.c
Instance Method Summary collapse
-
#signatures ⇒ Array[Rubydex::Signature]
Returns signatures for this method alias definition.
-
#target ⇒ Rubydex::Method?
Returns the resolved target method declaration by following the alias chain, or nil if the chain could not be resolved.
Methods inherited from Definition
#comments, #declaration, #deprecated?, #document, #initialize, #lexical_nesting, #lexical_owner, #location, #name, #name_location
Constructor Details
This class inherits a constructor from Rubydex::Definition
Instance Method Details
#signatures ⇒ Array[Rubydex::Signature]
Returns signatures for this method alias definition.
412 413 414 415 416 417 418 |
# File 'ext/rubydex/definition.c', line 412
static VALUE rdxr_method_alias_definition_signatures(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
SignatureArray *arr = rdx_method_alias_definition_signatures(graph, data->id);
return rdxi_signatures_to_ruby(arr);
}
|
#target ⇒ Rubydex::Method?
Returns the resolved target method declaration by following the alias chain, or nil if the chain could not be resolved. Raises Rubydex::AliasCycleError when the alias chain forms a cycle.
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'ext/rubydex/definition.c', line 427
static VALUE rdxr_method_alias_definition_target(VALUE self) {
HandleData *data;
void *graph = rdxi_graph_from_handle(self, &data);
CMethodAliasTargetResult result = rdx_method_alias_definition_target(graph, data->id);
switch (result.status) {
case CMethodAliasResolution_Resolved: {
VALUE decl_class = rdxi_declaration_class_for_kind(result.declaration->kind);
VALUE argv[] = {data->graph_obj, ULL2NUM(result.declaration->id)};
free_c_declaration(result.declaration);
return rb_class_new_instance(2, argv, decl_class);
}
case CMethodAliasResolution_NotFound:
return Qnil;
case CMethodAliasResolution_Cycle:
rb_raise(rb_const_get(mRubydex, rb_intern("AliasCycleError")), "method alias chain forms a cycle");
default:
rb_raise(rb_eRuntimeError, "Unknown CMethodAliasResolution: %d", result.status);
}
}
|