Skip to content

v2 resolver: a proc macro being specified with the key "proc_macro" vs "proc-macro" causes different results #8315

Closed
@sunshowers

Description

@sunshowers

Problem

A proc-macro is usually specified as:

[lib]
proc-macro = true

but can also be specified as

[lib]
proc_macro = true

The first one appears to be fine, but the second one appears to cause some strange issues with the v2 resolver.

Steps

Test workspace is here.

git clone https://github.com/facebookincubator/cargo-guppy && cd cargo-guppy
git checkout d5781f069ea57b2d0ec80fddb410978eb1b0f2d5
cd fixtures/workspace/inside-outside/workspace
cargo clean && cargo +nightly build -Zfeatures=all --verbose 2>&1 | grep -F -- '--crate-name internal_macro'

You'll see one line:

     Running `rustc --crate-name internal_macro --edition=2018 internal-macro/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type
proc-macro --emit=dep-info,link -C prefer-dynamic -Cembed-bitcode=no -C debuginfo=2 --cfg 'feature="internal-normal-feature"' --cfg 'feature="main-build-feature"' [...]`

Now edit internal-macro/Cargo.toml and change proc-macro = true to proc_macro = true.

Afterwards:

$ cargo clean && cargo +nightly build -Zfeatures=all --verbose 2>&1 | grep -F -- '--crate-name internal_macro'
     Running `rustc --crate-name internal_macro --edition=2018 internal-macro/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type
proc-macro --emit=dep-info,link -C prefer-dynamic -Cembed-bitcode=no -C debuginfo=2 --cfg 'feature="internal-normal-feature"' --cfg 'feature="main-build-feature"' [...]
     Running `rustc --crate-name internal_macro --edition=2018 internal-macro/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type
proc-macro --emit=dep-info,link -C prefer-dynamic -Cembed-bitcode=no -C debuginfo=2 --cfg 'feature="internal-normal-feature"' [...]

Possible Solution(s)

I guess you could either treat both the same or warn/error on specifying it as proc_macro.

Notes

Output of cargo version:

cargo 1.45.0-nightly (9fcb8c1d2 2020-05-25)

cc @ehuss again I guess!

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions