00:11:13  * bradleymeckquit (Quit: )
00:14:08  * Fishrock123joined
00:18:12  * Fishrock123quit (Ping timeout: 240 seconds)
02:41:08  * AtumTquit (Remote host closed the connection)
03:45:44  <Bakkot>littledan: I recall from the meeting we were talking about banning some subset of of [public, private] fields named ['constructor', 'prototype']. Did that happen?
03:46:41  <Bakkot>wait, yes, it did: https://github.com/tc39/proposal-class-fields/issues/22
03:53:31  * Fishrock123joined
03:58:55  * Fishrock123quit (Remote host closed the connection)
04:03:00  * Fishrock123joined
04:03:25  * Fishrock123quit (Remote host closed the connection)
04:07:26  * Fishrock123joined
04:09:17  * Fishrock123quit (Remote host closed the connection)
04:09:59  * Fishrock123joined
04:10:05  * Fishrock123quit (Remote host closed the connection)
04:10:55  * Fishrock123joined
04:13:46  * Fishrock123quit (Remote host closed the connection)
04:18:40  * Fishrock123joined
04:19:03  * Fishrock123quit (Remote host closed the connection)
04:24:36  * Fishrock123joined
04:34:47  * Fishrock123quit (Remote host closed the connection)
04:40:49  * gskachkovquit (Quit: gskachkov)
04:43:27  * Fishrock123joined
04:43:32  * Fishrock123quit (Remote host closed the connection)
04:44:08  * jmdyckquit (Remote host closed the connection)
04:46:34  * gibson042quit (Ping timeout: 264 seconds)
05:10:34  * tcarejoined
05:26:25  * howdoijoined
05:27:48  * gskachkovjoined
05:53:55  * gskachkovquit (Quit: gskachkov)
06:18:38  * gskachkovjoined
07:34:01  <littledan>Bakkot: Yeah, and prototype was banned earlier than that
07:37:35  * isHavvyquit (Ping timeout: 240 seconds)
07:39:10  <littledan>err, I don't remember a particular reason to ban #prototype, just prototype
08:57:21  * Havvyjoined
10:25:10  * mylesborinsquit (Quit: farewell for now)
10:25:41  * mylesborinsjoined
10:26:02  * AtumTjoined
10:36:02  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
12:03:50  * jmdyckjoined
13:19:50  * howdoiquit (Quit: Connection closed for inactivity)
15:19:13  * howdoijoined
16:26:34  * Fishrock123joined
16:36:48  * gskachkovquit (Quit: gskachkov)
16:53:47  * Fishrock123quit (Remote host closed the connection)
16:56:33  * Fishrock123joined
16:57:10  * Fishrock123quit (Client Quit)
17:03:15  * bradleymeckjoined
17:09:14  * gskachkovjoined
17:09:56  * Fishrock123joined
17:13:16  * bradleymeckquit (Quit: bradleymeck)
18:29:48  <Domenic>Would do expressions allow `do throw new Error("foo!")`?
18:30:02  <Domenic>(probably yes, right?)
18:30:12  <Domenic>If so I am a bit more skeptical about throw expressions
18:36:17  * bradleymeckjoined
18:45:17  * Fishrock123quit (Remote host closed the connection)
18:49:04  * Fishrock123joined
18:55:05  <TabAtkins>I don't see why they wouldn't. You can't prevent an arbitrary statement in a do expression from throwing.
18:55:30  <Bakkot>Domenic: well, `do { throw new Error('foo'); }` at least; I don't think the braces are optional
18:55:40  <TabAtkins>So yeah, I agree, throw expressions seem low-prio given that they just need 4 more characters with a do expressions.
18:55:48  <TabAtkins>(Yes, plz GOD don't make the braces optional.)
18:57:19  <Domenic>Why wouldn't they be optional?
18:57:54  <Domenic>Omitting braces seems really nice here e.g. do if (x) { y } else { z }
18:59:15  <TabAtkins>For the same reason optional braces on if/for/while are a classic mistake - you write one statement, then later add more and it's broken.
18:59:32  <TabAtkins>Tho I suppose it would actually just cause a syntax error?
19:00:27  <TabAtkins>Depends on usage. In many locations, a semicolon appearing would be a syntax error. Others, it's just a change in parsing; you get unexpected behavior.
19:01:27  <TabAtkins>`var x = do if(x) y(); z();`` is valid but different from `var x = do { if(x) y(); z(); }`
19:36:06  * not-an-aardvarkjoined
20:09:50  * howdoiquit (Quit: Connection closed for inactivity)
20:21:31  <ljharb>certainly you'd be able to use a do expression to throw; whether it's `do { throw x }` or `do throw x` is a separate concern; and i agree it kind of makes standalone throw expressions a bit silly
20:35:26  * Fishrock123quit (Remote host closed the connection)
20:41:10  * Fishrock123joined
21:05:04  <Bakkot>feel strongly that the braces ought to be there
21:05:13  <Bakkot>because expressions, unlike statements, are often only part of a line
21:06:21  <Bakkot>`x = do { if (test) bar; else baz } + 1` is comprehensible. `x = do if (test) bar; else baz + 1` is not.
21:07:00  <Domenic>If we need braces then I'd like standalone throw expressions
21:09:27  <bterlson>I think we need both folks
21:09:53  <bterlson>braceless do expr is an unreadable mess most of the time
21:10:25  <bterlson>and the expr uses of throw are pretty frequent and enough to justify a standalone expr form IMO
21:10:40  <bterlson>made even more important with pattern matching
21:16:18  <Domenic>Seems reasonable. I just thought that if we could get away with braceless do then I'd be fine doing `do throw new Error("foo!")`
21:16:25  <bterlson>yeah
21:16:36  <bterlson>do throw is the only acceptable case :-P
21:16:50  <bterlson>of omitting braces I mean
21:17:06  <bterlson>(hyperbolically)
21:20:31  <Domenic>do switch seems nice
21:21:24  <Domenic>do break/return/continue
21:21:31  <Domenic>multi-part ones like try/catch or if/else maybe not
21:21:50  <bterlson>I support any control flow statements having expr forms I think
21:22:01  <Domenic>that works for me too
21:22:24  <Domenic>although it kind of sucks the air out of do expressions
21:22:38  <Bakkot>Still not really comfortable with break in expression position...
21:22:54  <Bakkot>(with or without `do`.)
21:22:57  <bterlson>Bakkot: tell me more, tell me more, tell me more
21:23:08  <Bakkot>uh
21:23:29  <Bakkot>currently every expression either a.) evaluates to a value, b.) throws, or c.) loops.
21:23:53  <Bakkot>we are proposing that it should also be able to c.) jump.
21:24:04  <Bakkot>this seems like it makes code a lot harder to reason about.
21:31:51  * bradleymeckquit (Quit: bradleymeck)
22:14:15  <TabAtkins>Domenic, bterlson: I'm fine with all the control flow statements growing a `do` prefix that turns them into expressions. Echoing Bakkot, I'd like that grammar form to disallow braceless bodies on said expressions, because yeah, that braceless `do if` looks like some dang nonsense.
22:15:47  <TabAtkins>So `x = do if(text) { bar; } else { baz; };` works okay for me. I do *prefer* the `do {...}` form for comprehensibility, but I prefer the slightly confusing wording of `do if/else` than I like only *some* statements getting to use the `do` prefix.
22:20:56  * Fishrock123quit (Remote host closed the connection)
22:21:37  * Fishrock123joined
22:22:28  <ljharb>bterlson: could we have the only braceless form of `do` be `do throw`?
22:23:14  <ljharb>i think it would be a really bad idea to make statements be implicitly able to be expressions. it already causes confusion with functions.
22:23:32  <ljharb>(whereas being explicit with `do` seems awesome)
22:25:18  * Fishrock123quit (Remote host closed the connection)
22:31:00  * abernixquit (Ping timeout: 252 seconds)
22:32:30  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
23:13:08  * Fishrock123joined
23:14:48  * Fishrock123quit (Remote host closed the connection)
23:46:56  * Fishrock123joined
23:48:15  * Fishrock123quit (Remote host closed the connection)
23:48:58  * Fishrock123joined
23:49:00  * Fishrock123quit (Remote host closed the connection)