01:04:29  * aki_joined
01:04:38  * akirosequit (Ping timeout: 245 seconds)
01:04:46  * aki_changed nick to akirose
01:43:43  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:15:31  * wuz_joined
02:20:09  * wuz_quit (Ping timeout: 268 seconds)
03:11:45  * aki_joined
03:11:56  * akirosequit (Ping timeout: 250 seconds)
03:12:01  * aki_changed nick to akirose
03:14:56  * jorydotcomjoined
03:35:29  * jorydotcomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:18:56  * aki_joined
05:19:07  * akirosequit (Ping timeout: 240 seconds)
05:19:12  * aki_changed nick to akirose
05:26:23  * jmdyckquit (Ping timeout: 268 seconds)
05:29:43  * jmdyckjoined
06:03:31  * jmdyckquit (Remote host closed the connection)
07:03:09  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
07:24:06  * aki_joined
07:24:58  * akirosequit (Ping timeout: 246 seconds)
07:24:58  * aki_changed nick to akirose
09:30:53  * akirosequit (Ping timeout: 245 seconds)
09:31:50  * akirosejoined
11:38:03  * aki_joined
11:38:35  * akirosequit (Ping timeout: 244 seconds)
11:38:35  * aki_changed nick to akirose
12:04:28  * AtumTjoined
13:31:40  * jmdyckjoined
13:45:17  * akirosequit (Ping timeout: 246 seconds)
13:47:18  * akirosejoined
15:54:28  * aki_joined
15:54:47  * akirosequit (Ping timeout: 240 seconds)
15:54:47  * aki_changed nick to akirose
17:55:38  * efaustquit (Ping timeout: 268 seconds)
18:01:08  * aki_joined
18:02:37  * efaustjoined
18:02:54  * akirosequit (Ping timeout: 272 seconds)
18:02:55  * aki_changed nick to akirose
18:03:01  * efaustchanged nick to Guest48133
18:59:49  * Guest48133quit (Ping timeout: 244 seconds)
19:18:52  * efaustjoined
19:19:15  * efaustchanged nick to Guest25760
19:25:37  <devsnek>is anyone else weirded out that the grouping operator can return lvals
19:41:50  <rkirsling>devsnek: wow so `(a) = 3;` is valid by 12.2.10.3 then, huh
19:41:57  <rkirsling>but why 🤔
19:42:08  <devsnek>"The principal motivation for this is so that operators such as delete and typeof may be applied to parenthesized expressions."
19:42:16  <devsnek>sounds like some == type evilness
19:42:51  <devsnek>actually if this didn't exist people wouldn't get delete and typeof confused as functions as often
19:44:56  <rkirsling>hmm, yeah, I wonder if it could've been an appeasement if there were some early debate about typeof syntax
19:46:40  <devsnek>but anyway just got totally thrown off when i found this lol https://github.com/tc39/test262/blob/master/test/language/expressions/assignment/fn-name-lhs-cover.js
19:58:01  <rkirsling>haha indeed
19:58:04  <rkirsling>TIL
20:08:07  * akirosequit (Ping timeout: 240 seconds)
20:08:23  * akirosejoined
20:24:11  <ljharb>oh nice, that’s a much cleaner way to avoid inference than the comma operator or Object()
20:43:38  * Guest25760quit (Ping timeout: 250 seconds)
21:05:23  <devsnek>ljharb: it is definitely not >:(
21:09:55  <devsnek>I wonder how common assignment to ParenthesizedExpression happens in the wild
21:11:26  <ljharb>lol it looks cleaner to me
21:12:15  * efaustjoined
21:12:17  <devsnek>ljharb: less code sure, but everyone who reads it will think it's a syntax error
21:12:39  * efaustchanged nick to Guest10185
21:12:48  <ljharb>not if it passes linting and tests :-p
21:17:45  <devsnek>I wouldn't allow this in my lint rules
21:25:56  <rkirsling>alright alright I'll be the guy to ask what you mean by "avoiding inference"
21:27:01  <devsnek>rkirsling: avoiding functions inferring their names from assignment
21:27:01  * Guest10185quit (Ping timeout: 250 seconds)
21:27:40  <rkirsling>hm hm. what's the danger there though?
21:29:33  <devsnek>🤷 the only time I ever had a problem with it was making a promise polyfill
21:34:33  * efaust_joined
21:35:25  <ljharb>rkirsling: i write lots of code that depends on functions not having names
21:35:37  <ljharb>but to be fair, i write lots of polyfills and stuff
21:35:57  <ljharb>specifically, v8 adding name inference actually broke my tests
21:38:15  <devsnek>lol
21:38:19  <rkirsling>yeah polyfills certainly have a number of unique concerns :)
21:38:43  <devsnek>tbh I'd use an identity function
21:39:10  <devsnek>x = identity(function() {})
21:39:33  <devsnek>although I use comma op in my promise thing
21:43:20  <ljharb>devsnek: that's what i do now - i use `Object()`
21:43:39  <ljharb>but parenthesizing the LHS has no runtime cost and avoids the gross comma operator
21:44:07  * efaust_quit (Ping timeout: 244 seconds)
21:45:20  <devsnek>is using Object() on an object that expensive
21:45:28  <devsnek>I'd assume most engines can inline that
21:51:44  * efaust_joined
21:55:05  <ljharb>devsnek: it's been benchmarked to be slow in es5-shim/es6-shim code in the past
21:55:28  <devsnek>ljharb: define slow
21:55:44  <ljharb>like, we rewrote the "is primitive" check to be a hardcoded list of typeofs instead
21:55:58  <ljharb>i don't recall the details
21:56:09  <ljharb>but it was enough that it was measurable and prompted someone to run benchmarks and complain
21:58:13  * efaust_quit (Ping timeout: 250 seconds)
22:05:52  * efaust_joined
22:14:06  * aki_joined
22:15:04  * akirosequit (Ping timeout: 250 seconds)
22:15:04  * aki_changed nick to akirose
22:40:55  * efaust_quit (Ping timeout: 246 seconds)
22:48:28  * efaustjoined
22:48:52  * efaustchanged nick to Guest4844
22:57:58  * Guest4844quit (Ping timeout: 250 seconds)
23:04:27  <devsnek>does anyone know what the correct behaviour here is https://gc.gy/13829659.png
23:13:12  * efaust_joined
23:14:21  <ljharb>devsnek: ({} = 5); ?
23:14:30  <devsnek>ljharb: no the way i put it
23:14:38  <devsnek>i can't figure out if its a syntax error or a runtime error
23:14:42  <devsnek>engines disagree
23:29:22  <rkirsling>note that there are early runtime errors and JSC has yet to implement such a concept
23:29:29  <rkirsling>ahem
23:29:34  <rkirsling>early *reference* errors
23:31:36  * efaust_quit (Ping timeout: 272 seconds)
23:38:32  * efaustjoined
23:38:56  * efaustchanged nick to Guest68676
23:39:36  <rkirsling>V8/SM are at least agreeing that it's some kind of early error, but hmm
23:44:28  <rkirsling>er wait it definitely should be an early reference error
23:45:15  * Guest68676quit (Ping timeout: 250 seconds)
23:47:09  <rkirsling>given that otherwise JSC would likely be giving a syntax error and also that test262's language/expressions/assignment/target-*.js tests are all early reference errors (and one non-error)
23:57:41  <rkirsling>spec-wise, looks like it's
23:57:41  <rkirsling>12.15.1: It is an early Reference Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType of LeftHandSideExpression is invalid.
23:57:41  <rkirsling>12.2.10.3: `ParenthesizedExpression : ( Expression )` Return AssignmentTargetType of Expression.
23:57:41  <rkirsling>12.2.1.5: `PrimaryExpression : ... ObjectLiteral ...` Return invalid.
23:58:20  * efaust_joined
23:58:48  <rkirsling>guess you should add a test case :P