Class: Rubydex::MethodAliasDefinition

Inherits:
Definition
  • Object
show all
Defined in:
ext/rubydex/definition.c

Instance Method Summary collapse

Methods inherited from Definition

#comments, #declaration, #deprecated?, #initialize, #lexical_nesting, #lexical_owner, #location, #name, #name_location

Constructor Details

This class inherits a constructor from Rubydex::Definition

Instance Method Details

#signaturesArray[Rubydex::Signature]

Returns signatures for this method alias definition.

Returns:



356
357
358
359
360
361
362
# File 'ext/rubydex/definition.c', line 356

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);
}

#targetRubydex::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.

Returns:



371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
# File 'ext/rubydex/definition.c', line 371

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);
    }
}