-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Deny defaults for higher-ranked generic parameters #119494
Conversation
@@ -62,6 +60,9 @@ ast_lowering_generic_type_with_parentheses = | |||
parenthesized type parameters may only be used with a `Fn` trait | |||
.label = only `Fn` traits may use parentheses | |||
|
|||
ast_lowering_higher_ranked_gen_param_with_default = | |||
higher-ranked generic parameters may not have defaults |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alternatively: defaults for {type|const|generic} parameters are not allowed in for<...>
binders to mirror the diagnostic defaults for type parameters are only allowed in struct
, enum
, type
, or trait
definitions as well as some other diagnostics that use for<...>
over higher-ranked.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure, i do like that alternative wording better
This comment has been minimized.
This comment has been minimized.
be656cf
to
196e3e4
Compare
@@ -884,27 +883,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { | |||
binder: NodeId, | |||
generic_params: &[GenericParam], | |||
) -> &'hir [hir::GenericParam<'hir>] { | |||
let mut generic_params: Vec<_> = generic_params |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moving this into lower_generic_param_kind
since lower_lifetime_binder
doesn't get called on HRTBs.
| | ||
LL | type T = dyn for<V = A(&())> Fn(()); | ||
| ^ not found in this scope | ||
|
||
error: default parameter is not allowed in this binder | ||
--> $DIR/issue-118697.rs:4:22 | ||
error: higher-ranked generic parameters may not have defaults |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've updated the diagnostic message since I didn't find it clear and since we're now generally rejecting defaults for higher-ranked generic parameters.
@@ -62,6 +60,9 @@ ast_lowering_generic_type_with_parentheses = | |||
parenthesized type parameters may only be used with a `Fn` trait | |||
.label = only `Fn` traits may use parentheses | |||
|
|||
ast_lowering_higher_ranked_gen_param_with_default = | |||
higher-ranked generic parameters may not have defaults |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure, i do like that alternative wording better
thanks @fmease, I should've probably reviewed the other PR more carefully. r=me |
196e3e4
to
3d0297a
Compare
Updated to use the alternative wording. |
🌲 The tree is currently closed for pull requests below priority 100. This pull request will be tested once the tree is reopened. |
…ompiler-errors Deny defaults for higher-ranked generic parameters Fixes rust-lang#119489 (incl. rust-lang#119489 (comment)). Partially reverts rust-lang#119042. cc `@bvanjoi` r? `@compiler-errors` or compiler
…ompiler-errors Deny defaults for higher-ranked generic parameters Fixes rust-lang#119489 (incl. rust-lang#119489 (comment)). Partially reverts rust-lang#119042. cc ``@bvanjoi`` r? ``@compiler-errors`` or compiler
Rollup of 21 pull requests Successful merges: - rust-lang#119086 (Query panic!() to useful diagnostic) - rust-lang#119239 (Remove unnecessary arm in `check_expr_yield`) - rust-lang#119298 (suppress change-tracker warnings in CI containers) - rust-lang#119319 (Document that File does not buffer reads/writes) - rust-lang#119434 (rc: Take *const T in is_dangling) - rust-lang#119444 (Rename `TyCtxt::is_closure` to `TyCtxt::is_closure_or_coroutine`) - rust-lang#119474 (Update tracking issue of naked_functions) - rust-lang#119476 (Pretty-print always-const trait predicates correctly) - rust-lang#119477 (rustdoc ui: adjust tooltip z-index to be above sidebar) - rust-lang#119479 (Remove two unused feature gates from rustc_query_impl) - rust-lang#119487 (Minor improvements in comment on `freshen.rs`) - rust-lang#119492 (Update books) - rust-lang#119494 (Deny defaults for higher-ranked generic parameters) - rust-lang#119498 (Update deadlinks of `strict_provenance` lints) - rust-lang#119505 (Don't synthesize host effect params for trait associated functions marked const) - rust-lang#119510 (Report I/O errors from rmeta encoding with emit_fatal) - rust-lang#119512 (Mark myself as back from leave) - rust-lang#119514 (coverage: Avoid a query stability hazard in `function_coverage_map`) - rust-lang#119523 (llvm: Allow `noundef` in codegen tests) - rust-lang#119534 (Update `thread_local` examples to use `local_key_cell_methods`) - rust-lang#119544 (Fix: Properly set vendor in i686-win7-windows-msvc target) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#119494 - fmease:deny-hr-param-defaults, r=compiler-errors Deny defaults for higher-ranked generic parameters Fixes rust-lang#119489 (incl. rust-lang#119489 (comment)). Partially reverts rust-lang#119042. cc ```@bvanjoi``` r? ```@compiler-errors``` or compiler
Fixes #119489 (incl. #119489 (comment)).
Partially reverts #119042.
cc @bvanjoi
r? @compiler-errors or compiler