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

Extend #[deprecated] support #6944

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Extend #[deprecated] support #6944

wants to merge 3 commits into from

Conversation

IGI-111
Copy link
Contributor

@IGI-111 IGI-111 commented Feb 20, 2025

Description

Add support for the #[deprecated] attribute to functions, enums, struct items, enum variants and propagate deprecation check exhaustively throughout expressions variants.

Partially addresses #6942.

Support for deprecating traits, abis and the methods thereof in their definitions is still missing, as well as scrutinees and storage fields.

Checklist

  • I have linked to any relevant issues.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have updated the documentation where relevant (API docs, the reference, and the Sway book).
  • I have added tests that prove my fix is effective or that my feature works.
  • I have added (or requested a maintainer to add) the necessary Breaking* or New Feature labels where relevant.
  • I have done my best to ensure that my PR adheres to the Fuel Labs Code Review Standards.
  • I have requested a review from the relevant team or maintainers.

@IGI-111 IGI-111 added the team:compiler Compiler Team label Feb 20, 2025
@IGI-111 IGI-111 self-assigned this Feb 20, 2025
@IGI-111 IGI-111 requested a review from a team as a code owner February 20, 2025 14:13
Copy link

codspeed-hq bot commented Feb 20, 2025

CodSpeed Performance Report

Merging #6944 will not alter performance

Comparing IGI-111/deprecated (e055b1f) with master (fccc8a9)

Summary

✅ 22 untouched benchmarks

Add support for the `#[deprecated]` attribute to functions, enums,
struct items, enum variants and propagate deprecation check exhaustively
throughout expressions variants.

Partially addresses #6942.

Support for deprecating traits, abis and the methods thereof in their
definitions is still missing, as well as scrutinees and storage fields.
|
219 | #[deprecated(note = "std::ecr has been replaced by std::crypto, and is no longer maintained")]
220 | pub fn ec_recover_address(signature: B512, msg_hash: b256) -> Result<Address, EcRecoverError> {
221 | let pub_key_result = ec_recover(signature, msg_hash);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This means that std compiles with warnings. And it is essentially a deprecated function calling another deprecated function from the same module.

Adding #[allow(deprecated)] on all those functions next to the #[deprecated] will remove this issue. They will still be deprecated for all other usages, but will allow calling other deprecated functions from the same module.

Copy link
Contributor Author

@IGI-111 IGI-111 Feb 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't dig into it but if those are indeed deprecated functions calling each other I agree. Will fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
team:compiler Compiler Team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants