type HandlerFn = fn ()

fn new_static_router(route_not_found_handler ?fn ()) fn () {
	return route_not_found_handler or {
		fn () {}
	}
}

fn new_static_router2(route_not_found_handler ?HandlerFn) fn () {
	return route_not_found_handler or {
		fn () {}
	}
}

fn test_option_fn_alias_decl_with_none() {
	b := new_static_router2(none)
	$if b is $Function {
		assert true
	} $else {
		assert false
	}
}

fn test_option_fn_decl_with_none() {
	a := new_static_router(none)
	$if a is $Function {
		assert true
	} $else {
		assert false
	}
}

fn test_option_fn_passing_normal() {
	anon_1 := fn () {
		println(1)
	}
	c := new_static_router(anon_1)
	assert c == anon_1
}

fn test_option_fn_passing_to_alias() {
	anon_2 := fn () {
		println(2)
	}
	d := new_static_router(anon_2)
	assert d == anon_2
}
