struct ABC {
mut:
	s string
}

fn test_shared_option() {
	shared abc := foo() or { panic('scared') }
	rlock abc {
		println(abc)
		assert abc.s == 'hello'
	}
}

fn foo() ?ABC {
	mut a := ABC{}
	a.bar()?
	return a
}

fn (mut a ABC) bar() ? {
	a.s = 'hello'
	println(a.s)
}
