00:13:02  * jwaldenquit (Quit: back tomorrow, or maybe later tonight but likely not)
00:26:10  * AtumTquit (Quit: AtumT)
00:41:05  * aki_joined
00:41:28  * akirosequit (Ping timeout: 246 seconds)
00:41:28  * aki_changed nick to akirose
00:53:00  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:03:01  * keith_millerjoined
01:07:01  * keith_millerquit (Client Quit)
01:10:08  * keith_millerjoined
01:12:21  * keith_mi_joined
01:14:27  * keith_millerquit (Ping timeout: 252 seconds)
01:36:48  * keith_mi_quit (Ping timeout: 252 seconds)
01:38:53  * cloudshuquit (Quit: Connection closed for inactivity)
01:39:59  * keith_millerjoined
01:56:40  * keith_mi_joined
02:00:27  * keith_millerquit (Ping timeout: 252 seconds)
02:03:55  * keith_millerjoined
02:07:08  * keith_mi_quit (Ping timeout: 245 seconds)
02:07:12  <Sirisian>http://jsfiddle.net/p13uq4br/ "can't access lexical declaration `b' before initialization" on line 3. What's the reason that b on the third line refers to b on third line rather than the second?
02:08:24  <Sirisian>Chrome just says "Uncaught ReferenceError: b is not defined".
02:16:15  <rkirsling>it's the same idea as trying to do `const x = x;`
02:19:30  <Sirisian>Yeah, but it seems like that case is an obvious bug or error and that it could figure out to grab the unshadowed variable.
02:33:54  * keith_millerquit (Remote host closed the connection)
02:34:38  * keith_millerjoined
02:35:24  * keith_millerquit (Client Quit)
02:37:12  <rkirsling>it certainly could figure it out if it wanted to, it's purely a language design decision
02:37:51  <rkirsling>even though this isn't about JS, it's a useful deliberation about what should occur in such a situation: http://www.craftinginterpreters.com/resolving-and-binding.html#resolving-variable-declarations
02:38:17  <rkirsling>(ignoring the first two paragraphs)
02:42:51  * byronmejiaquit (Quit: Textual IRC Client: www.textualapp.com)
02:47:13  <rkirsling>basically if you have `let x = 1; { let x = x + 1; }`, C/C++ (replacing `let` with `int`) will set the inner `x` to the default value of `int` (zero) plus one and give you a compiler warning, while Rust will set it to the value of the outer `x` plus one
02:47:40  <rkirsling>JS follows the C approach
02:47:50  * aki_joined
02:48:49  <rkirsling>well I mean, you could choose to view it that way or not; if you do, then the warning is just bumped up to an error
02:49:15  * akirosequit (Ping timeout: 268 seconds)
02:49:15  * aki_changed nick to akirose
02:57:27  <Sirisian>Interesting discussion. Good find. "Shadowing is rare and often an error so initializing a shadowing variable based on the value of the shadowed one seems unlikely to be deliberate."
02:58:23  <Sirisian>So what made me find that was actually code I was restructuring that I naively translated to for (const node of nodes) { for (const node of node.children) { } }
02:58:54  <Sirisian>It was so innocuous that I didn't even notice my mistake until I ran it.
03:02:06  <rkirsling>makes sense :)
03:26:12  * keith_millerjoined
04:54:00  * aki_joined
04:54:59  * akirosequit (Ping timeout: 244 seconds)
04:55:00  * aki_changed nick to akirose
04:55:04  * jmdyckquit (Remote host closed the connection)
07:01:11  * aki_joined
07:01:43  * akirosequit (Ping timeout: 245 seconds)
07:01:43  * aki_changed nick to akirose
07:13:00  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:16:23  * keith_millerjoined
09:07:58  * aki_joined
09:08:40  * akirosequit (Ping timeout: 244 seconds)
09:08:40  * aki_changed nick to akirose
10:02:41  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:47:06  * keith_millerjoined
11:13:40  * aki_joined
11:14:51  * akirosequit (Ping timeout: 252 seconds)
11:14:52  * aki_changed nick to akirose
12:02:07  * jmdyckjoined
12:40:37  <devsnek>honestly I don't get why using a binding in that bindings initialization isn't a syntax error
13:20:50  * aki_joined
13:20:53  * akirosequit (Ping timeout: 245 seconds)
13:21:03  * aki_changed nick to akirose
13:50:06  <bradleymeck>devsnek: you mean `var x = x;`?
13:50:28  <devsnek>bradleymeck: i was thinking let/const
13:50:33  <devsnek>would it be possible for var?
13:50:44  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:50:55  <devsnek>that wouldn't be a runtime error
13:51:02  <bradleymeck>yes it works for var
13:51:04  <devsnek>yeah just let/const
13:53:26  <devsnek>hmm it seems like extending null would be usable with a one-line change in ClassDefinitionEvaluation to guard against setting ConstructorKind to derived if the heritage is null
13:57:45  <bradleymeck>yea, aklein had a presentation on that a long time ago
13:58:33  <bradleymeck>it is not as simple as hoped since it seemed like some people were concerned with "special" behavior for null since you still call a "super()", but it already is special cased so idk personally
13:58:43  <bradleymeck>would be nice though
14:13:49  * keith_millerjoined
14:31:12  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:53:49  * cloudshujoined
15:01:29  * howdoiquit (Quit: Connection closed for inactivity)
15:03:23  * keith_millerjoined
15:28:38  * akirosequit (Ping timeout: 272 seconds)
15:29:05  * akirosejoined
15:37:26  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:03:57  * TehShrikejoined
16:06:50  * jwaldenjoined
16:07:59  * keith_millerjoined
16:36:49  * TehShrikequit (Ping timeout: 268 seconds)
16:48:01  * bretquit (Excess Flood)
16:52:58  * bretjoined
16:54:59  * AtumTjoined
16:55:47  * bretquit (Excess Flood)
16:56:57  * bretjoined
17:09:30  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:35:31  * akirosequit (Ping timeout: 244 seconds)
17:35:47  * akirosejoined
17:49:21  * keith_millerjoined
18:21:04  * Draggorquit (Ping timeout: 240 seconds)
18:32:15  * Draggorjoined
18:39:01  <aklein>bradleymeck, devsnek: yeah I still have a TODO to propose a fix, it's just not been a priority
18:40:20  <devsnek>aklein: I opened a pr which I think handles all the elements
18:40:31  <devsnek>lots of history to go through 😓
18:44:10  <aklein>devsnek: ah so I see!
18:46:05  <aklein>devsnek: https://docs.google.com/presentation/d/1makDPBGA3fo-jjOpjhD97_GqlKRQHvh9Mya-B2Spxng/edit is my slide deck from 1.5 years ago, though the last slide was roundly rejected in that meeting (and reasonably so, it was a little bit too much of a hack)
19:43:30  * akirosequit (Ping timeout: 252 seconds)
19:43:32  * aki_joined
19:43:56  * aki_changed nick to akirose
20:47:13  <devsnek>aklein: how come you decided to check for null statically
21:17:03  <aklein>devsnek: it was "easy". but as I said nobody else liked the idea, so it was scrapped
21:17:21  <devsnek>ok
21:17:26  <devsnek>i just wanna make sure i'm on the right track here
21:50:43  * aki_joined
21:51:19  * akirosequit (Ping timeout: 268 seconds)
21:51:19  * aki_changed nick to akirose
23:39:16  * AtumTquit (Quit: AtumT)
23:57:54  * aki_joined
23:58:19  * akirosequit (Ping timeout: 246 seconds)
23:58:19  * aki_changed nick to akirose