Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add future-incompat entries to json diagnostic output #315

Closed
1 of 3 tasks
pnkfelix opened this issue Jun 19, 2020 · 2 comments
Closed
1 of 3 tasks

Add future-incompat entries to json diagnostic output #315

pnkfelix opened this issue Jun 19, 2020 · 2 comments
Labels
major-change A proposal to make a major change to rustc major-change-accepted A major change proposal that was accepted T-compiler Add this label so rfcbot knows to poll the compiler team

Comments

@pnkfelix
Copy link
Member

pnkfelix commented Jun 19, 2020

Proposal

Add future-incompat entries to json diagnostic output. (Also, ensure we always run code for future-incompatibility lints, even if they are allowed.)

This is part of rust-lang/rust#71249 (rust-lang/rfcs#2834); it is the implementation of the rustc side of that feature.

This change is broken into these main parts:

  • In JSON diagnostic mode, if a future-incompatibility lint is triggered for a crate, regardless of the current lint level, it will issue at least one additional JSON output describing the lint.
    • My current plan is to have all such output be emitted at the end, after all other diagnostics.
    • The emitted diagnostics will include span info, when availble, so that client code can choose how best to present feedback about the problem to the end user.
  • For the initial deployment, use an allow-list so that only a subset of the current collection of future-incompatibility lints will actually trigger this new JSON emission. Over time we will increase the number of entries in the allow-list, with the hope of eventually removing the allow-list entirely once all the future-incompatibility lints are covered.
  • Extend compiletest to be able to handle the generated JSON output.
    • I want to test this feature within rustc's test suite on its own; therefore, compiletest will convert these generated JSON entries to stderr diagnostics (as opposed to just discarding them, as it currently does for artifact notifications), even though a normal user running in human-readable diagnostic mode will not observe them.
  • We need to also ensure that all future-incompatibility lint checks are executed (in order to observe this diagnostic) regardless of the current lint level. I have not yet surveyed the compiler to check the situation here.

Mentors or Reviewers

I have a prototype implementation: https://github.com/pnkfelix/rust/tree/prototype-rustc-side-of-report-future-incompat

I plan to mentor the work (or finish the above prototype).

Process

The main points of the Major Change Process is as follows:

  • File an issue describing the proposal.
  • A compiler team member or contributor who is knowledgeable in the area can second by writing @rustbot second.
    • Finding a "second" suffices for internal changes. If however you are proposing a new public-facing feature, such as a -C flag, then full team check-off is required.
    • Compiler team members can initiate a check-off via @rfcbot fcp merge on either the MCP or the PR.
  • Once an MCP is seconded, the Final Comment Period begins. If no objections are raised after 10 days, the MCP is considered approved.

You can read more about Major Change Proposals on forge.

Comments

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

@pnkfelix pnkfelix added T-compiler Add this label so rfcbot knows to poll the compiler team major-change A proposal to make a major change to rustc labels Jun 19, 2020
@rustbot
Copy link
Collaborator

rustbot commented Jun 19, 2020

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

@rustbot rustbot added the to-announce Announce this issue on triage meeting label Jun 19, 2020
@spastorino spastorino removed the to-announce Announce this issue on triage meeting label Jun 24, 2020
@nikomatsakis
Copy link
Contributor

@rustbot second

@rustbot rustbot added the final-comment-period The FCP has started, most (if not all) team members are in agreement label Jul 16, 2020
@spastorino spastorino added major-change-accepted A major change proposal that was accepted and removed final-comment-period The FCP has started, most (if not all) team members are in agreement labels Jul 29, 2020
@rustbot rustbot added the to-announce Announce this issue on triage meeting label Jul 29, 2020
@spastorino spastorino removed the to-announce Announce this issue on triage meeting label Jul 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
major-change A proposal to make a major change to rustc major-change-accepted A major change proposal that was accepted T-compiler Add this label so rfcbot knows to poll the compiler team
Projects
None yet
Development

No branches or pull requests

4 participants