Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
felipensp committed Aug 20, 2023
1 parent 24c190f commit 08057ca
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions vlib/v/tests/comptime_generic_ret_test.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
struct Parent {
pub mut:
id int
name string
child Child
other Other
}

struct Child {
pub mut:
id int
age int
}

struct Other {
pub mut:
id int
name string
}

interface IdInterface {
mut:
id int
}

fn insert_ids[T](val T) !T {
mut clone := val

$for field in T.fields {
$if field.typ is $struct {
clone.$(field.name) = insert_ids(val.$(field.name))!
}
}
$if T is IdInterface {
clone.id = 1
} $else {
return error('${T.name} does not have an id field!')
}
return clone
}

fn test_main() {
inserted := insert_ids(Parent{
name: 'test'
})!
assert inserted.child.id == 1
assert inserted.other.id == 1
}

0 comments on commit 08057ca

Please sign in to comment.