// fixes https://github.com/vlang/v/issues/11564, test is copied from the code by https://github.com/ken0x0a and formatted
import x.json2

struct SA {}

struct SB {}

struct SC {}

type Sum = SA | SB | SC

struct App {
	s map[string]Sum
	t bool
}

fn test_init_multiple_branches() {
	mut m := map[string]json2.Any{}
	app := App{
		t: m['t'] or { 0 }.bool()
		s: if a := m['a'] {
			println('a => ${a}')
			b := return_option(a)? // Fails only if the expr in this line has or_block (or_block kind (.propagation or .block) doesn't matter)
			b
		} else {
			map[string]Sum{}
		}
	}
	println('app => ${app}')
}

fn return_option(input json2.Any) ?map[string]Sum {
	return map[string]Sum{}
}
