about summary refs log tree commit diff
path: root/compiler/rustc_lint
AgeCommit message (Collapse)AuthorLines
2022-10-04We are able to resolve methods even if they need substMichael Goulet-6/+0
2022-10-04Normalize substs before resolving instance in NoopMethodCall lintMichael Goulet-5/+6
2022-10-02Slightly tweak comments wrt `lint_overflowing_range_endpoint`Maybe Waffle-38/+40
2022-10-02Add example to opaque_hidden_inferred_bound lintMichael Goulet-6/+37
2022-10-02Make it a lint for all opaque typesMichael Goulet-146/+128
2022-10-02Lint for unsatisfied nested opaquesMichael Goulet-0/+146
2022-10-01Add sanity Drop impl.Camille GILLOT-0/+8
2022-10-01Add FIXME.Camille GILLOT-0/+1
2022-10-01Replace retain with assertion.Camille GILLOT-2/+6
2022-10-01Add fast path without visiting.Camille GILLOT-12/+30
2022-10-01Simplify LintLevelsProvider.Camille GILLOT-18/+16
2022-10-01Compute by owner instead of HirId.Camille GILLOT-16/+110
2022-10-01Add FIXME.Camille GILLOT-0/+2
2022-10-01Comment LintLevelSets.Camille GILLOT-1/+12
2022-10-01Move lint level computation to rustc_middle::lint.Camille GILLOT-26/+32
2022-10-01Reduce visibilities and remove dead code.Camille GILLOT-17/+15
2022-10-01Move code to rustc_lint.Camille GILLOT-2/+69
2022-10-01Remove unused tool_name.Camille GILLOT-4/+0
2022-10-01Compute `lint_levels` by definitionDeadbeef-280/+315
2022-10-01Auto merge of #101986 - WaffleLapkin:move_lint_note_to_the_bottom, r=estebankbors-955/+1105
Move lint level source explanation to the bottom So, uhhhhh r? `@estebank` ## User-facing change "note: `#[warn(...)]` on by default" and such are moved to the bottom of the diagnostic: ```diff - = note: `#[warn(unsupported_calling_conventions)]` on by default = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! = note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678> + = note: `#[warn(unsupported_calling_conventions)]` on by default ``` Why warning is enabled is the least important thing, so it shouldn't be the first note the user reads, IMO. ## Developer-facing change `struct_span_lint` and similar methods have a different signature. Before: `..., impl for<'a> FnOnce(LintDiagnosticBuilder<'a, ()>)` After: `..., impl Into<DiagnosticMessage>, impl for<'a, 'b> FnOnce(&'b mut DiagnosticBuilder<'a, ()>) -> &'b mut DiagnosticBuilder<'a, ()>` The reason for this is that `struct_span_lint` needs to edit the diagnostic _after_ `decorate` closure is called. This also makes lint code a little bit nicer in my opinion. Another option is to use `impl for<'a> FnOnce(LintDiagnosticBuilder<'a, ()>) -> DiagnosticBuilder<'a, ()>` altough I don't _really_ see reasons to do `let lint = lint.build(message)` everywhere. ## Subtle problem By moving the message outside of the closure (that may not be called if the lint is disabled) `format!(...)` is executed earlier, possibly formatting `Ty` which may call a query that trims paths that crashes the compiler if there were no warnings... I don't think it's that big of a deal, considering that we move from `format!(...)` to `fluent` (which is lazy by-default) anyway, however this required adding a workaround which is unfortunate. ## P.S. I'm sorry, I do not how to make this PR smaller/easier to review. Changes to the lint API affect SO MUCH 😢
2022-10-01`ui-fulldeps`: adopt to the new rustc lint APIMaybe Waffle-1/+1
2022-10-01Refactor rustc lint APIMaybe Waffle-955/+1105
2022-09-29Auto merge of #101887 - nnethercote:shrink-Res, r=spastorinobors-2/+2
Shrink `hir::def::Res` r? `@spastorino`
2022-09-29Use let-chaining in `WhileTrue::check_expr`.Nicholas Nethercote-24/+22
This has been bugging me for a while.
2022-09-29Shrink `hir::def::Res`.Nicholas Nethercote-2/+2
`Res::SelfTy` currently has two `Option`s. When the second one is `Some` the first one is never consulted. So we can split it into two variants, `Res::SelfTyParam` and `Res::SelfTyAlias`, reducing the size of `Res` from 24 bytes to 12. This then shrinks `hir::Path` and `hir::PathSegment`, which are the HIR types that take up the most space.
2022-09-27Rollup merge of #102281 - RalfJung:invalid-enums, r=cjgillotMatthias Krüger-51/+117
make invalid_value lint a bit smarter around enums Fixes https://github.com/rust-lang/rust/issues/102043
2022-09-27also query type_uninhabited_fromRalf Jung-3/+11
2022-09-26remove cfg(bootstrap)Pietro Albini-1/+1
2022-09-26make invalid_value lint a bit smarter around enumsRalf Jung-51/+109
2022-09-24separate definitions and `HIR` ownersTakayuki Maeda-15/+15
fix a ui test use `into` fix clippy ui test fix a run-make-fulldeps test implement `IntoQueryParam<DefId>` for `OwnerId` use `OwnerId` for more queries change the type of `ParentOwnerIterator::Item` to `(OwnerId, OwnerNode)`
2022-09-22Revert "Auto merge of #101620 - cjgillot:compute_lint_levels_by_def, r=oli-obk"Camille GILLOT-402/+286
This reverts commit 2cb9a65684dba47c52de8fa938febf97a73e70a9, reversing changes made to 750bd1a7ff3e010611b97ee75d30b7cbf5f3a03c.
2022-09-21FIX - adopt new Diagnostic naming in newly migrated modulesJhonny Bill Mena-2/+2
FIX - ambiguous Diagnostic link in docs UPDATE - rename diagnostic_items to IntoDiagnostic and AddToDiagnostic [Gardening] FIX - formatting via `x fmt` FIX - rebase conflicts. NOTE: Confirm wheather or not we want to handle TargetDataLayoutErrorsWrapper this way DELETE - unneeded allow attributes in Handler method FIX - broken test FIX - Rebase conflict UPDATE - rename residual _SessionDiagnostic and fix LintDiag link
2022-09-21UPDATE - rename SessionSubdiagnostic macro to SubdiagnosticJhonny Bill Mena-3/+3
Also renames: - sym::AddSubdiagnostic to sym:: Subdiagnostic - rustc_diagnostic_item = "AddSubdiagnostic" to rustc_diagnostic_item = "Subdiagnostic"
2022-09-21UPDATE - rename DiagnosticHandler macro to DiagnosticJhonny Bill Mena-11/+11
2022-09-21UPDATE - rename AddSubdiagnostic trait to AddToDiagnosticJhonny Bill Mena-4/+4
2022-09-21UPDATE - rename DiagnosticHandler trait to IntoDiagnosticJhonny Bill Mena-13/+13
2022-09-21UPDATE - move SessionDiagnostic from rustc_session to rustc_errorsJhonny Bill Mena-2/+2
2022-09-18Rollup merge of #101912 - crlf0710:compiler_update_unicode_15, r=ManishearthMatthias Krüger-1/+1
Update `unicode-rs` crates to Unicode 15 r? `@Manishearth`
2022-09-17Update `unicode-rs` crates to Unicode 15Charles Lew-1/+1
2022-09-15Only enable the let_else feature on bootstrapest31-1/+1
On later stages, the feature is already stable. Result of running: rg -l "feature.let_else" compiler/ src/librustdoc/ library/ | xargs sed -s -i "s#\\[feature.let_else#\\[cfg_attr\\(bootstrap, feature\\(let_else\\)#"
2022-09-15Auto merge of #101620 - cjgillot:compute_lint_levels_by_def, r=oli-obkbors-286/+402
Compute lint levels by definition Lint levels are currently computed once for the whole crate. Any code that wants to emit a lint depends on this single `lint_levels(())` query. This query contains the `Span` for each attribute that participates in the lint level tree, so any code that wants to emit a lint basically depends on the spans in all files in the crate. Contrary to hard errors, we do not clear the incremental session on lints, so this implicit world dependency pessimizes incremental reuse. (And is furthermore invisible for allowed lints.) This PR completes https://github.com/rust-lang/rust/pull/99634 (thanks for the initial work `@fee1-dead)` and includes it in the dependency graph. The design is based on 2 queries: 1. `lint_levels_on(HirId) -> FxHashMap<LintId, LevelAndSource>` which accesses the attributes at the given `HirId` and processes them into lint levels. The `TyCtxt` is responsible for probing the HIR tree to find the user-visible level. 2. `lint_expectations(())` which lists all the `#[expect]` attributes in the crate. This PR also introduces the ability to reconstruct a `HirId` from a `DepNode` by encoding the local part of the `DefPathHash` and the `ItemLocalId` in the two `u64` of the fingerprint. This allows for the dep-graph to directly recompute `lint_levels_on` directly, without having to force the calling query. Closes https://github.com/rust-lang/rust/issues/95094. Supersedes https://github.com/rust-lang/rust/pull/99634.
2022-09-14Auto merge of #101212 - eholk:dyn-star, r=compiler-errorsbors-1/+1
Initial implementation of dyn* This PR adds extremely basic and incomplete support for [dyn*](https://smallcultfollowing.com/babysteps//blog/2022/03/29/dyn-can-we-make-dyn-sized/). The goal is to get something in tree behind a flag to make collaboration easier, and also to make sure the implementation so far is not unreasonable. This PR does quite a few things: * Introduce `dyn_star` feature flag * Adds parsing for `dyn* Trait` types * Defines `dyn* Trait` as a sized type * Adds support for explicit casts, like `42usize as dyn* Debug` * Including const evaluation of such casts * Adds codegen for drop glue so things are cleaned up properly when a `dyn* Trait` object goes out of scope * Adds codegen for method calls, at least for methods that take `&self` Quite a bit is still missing, but this gives us a starting point. Note that this is never intended to become stable surface syntax for Rust, but rather `dyn*` is planned to be used as an implementation detail for async functions in dyn traits. Joint work with `@nikomatsakis` and `@compiler-errors.` r? `@bjorn3`
2022-09-14Add FIXME.Camille GILLOT-0/+2
2022-09-14Comment LintLevelSets.Camille GILLOT-1/+12
2022-09-14Remove unused tool_name.Camille GILLOT-4/+0
2022-09-14Move some code and add comments.Camille GILLOT-32/+104
2022-09-14Compute `lint_levels` by definitionDeadbeef-280/+315
2022-09-14Auto merge of #101709 - nnethercote:simplify-visitors-more, r=cjgillotbors-30/+20
Simplify visitors more A successor to #100392. r? `@cjgillot`
2022-09-13Rollup merge of #101690 - kadiwa4:avoid_iterator_last, r=oli-obkDylan DPC-2/+2
Avoid `Iterator::last` Adapters like `Filter` and `Map` use the default implementation of `Iterator::last` which is not short-circuiting (and so does `core::str::Split`). The predicate function will be run for every single item of the underlying iterator. I hope that removing those calls to `last` results in slight performance improvements.
2022-09-12Plumb dyn trait representation through ty::DynamicEric Holk-1/+1