Always resolve type@primitive as a primitive, not a module#74078
Merged
bors merged 1 commit intorust-lang:masterfrom Jul 7, 2020
Merged
Always resolve type@primitive as a primitive, not a module#74078bors merged 1 commit intorust-lang:masterfrom
bors merged 1 commit intorust-lang:masterfrom
Conversation
Member
|
@bors r+ looks great
Note that smart resolution doesn't work for glob imports anyway, so shrug |
Collaborator
|
📌 Commit 8bc6b66c757839179843d13a02b0124eca2b1223 has been approved by |
Member
Author
|
Yeah, that one seemed like a bit of an edge case. It would be nice to support but I don't expect anyone to use it. |
Previously, if there were a module in scope with the same name as the primitive, that would take precedence. Coupled with rust-lang#58699, this made it impossible to link to the primitive when that module was in scope. This approach could be extended so that `struct@foo` would no longer resolve to any type, etc. However, it could not be used for glob imports: ```rust pub mod foo { pub struct Bar; } pub enum Bar {} use foo::*; // This is expected to link to `inner::Bar`, but instead it will link to the enum. /// Link to [struct@Bar] pub struct MyDocs; ``` The reason for this is that this change does not affect the resolution algorithm of rustc_resolve at all. The only reason we could special-case primitives is because we have a list of all possible primitives ahead of time.
Member
|
Member
|
@bors r+ |
Collaborator
|
📌 Commit e46c187 has been approved by |
Member
Author
|
Tidy is a harsh taskmaster 😠 |
Manishearth
added a commit
to Manishearth/rust
that referenced
this pull request
Jul 6, 2020
Always resolve type@primitive as a primitive, not a module Previously, if there were a module in scope with the same name as the primitive, that would take precedence. Coupled with rust-lang#58699, this made it impossible to link to the primitive when that module was in scope. This approach could be extended so that `struct@foo` would no longer resolve to any type, etc. However, it could not be used for glob imports: ```rust pub mod foo { pub struct Bar; } pub enum Bar {} use foo::*; // This is expected to link to `inner::Bar`, but instead it will link to the enum. /// Link to [struct@Bar] pub struct MyDocs; ``` The reason for this is that this change does not affect the resolution algorithm of rustc_resolve at all. The only reason we could special-case primitives is because we have a list of all possible primitives ahead of time. Closes rust-lang#74063 r? @Manishearth
GuillaumeGomez
approved these changes
Jul 6, 2020
Manishearth
added a commit
to Manishearth/rust
that referenced
this pull request
Jul 6, 2020
Always resolve type@primitive as a primitive, not a module Previously, if there were a module in scope with the same name as the primitive, that would take precedence. Coupled with rust-lang#58699, this made it impossible to link to the primitive when that module was in scope. This approach could be extended so that `struct@foo` would no longer resolve to any type, etc. However, it could not be used for glob imports: ```rust pub mod foo { pub struct Bar; } pub enum Bar {} use foo::*; // This is expected to link to `inner::Bar`, but instead it will link to the enum. /// Link to [struct@Bar] pub struct MyDocs; ``` The reason for this is that this change does not affect the resolution algorithm of rustc_resolve at all. The only reason we could special-case primitives is because we have a list of all possible primitives ahead of time. Closes rust-lang#74063 r? @Manishearth
Manishearth
added a commit
to Manishearth/rust
that referenced
this pull request
Jul 6, 2020
Always resolve type@primitive as a primitive, not a module Previously, if there were a module in scope with the same name as the primitive, that would take precedence. Coupled with rust-lang#58699, this made it impossible to link to the primitive when that module was in scope. This approach could be extended so that `struct@foo` would no longer resolve to any type, etc. However, it could not be used for glob imports: ```rust pub mod foo { pub struct Bar; } pub enum Bar {} use foo::*; // This is expected to link to `inner::Bar`, but instead it will link to the enum. /// Link to [struct@Bar] pub struct MyDocs; ``` The reason for this is that this change does not affect the resolution algorithm of rustc_resolve at all. The only reason we could special-case primitives is because we have a list of all possible primitives ahead of time. Closes rust-lang#74063 r? @Manishearth
Dylan-DPC-zz
pushed a commit
to Dylan-DPC-zz/rust
that referenced
this pull request
Jul 6, 2020
Always resolve type@primitive as a primitive, not a module Previously, if there were a module in scope with the same name as the primitive, that would take precedence. Coupled with rust-lang#58699, this made it impossible to link to the primitive when that module was in scope. This approach could be extended so that `struct@foo` would no longer resolve to any type, etc. However, it could not be used for glob imports: ```rust pub mod foo { pub struct Bar; } pub enum Bar {} use foo::*; // This is expected to link to `inner::Bar`, but instead it will link to the enum. /// Link to [struct@Bar] pub struct MyDocs; ``` The reason for this is that this change does not affect the resolution algorithm of rustc_resolve at all. The only reason we could special-case primitives is because we have a list of all possible primitives ahead of time. Closes rust-lang#74063 r? @Manishearth
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Jul 7, 2020
…arth Rollup of 14 pull requests Successful merges: - rust-lang#70563 ([rustdoc] Page hash handling) - rust-lang#73856 (Edit librustc_lexer top-level docs) - rust-lang#73870 (typeck: adding type information to projection) - rust-lang#73953 (Audit hidden/short code suggestions) - rust-lang#73962 (libstd/net/tcp.rs: #![deny(unsafe_op_in_unsafe_fn)]) - rust-lang#73969 (mir: mark mir construction temporaries as internal) - rust-lang#73974 (Move A|Rc::as_ptr from feature(weak_into_raw) to feature(rc_as_ptr)) - rust-lang#74067 (rustdoc: Restore underline text decoration on hover for FQN in header) - rust-lang#74074 (Fix the return type of Windows' `OpenOptionsExt::security_qos_flags`.) - rust-lang#74078 (Always resolve type@primitive as a primitive, not a module) - rust-lang#74089 (Add rust-analyzer to the build manifest) - rust-lang#74090 (Remove unused RUSTC_DEBUG_ASSERTIONS) - rust-lang#74102 (Fix const prop ICE) - rust-lang#74112 (Expand abbreviation in core::ffi description) Failed merges: r? @ghost
flip1995
pushed a commit
to flip1995/rust
that referenced
this pull request
Jul 14, 2020
…arth Rollup of 14 pull requests Successful merges: - rust-lang#70563 ([rustdoc] Page hash handling) - rust-lang#73856 (Edit librustc_lexer top-level docs) - rust-lang#73870 (typeck: adding type information to projection) - rust-lang#73953 (Audit hidden/short code suggestions) - rust-lang#73962 (libstd/net/tcp.rs: #![deny(unsafe_op_in_unsafe_fn)]) - rust-lang#73969 (mir: mark mir construction temporaries as internal) - rust-lang#73974 (Move A|Rc::as_ptr from feature(weak_into_raw) to feature(rc_as_ptr)) - rust-lang#74067 (rustdoc: Restore underline text decoration on hover for FQN in header) - rust-lang#74074 (Fix the return type of Windows' `OpenOptionsExt::security_qos_flags`.) - rust-lang#74078 (Always resolve type@primitive as a primitive, not a module) - rust-lang#74089 (Add rust-analyzer to the build manifest) - rust-lang#74090 (Remove unused RUSTC_DEBUG_ASSERTIONS) - rust-lang#74102 (Fix const prop ICE) - rust-lang#74112 (Expand abbreviation in core::ffi description) Failed merges: r? @ghost
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Previously, if there were a module in scope with the same name as the
primitive, that would take precedence. Coupled with
#58699, this made it impossible
to link to the primitive when that module was in scope.
This approach could be extended so that
struct@foowould no longer resolveto any type, etc. However, it could not be used for glob imports:
The reason for this is that this change does not affect the resolution
algorithm of rustc_resolve at all. The only reason we could special-case
primitives is because we have a list of all possible primitives ahead of time.
Closes #74063
r? @Manishearth