00:07:08  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:57:24  * AtumT_quit (Quit: AtumT_)
01:49:51  * cybaijoined
03:59:44  * keith_millerjoined
04:28:43  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:41:39  * jmdyckquit (Remote host closed the connection)
04:44:01  * ephemera_quit (Quit: No Ping reply in 180 seconds.)
04:45:25  * ephemera_joined
04:53:05  * shuquit (Quit: Connection closed for inactivity)
04:59:11  * ephemera_quit (Quit: No Ping reply in 180 seconds.)
05:00:35  * ephemera_joined
07:02:24  * howdoijoined
07:14:13  * MylesBorinsquit (Ping timeout: 245 seconds)
07:19:14  * MylesBorinsjoined
07:57:57  * mgoljoined
07:59:01  * mgolquit (Client Quit)
08:25:06  * mgoljoined
08:29:13  * mgolquit (Client Quit)
08:30:33  * mgoljoined
09:05:23  * kpattichajoined
09:33:04  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:34:13  * mgoljoined
10:18:36  * cybaiquit (Remote host closed the connection)
10:19:05  * cybaijoined
10:23:28  * cybaiquit (Ping timeout: 252 seconds)
10:40:30  * brett-soricjoined
11:04:12  * codebyterequit (Quit: Connection closed for inactivity)
11:28:12  * brett-soricpart
11:36:39  * jmdyckjoined
11:37:51  * cybaijoined
11:58:17  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:00:37  * mgoljoined
12:29:58  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:31:40  * mgoljoined
12:46:57  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:51:28  <caiolima>ljharb: I saw you've commentend on BigInt PR. Thx a lot! I'll be able get back to work on this tomorrow.
12:52:25  * mgoljoined
13:02:35  * shujoined
13:05:51  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:21:19  * mgoljoined
13:26:20  * gibson042joined
13:30:28  * gibson042quit (Ping timeout: 245 seconds)
13:46:18  * gibson042joined
13:53:10  * ErrorIsNullErrorjoined
14:21:23  * AtumTjoined
15:03:55  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:09:17  * mgoljoined
15:13:39  <leobalter>devsnek Domenic ljharb I don't have strong preferences how we can add a reverse iterator to the spec, as long as we get something for Array, Map, and Set. Not even worried about String. I'll follow the consent sentiment from the room
15:14:49  <leobalter>the way Lee Byron's proposal describes the iter.reverse() is "safe" but weird, I'm not sure I love it. It should definitely be coordinated with devsnek's proposal.
15:15:37  <devsnek>obviously we need a reverse iteration syntax /s
15:16:32  <leobalter>What I want is something straight to the point where in a list object I can `list.reverse()`. I have a preference (not a blocker) for a string named method, that may mirror a Symbol property. And I'm fully aware Array#reverse is taken, so I'm open to bikeshed names
15:16:56  <devsnek>fwiw i haven't explored optional capabilities at all yet, so iter.reverse might not be the the best way forward, it was just off the top of my head
15:17:37  <leobalter>it's very odd calling `[].values().reverse()` where you get two iterators and rely on both
15:18:41  <devsnek>in rust, when you use rev, what you actually start doing is consuming the same iterator from the back instead of the front
15:18:51  <leobalter>[].valuesRight() is ugly but follow consistency with reduceRight
15:19:01  <devsnek>technically you could consume it from both sides at the same time, and end up in the middle
15:19:52  <leobalter>I'd rather not have a @@reverseIterator depending on a @@iterator
15:20:15  <ljharb>it needn’t have to
15:20:30  <devsnek>it's weird in my mind to be a reverse iterator but not a regular iterator
15:20:31  <ljharb>but that’d be a naive possible implementation
15:20:49  <leobalter>naive possible yes, thats why I'm not discarding
15:20:54  <ljharb>you could also make it required to have an iterator method, but not invoke it
15:20:58  <devsnek>is there an example where you would want to only be iterable with a concept of reverse
15:21:02  <leobalter>I'm playing flexible here
15:21:55  <ljharb>devsnek: you could have an iterable for, say, data points over time, which is infinite - but your reverse iterator could start at a timestamp
15:22:02  <leobalter>devsnek if I have a Map/Set subclass instance that enforces LIFO operations
15:22:22  <devsnek>ok
15:23:35  <devsnek>if we have a concept of double-ended iterators reverse can just be a general wrapper than calls nextBack instead of next
15:23:37  <leobalter>also, the fact these two steps are only applied in specific cases, not applied to generators or any other custom iterator
15:24:24  <leobalter>same for: `[@@asyncIterator]()[@@reverseIterator]()`
15:24:50  <leobalter>or `[@@asyncIterator]().reverse()` where it should not even be available
15:26:16  <devsnek>i'm trying to think of other languages that have this
15:27:01  <devsnek>i think rust and c++ are the only languages that generalize it to a trait/template type thing
15:27:27  <devsnek>and they both use the concept of double-ended
15:45:16  <devsnek>i kinda like this, but perhaps its too complex? https://gc.gy/30305686.png
15:49:04  * Nimelrianjoined
15:50:06  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:51:05  * mgoljoined
16:05:04  <Domenic>I think a pro/con list for various possibilities would be a good thing to put in the proposal document
16:37:26  * keith_millerjoined
16:40:59  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:42:13  * laughinghanjoined
16:42:39  * mgoljoined
16:43:07  * mgolquit (Client Quit)
16:44:37  * mgoljoined
16:45:03  * hellauerquit (Ping timeout: 250 seconds)
16:49:28  * kpattichaquit (Quit: Leaving)
17:10:47  * jwaldenjoined
17:17:37  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:23:29  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:32:05  * keith_millerjoined
17:51:04  * Nimelrianquit (Ping timeout: 264 seconds)
18:05:40  * mgoljoined
18:06:15  * laughinghanquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:19:44  * jridgewelljoined
18:51:18  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:54:33  * ErrorIsNullErrorquit (Quit: Leaving.)
19:00:23  * ErrorIsNullErrorjoined
19:12:17  <jwalden>haste
19:12:28  <jwalden>(inb4 jorendorff can say anything posthaste)
19:12:50  <jorendorff>> BindingIdentifier: `yield`
19:12:50  <jorendorff>> * It is a Syntax Error if this production has a [Yield] parameter.
19:13:06  <jorendorff>^ this appears in the current draft. But how is that different from
19:13:30  <jorendorff>> BindingIdentifier: [~Yield] `yield`
19:14:23  <jorendorff>That is, seems like an Early Error should be kind of a last resort. We could just enforce this in the grammar. Also, what does "this production" mean?
19:20:31  <devsnek>`yield` in the position of a binding identifier is "this production"
19:27:52  <jorendorff>ok, well, that just seems to confirm that the meaning is basically the same as making that production conditional
19:28:31  * laughinghanjoined
19:31:14  <loganfsmyth>jorendorff: There is a NOTE above that early error section
19:31:24  <loganfsmyth>"yield and await are permitted as BindingIdentifier in the grammar, and prohibited with static semantics below, to prohibit automatic semicolon insertion in cases such as"
19:32:09  <jorendorff>WOW
19:32:11  <devsnek>asi strikes again
19:33:35  <jorendorff>:-O
19:34:21  <loganfsmyth>still trying to wrap my head around how that example works though
19:34:37  <jorendorff>it's unbelievable, this is the junction of half a dozen JS quirks
19:34:43  <jorendorff>`let` is a conditional keyword
19:35:24  <jorendorff>`let;` is a legal JS statement in non-strict code; you can do `let = 12; eval("let")` and the answer is 12
19:35:39  * keith_millerjoined
19:37:30  <jorendorff>loganfsmyth: So if ASI did happen, you would get `let; await 0;` which would actually parse
19:39:31  <loganfsmyth>ah right, so by making it a valid BindingIdentifier, it's not a syntax error and thus doesn't trigger ASI, ugh
19:39:40  <jorendorff>well, not exactly lol
19:39:49  <jorendorff>because `let await 0;` *is* still a syntax error
19:39:52  <loganfsmyth>or at least, not a grammar error
19:39:57  <loganfsmyth>yeah, poorly worded
19:40:04  <jorendorff>so it *does* trigger ASI
19:40:07  <jorendorff>but not until `0`
19:40:30  <jorendorff>and ASI looks at the `0`, sees that it's not immediately after a new line, and says no way
19:42:31  <jorendorff>so the way this prohibits ASI is by •exploiting details of how ASI case 1 works; and •arranging for a different token to be "the offending token"
19:42:43  <loganfsmyth>yupp
19:42:46  <loganfsmyth>good times :P
19:47:06  <jorendorff>loganfsmyth: TIL the Python parser in `python` is generated by this 406-line script https://github.com/python/cpython/blob/master/Parser/pgen/pgen.py
19:47:58  <loganfsmyth>oh cool
19:49:07  * okilicjoined
19:49:14  <jorendorff>apparently python's no-semicolons-required syntax works a *little* differently from JS's
19:51:04  <devsnek>just a tad
19:51:39  <jorendorff>ok, i got another one
19:52:13  <jorendorff>> TemplateLiteral : NoSubstitutionTemplate
19:52:13  <jorendorff>> * It is a Syntax Error if the number of elements in the result of TemplateStrings of TemplateLiteral with argument false is greater than 2^32 - 1.
19:53:04  <jorendorff>but TemplateStrings on this is guaranteed to return a List with exactly one element TemplateLiteral:NoSubstitutionTemplate
19:53:31  <jorendorff>oops, meant to paste this link https://tc39.es/ecma262/#sec-static-semantics-templatestrings
19:57:40  <loganfsmyth>https://github.com/tc39/ecma262/issues/1588
19:57:47  <loganfsmyth>jorendorff: ^^
19:57:52  <loganfsmyth>I think?
19:58:41  <jorendorff>yup. thanks
19:59:36  * okilicquit (Remote host closed the connection)
20:06:58  * laughinghanquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:21:03  * laughinghanjoined
20:29:29  * jridgewellquit (Quit: Connection closed for inactivity)
20:49:53  <devsnek>imagine a template literal with 2^32-1 substitutions
20:51:48  <rkirsling>devsnek: why just imagine? 😈
20:54:33  * ErrorIsNullErrorquit (Quit: Leaving.)
20:57:25  * laughinghanquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:01:24  * laughinghanjoined
21:33:38  * shuquit (Quit: Connection closed for inactivity)
21:42:24  * laughinghanquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:04:31  * laughinghanjoined
22:50:04  * Nimelrianjoined
22:50:37  * Nimelrianquit (Read error: Connection reset by peer)
22:55:37  * shujoined
23:09:31  * gibson042quit (Quit: Leaving.)
23:15:43  * wingoquit (Ping timeout: 246 seconds)
23:19:08  * mgolquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:20:51  * wingojoined