c3c icon indicating copy to clipboard operation
c3c copied to clipboard

Referencing `return?` of other functions/macros in doc-comments

Open vssukharev opened this issue 4 months ago • 6 comments

For instance, we have something like this:

typedef Triangle = inline uint[3];

fn TriangleKind? get_triangle_kind(Triangle* triangle)
{
  check_triangle(triangle)!;
  ...
}

<*
 @return? NONEXISTENT_TRIANGLE
*>
fn void? check_triangle(Triangle* triangle)
{
  ...  
}

What if we could explicitly define the faults returned by get_triangle_kind as though:

<*
 @return? check_triangle()
*>
fn TriangleKind? get_triangle_kind(Triangle* triangle)
{
  check_triangle(triangle)!;
}

So we can say: "get_triangle_kind can return the same faults as check_triangle". Regarding the syntax, there are multiple options:

@return? other_func()
@return? other_func
@return? &other_func
@return? [ref] other_func

vssukharev avatar Jul 27 '25 11:07 vssukharev

Yes, I've thought of this a little. See #1410 for example. Maybe other_func! could work as the syntax? Because yes, it's a pain.

lerno avatar Jul 27 '25 23:07 lerno

@return? other_func!
@return? &other_func

seems to be good. I suppose semantically it would just check @return? of specified function or macro without extra functionality for now. Now we have to decide about syntax

vssukharev avatar Jul 28 '25 09:07 vssukharev

Yes, about the syntax:

<*
 @return? check_triangle!, io::EOF
*>
fn TriangleKind? get_triangle_kind(Triangle* triangle)
{
  check_triangle(triangle)!;
}
//-- or
<*
 @return? check_triangle?, io::EOF
*>
fn TriangleKind? get_triangle_kind(Triangle* triangle)
{
  check_triangle(triangle)!;
}
//-- or
<*
 @return? check_triangle, io::EOF
*>
fn TriangleKind? get_triangle_kind(Triangle* triangle)
{
  check_triangle(triangle)!;
}
//-- or
<*
 @return? &check_triangle, io::EOF
*>
fn TriangleKind? get_triangle_kind(Triangle* triangle)
{
  check_triangle(triangle)!;
}

lerno avatar Jul 30 '25 09:07 lerno

I've just thought about referencing PFN types. In this case, thr morr valuable would be the case @return? IntFn or @return? IntFn! rather than @return? &IntFn

vssukharev avatar Jul 30 '25 09:07 vssukharev

This should now work, try it out.

lerno avatar Nov 04 '25 15:11 lerno

Syntax is @return some_func!

lerno avatar Nov 04 '25 15:11 lerno