00:07:59  * Fishrock123joined
00:12:05  * Fishrock123quit (Ping timeout: 240 seconds)
00:27:45  * not-an-aardvarkjoined
01:03:37  * AtumT_quit (Remote host closed the connection)
01:30:49  * gibson042joined
02:02:09  * gibson042quit (Ping timeout: 248 seconds)
02:16:58  * gibson042joined
02:34:57  * gibson042quit (Quit: Leaving.)
03:07:42  * caridyquit (Remote host closed the connection)
03:08:12  * caridyjoined
03:37:29  * not-an-aardvarkquit (Quit: Connection closed for inactivity)
04:22:44  * jmdyckquit (Quit: Leaving.)
06:28:30  * afrael_joined
07:22:47  * gskachkov_joined
08:20:46  <Bakkot>anyone know why you can `export default` a function or class declaration but not other kinds of declaration?
08:23:53  <ljharb>`export default function foo() {}` hoists `foo`, `export default class foo {}` hoists `class` in a tdz; would `export default let x = 3` hoist `x` in a tdz?
08:24:04  <ljharb>(i assume you're asking about var/let/const, unless i'm missing other kinds of declarations)
08:24:22  <Bakkot>I would assume it would host `x` in a tdz, yes.
08:28:29  <Bakkot>basically just sugar for `let x = 3; export default x;`, I guess. same way as `export default class C {}` is sugar for `let C = class C {}; export default C;`
08:29:38  <ljharb>yeah, i guess that'd make sense
08:30:14  <ljharb>i originally thought `export default` was for values only, but since functions and classes are treated as declarations instead (which i find bonkers; i think they should both be expressions only), it makes sense that let/const/var should work
08:32:27  <Bakkot>Only relevant notes I can find (this is from before my time) are https://github.com/rwaldron/tc39-notes/blob/6422214b4fbff77194bce2064a9a9879a208df85/es6/2014-04/apr-8.md
08:32:37  <Bakkot>"YK: Special casing class and function to create bindings at the parent level for export default function foo and export default class foo. We should special case those expression forms to behave like declaration forms"
08:33:27  <Bakkot>which does make sense to me; they certainly look like declarations. but if you're going to allow some declarations there you really should allow all declarations.
08:33:50  <ljharb>agreed
08:33:58  <ljharb>to me they look like `module.exports = function foo () {}` which is expressions
08:34:04  <Bakkot>Not even any grammar ambiguities!
08:34:10  <Bakkot>maybe I will bring this up at a future meeting.
08:34:18  <Bakkot>this one is well overbooked.
08:38:30  <ljharb>indeed
09:46:18  * afrael_quit (Remote host closed the connection)
09:47:02  * afrael_joined
09:47:35  * afrael_quit (Remote host closed the connection)
10:18:05  * afrael_joined
10:25:13  * mylesborinsquit (Quit: farewell for now)
10:25:41  * mylesborinsjoined
11:23:51  * gskachkov_quit (Quit: gskachkov_)
11:45:45  * jmdyckjoined
12:45:55  * AtumTjoined
13:45:53  * Fishrock123joined
13:56:44  * caridyquit (Remote host closed the connection)
13:57:35  * caridyjoined
15:10:56  * Fishrock123quit (Remote host closed the connection)
15:11:35  * Fishrock123joined
15:11:43  * Fishrock123quit (Remote host closed the connection)
15:13:28  * Fishrock123joined
15:13:54  * Fishrock123quit (Remote host closed the connection)
15:35:48  * Fishrock123joined
17:10:39  * Fishrock123quit (Remote host closed the connection)
17:14:44  * Fishrock123joined
18:31:44  * Fishrock123quit (Remote host closed the connection)
18:34:48  * Fishrock123joined
19:07:38  * afrael_quit
20:23:01  <Bakkot>bterlson: class fields is going for stage 3, which requires you signing off on the current spec text; have you / are you going to get a chance to look at it before the meeting?
20:23:19  <bterlson>Bakkot: I will do so
20:23:35  <Bakkot>Seperately, I think the spec text needs to be changed a little :( https://github.com/tc39/proposal-class-fields/issues/25
20:23:36  <bterlson>I'm pretty up on that proposal but I'll take an official pass
20:24:00  <Bakkot>which might require touching a lot of the main spec unless there's a clever way of doing it.
20:24:39  <bterlson>Bakkot: blah :/
20:25:20  <bterlson>this is all because Contains is odd and shouldn't be
20:25:37  <bterlson>the special case for super, etc. is bad
20:27:10  <Bakkot>yeah.
20:27:54  <Bakkot>I was talking with @jspedant about this just now, who suggested that Contains could take a hint of some kind. But I don't want to put that into this proposal if we can possibly avoid it.
20:30:51  <bterlson>Bakkot: I think that's probably the right long-term fix but the short-term strawman you propose sounds good to me
20:54:29  <Bakkot>ugh
20:55:10  <Bakkot>my idea in that issue would require more text than I thought; it would need to have a rule for everything which currently has a rule for `Contains`.
20:56:25  <Bakkot>bterlson: is my comment in here correct? https://github.com/tc39/proposal-class-fields/issues/25#issuecomment-317106094
20:57:04  <Bakkot>because if it's not I want to just modify `Contains` on arrows to allow passing through 'an IdentifierReference whose StringValue is "arguments".'
21:45:43  * Fishrock123quit (Remote host closed the connection)
21:57:23  * Fishrock123joined
21:57:30  * Fishrock123quit (Remote host closed the connection)
22:07:29  * Fishrock123joined
22:22:44  * Fishrock123quit (Remote host closed the connection)
22:50:44  * Fishrock123joined
22:53:55  * Fishrock123quit (Remote host closed the connection)
22:58:02  * Fishrock123joined
23:06:38  * Fishrock123quit (Remote host closed the connection)
23:07:50  * Fishrock123joined
23:11:13  * Fishrock123quit (Read error: Connection reset by peer)
23:12:26  <jmdyck>Bakkot: Is ContainsArguments exactly parallel to Contains except for the base case?
23:12:46  <Bakkot>ContainsArguments also goes through arrow functions.
23:13:01  <Bakkot>(and takes no parameters.)
23:13:13  <jmdyck>hm
23:13:39  <bterlson>Bakkot: I don't think you need to define it everywhere because of the chain rule?
23:13:52  <bterlson>By default chain rule will propagate the call down the parse tree
23:14:03  <jmdyck>but only for chain prods
23:14:12  <Bakkot>I thought so at first, but no. Contains has a special "default semantics" in Algorithm Conventions.
23:14:31  <jmdyck>anything with 2 or more nonterminals on rhs is not subject to chaining
23:16:59  <bterlson>jmdyck: ahh right
23:17:07  <bterlson>blargh
23:17:20  <bterlson>damn
23:17:26  <bterlson>this makes my auto-linking change less good
23:17:32  <bterlson>presumably Contains should also link to the default implementation
23:17:43  <bterlson>I guess I can make that work
23:18:45  <jmdyck>i was thinking (not sure it's a good idea) that we could replace most of 'Contains' with an abstract operation that takes: 1) a node, 2) a node predicate (abstract op that takes a node and returns a boolean), and I guess 3) a boolean that indicates whether to 'go through' arrow functions.
23:19:04  <bterlson>I think that's a good idea
23:19:12  <jmdyck>Then Contains and ContainsArguments could just be a think wrapper around the generic.
23:19:18  <jmdyck>s/think/thin/
23:19:47  <Bakkot>jmdyck: "a boolean that indicates whether to 'go through' arrow functions." is unnecessary; you can put that into the node predicate
23:19:50  <bterlson>I was thinking same, currently re-reading #933 to see if it's relevant
23:20:09  <jmdyck>you can?
23:20:16  <Bakkot>well, depending on what the predicate does, I guess.
23:20:40  <jmdyck>yeah
23:20:42  * Fishrock123joined
23:21:01  <bterlson>predicate returns a tuple of "found" and "visit children"? :-P
23:21:13  <jmdyck>i was thinking the predicate would return true when you reached the 'goal'
23:21:49  <Bakkot>The most general form would be, it takes a node and an override definition for some nodes, and its definition is "if there is an override definition for this node type, return the result of applying that to the node; otherwise apply yourself with the same set of override definitions to all nonterminal children; if any is 'true' return true; else return false."
23:22:12  <Bakkot>but this requires first-class spec algorithms :P
23:22:29  <jmdyck>we've already got first-class spec algs, though not much
23:23:07  <bterlson>IOW, all spec algs are first-class :-P
23:24:21  <jmdyck>e.g., second arg to EnqueueJob is an abstract op
23:36:31  * Fishrock123quit (Remote host closed the connection)