(Result of email discussion and discussion with Jeff.)
The semantics for import pkg.x and import pkg.* are clear, they open pkg's public namespace in references to x and references to all names, respectively, for the duration of the block. An x defined in an intermediate scope will take priority; pkg.x is always a global name.
The semantics of import y = pkg.x are not compatible. Instead, that form introduces an alias binding in the local block s.t. a reference to y goes directly to pkg.x even if there are other xs in intermediate scopes.
First of all, I wonder if we need this form. On the one hand it's part of the "evolutionary programming toolbox". On the other hand, there is no implementation or usability experience from AS3, and I know I don't use renaming when I program.
Second, since the aliasing form introduces a new block-scoped binding it is as much like "let" as it is like "import". I think that if we keep it, we should change the syntax to this:
let import y = pkg.x
to emphasize just that. (There is also the issue that y is bound in the block object and that references to y in the block before it is introduced ought to be run-time errors, just as we've discussed for normal let-bound variables. So it is really very let-like.)