Skip to content

markused, generics, export attribute, check: Bad error message #25794

Description

@enghitalo

Describe the bug

Bad error message

Reproduction Steps

Example 1

@[export: "sort_array"]
pub fn sort_array[T](mut arr []T) {
	arr.sort(|a, b| a < b)
}

Error:

0x7972a0b88a0d: at ???: RUNTIME ERROR: invalid memory access
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:13303: by v__ast__AnonFn_to_sumtype_v__ast__Expr
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:46192: by v__markused__Walker_expr
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:46475: by v__markused__Walker_call_expr
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:45917: by v__markused__Walker_expr
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:45754: by v__markused__Walker_stmt
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:45870: by v__markused__Walker_stmts
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:46457: by v__markused__Walker_fn_decl
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:45608: by v__markused__Walker_mark_markused_fns
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:45302: by v__markused__mark_used
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:55837: by v__builder__Builder_middle_stages
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:55854: by v__builder__Builder_front_and_middle_stages
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:58395: by v__builder__cbuilder__gen_c
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:58367: by v__builder__cbuilder__build_c
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:58358: by v__builder__cbuilder__compile_c
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:58275: by v__builder__Builder_rebuild
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:57421: by v__builder__compile
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:58787: by main__rebuild
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:58700: by main__main
/tmp/v_1000/v.01KABQF1YZ1SCJNP5X4ZV2NJYS.tmp.c:59747: by main

Example 2

@[export: "sort_array"]
pub fn sort_array[T](mut arr []T) {
	arr.sort(|a, b| a < b)
}

fn main() {
	mut arr := [5, 3, 8, 1, 2]
	sort_array(mut arr)
	println(arr) // Output should be a sorted array: [1, 2, 3, 5, 8]
}

Error:

a.v:2:1: error: duplicate export name `sort_array`
    1 | @[export: "sort_array"]
    2 | pub fn sort_array[T](mut arr []T) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3 |     arr.sort(|a, b| a < b)
    4 | }

Expected Behavior

Better error message like V haven't support for generic function exporting

Current Behavior

errors

Possible Solution

No response

Additional Information/Context

No response

V version

V 0.4.12 1bf1abd

Environment details (OS name and version, etc.)

Ubuntu

Note

You can use the 👍 reaction to increase the issue's priority for developers.

Please note that only the 👍 reaction to the issue itself counts as a vote.
Other reactions and those to comments will not be taken into account.

Metadata

Metadata

Assignees

Labels

BugThis tag is applied to issues which reports bugs.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions