02:25
<bakkot>
shu: https://github.com/tc39/ecma262/pull/2566
14:21
<shu>
will look today
19:41
<bakkot>
shu: re: https://github.com/tc39/ecma262/pull/2548, it looks like very nearly every !-prefixed call gets the user-code effect suppressed (possibly actually all of them?). maybe worth building that heuristic into ecmarkup?
20:57
<shu>
bakkot: almost all, yes. worth thinking about building it in. it puts the burden of vigilance on us (the PR reviewers) to remember to check if a ! shouldn't be suppressed. otherwise it puts the burden on authors
20:57
<shu>
putting it on us is probably the right choice
21:40
<shu>
bakkot: Michael Ficarra oh, for the "default" stuff, the point is that "default" is used only as a [[LocalName]] and not as an [[ExportName]] in ExportEntry Records, and therefore is not user visible?
21:46
<shu>
so if a module exports a value named "*default*", that could be imported, since the magical [[ExportName]] name is "default", which has always been user exposed?
21:59
<bakkot>
yeah exactly
22:01
<bakkot>
(It also gets into the [[BindingName]] of ResolvedBinding Records, but that's basically the same as the [[LocalName]] of ExportEntry Records)
22:03
<shu>
right
22:03
<shu>
whereas "*" and "*namespace*" leak into [[BindingName]], which is the problem
22:04
<bakkot>
into [[ImportName]], rather
22:06
<shu>
ah right, that's the usual case
22:06
<shu>
the [[BindingName]] problem is for accessing via a namespace object
22:08
<bakkot>
ah, yes, right
22:10
<bakkot>
actually I thinking further I'm not 100% sure "*namespace*" is actually a problem, hm
22:11
<bakkot>
"*" definitely is though
22:11
<shu>
why isn't "namespace" a problem?
22:12
<bakkot>
because the lookup that's happening in step 10 of 10.4.6.8 (module NS [[Get]]) is of the post-resolution name
22:12
<bakkot>
which is strictly internal, same as "*default*"
22:13
<bakkot>
[[BindingName]] tells you where to find the binding of interest within the module; it's not the externally-facing name
22:14
<bakkot>
exactly the same same as [[LocalName]] of ExportEntry Records
22:14
<shu>
oh, and export * has no [[LocalName]]
22:15
<shu>
so if i did an import "*namespace*" it would not resolve to the actual NS object, since that has special handling
22:16
<shu>
okay, but also because of the special handling everywhere for NS objects, it's certainly also correct and clearer if we just globally replaced it with ~namespace~
22:16
<bakkot>
export * from 'mod' has no [[LocalName]], right (none of the export from forms do)
22:16
<bakkot>
(there is no export *;)
22:16
<shu>
yes, i meant with the from tail
22:16
<bakkot>
yeah, right
22:30
<bakkot>

if i did an import "*namespace*" it would not resolve to the actual NS object

right, though not because of specially handling "*namespace*"; rather, it's because that gets resolved with ResolveExport("*namespace*"), which looks for an ExportEntry Record whose [[ExportName]] is "*namespace*", which is not a thing we ever create (except of course with bradley's PR you could make one explicitly)

22:31
<shu>
ah, yes, right
22:32
<shu>
anyways lgtm. further classification of the various meanings of "*" is a nice added bonus
22:32
<bakkot>
if you did export { f as "*namespace*" }, then that would resolve to a ResolvedBinding Record whose [[BindingName]] is f, so again no problems there