diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-12-06 16:54:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-06 16:54:56 +0100 |
| commit | 4f919e4628e8b350774fb426c47dba3a8c09d65f (patch) | |
| tree | a72a60a932f3594c502aca3a7ecfe96bddbea50d | |
| parent | dc07e1bbddaa9e52b1bf18f3da4bdeb7855390cd (diff) | |
| parent | 9c9c47677487af4f9a9810a0171b077789ddd63b (diff) | |
| download | rust-4f919e4628e8b350774fb426c47dba3a8c09d65f.tar.gz rust-4f919e4628e8b350774fb426c47dba3a8c09d65f.zip | |
Rollup merge of #105349 - compiler-errors:point-at-assoc-ct-fn-ptr-arg, r=cjgillot
Point at args in associated const fn pointers Tiny follow-up to #105201, not so sure it's worth it but :shrug: The UI test example is a bit more compelling when it's `GlUniformScalar::FACTORY` r? `@cjgillot`
| -rw-r--r-- | compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/suggestions/assoc-const-as-fn.stderr | 6 |
2 files changed, 7 insertions, 9 deletions
diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs index 3078e0cbeda..8a875e05b19 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs @@ -1918,15 +1918,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { receiver: Option<&'tcx hir::Expr<'tcx>>, args: &'tcx [hir::Expr<'tcx>], ) -> bool { - // Do not call `fn_sig` on non-functions. - if !matches!( - self.tcx.def_kind(def_id), - DefKind::Fn | DefKind::AssocFn | DefKind::Variant | DefKind::Ctor(..) - ) { + let ty = self.tcx.type_of(def_id); + if !ty.is_fn() { return false; } - - let sig = self.tcx.fn_sig(def_id).skip_binder(); + let sig = ty.fn_sig(self.tcx).skip_binder(); let args_referencing_param: Vec<_> = sig .inputs() .iter() diff --git a/src/test/ui/suggestions/assoc-const-as-fn.stderr b/src/test/ui/suggestions/assoc-const-as-fn.stderr index fa740687858..3b6e947c59f 100644 --- a/src/test/ui/suggestions/assoc-const-as-fn.stderr +++ b/src/test/ui/suggestions/assoc-const-as-fn.stderr @@ -1,8 +1,10 @@ error[E0277]: the trait bound `T: GlUniformScalar` is not satisfied - --> $DIR/assoc-const-as-fn.rs:14:5 + --> $DIR/assoc-const-as-fn.rs:14:40 | LL | <T as GlUniformScalar>::FACTORY(1, value); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `GlUniformScalar` is not implemented for `T` + | ------------------------------- ^^^^^ the trait `GlUniformScalar` is not implemented for `T` + | | + | required by a bound introduced by this call | help: consider further restricting this bound | |
