Michael Dyck (2013-07-28T06:31:07.000Z)
Looking at the ES6 spec draft, I've drawn the following conclusions
about Completion Records. Can someone confirm?

If [[type]] is 'normal', 'return', or 'throw',
     [[target]] must be 'empty' (can't be an identifier).

Moreover, if [[type]] is 'return' or 'throw',
     [[value]] must be a language value (can't be 'empty').

If [[type]] is 'continue' or 'break', no restrictions:
     [[target]] can be 'empty' or an Identifier,
     [[value]] can be 'empty' or a language value,
     and all combinations can occur.

...

The only ones whose existence is less than obvious are those where:
   [[type]] is 'continue' or 'break', and [[value]] is a language value
I can see in the pseudo-code the points where they could be created
(in 12.1.1.2, 12.11.1.2, and 14.1.2), but I haven't tried to reverse-
engineer a program that would cause it to happen. Could someone explain
why it's useful to allow such Completion Records, and post a snippet of
code that would cause one to be created?

Thanks,
-Michael
domenic at domenicdenicola.com (2013-08-01T01:41:50.958Z)
Looking at the ES6 spec draft, I've drawn the following conclusions
about Completion Records. Can someone confirm?

If [[type]] is 'normal', 'return', or 'throw',
     [[target]] must be 'empty' (can't be an identifier).

Moreover, if [[type]] is 'return' or 'throw',
     [[value]] must be a language value (can't be 'empty').

If [[type]] is 'continue' or 'break', no restrictions:
     [[target]] can be 'empty' or an Identifier,
     [[value]] can be 'empty' or a language value,
     and all combinations can occur.

...

The only ones whose existence is less than obvious are those where:
   [[type]] is 'continue' or 'break', and [[value]] is a language value
I can see in the pseudo-code the points where they could be created
(in 12.1.1.2, 12.11.1.2, and 14.1.2), but I haven't tried to reverse-
engineer a program that would cause it to happen. Could someone explain
why it's useful to allow such Completion Records, and post a snippet of
code that would cause one to be created?