struct Foo<T> {
pub:
	data T
}

struct Foo1 {}

struct Foo2 {}

fn multi_generic_args<T, V>(t T, v V) bool {
	return true
}

fn main() {
	v1, v2 := -1, 1

	// not generic
	a1, a2 := v1 < v2, v2 > v1
	assert a1 && a2
	b1, b2 := v1 < simplemodule.zero, v2 > v1
	assert b1 && b2

	// generic
	assert multi_generic_args<int, string>(0, 's')
	assert multi_generic_args<Foo1, Foo2>(Foo1{}, Foo2{})
	assert multi_generic_args<Foo<int>, Foo<int>>(Foo<int>{}, Foo<int>{})
}
