"kennytm" <kenn...@gmail.com> wrote in message news:1711314076351895446.251635kennytm-gmail....@news.digitalmars.com... >> >> catch(auto e : E1, E2) { body; } >> -> >> >> catch(E1 e) >> { >> goto catchE2; >> } >> catch(E2 e) >> { >> catchE2: >> body; >> } > > Won't work unless the compiler enforce that 'body' does not use code which > requires typeof(e) == E2.
Ok, I oversimplified it a bit. It's more like this: __set_except_list(); trybody(); goto __try_break; __exceptionE1: goto __exceptionE2; __exceptionE2: catchbody(); goto __try_break; __try_break: And when semantic is run on catchbody, the type of the variable is set to the common supertype of all the exceptions in the list.