about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-12-06 16:54:56 +0100
committerGitHub <noreply@github.com>2022-12-06 16:54:56 +0100
commit4f919e4628e8b350774fb426c47dba3a8c09d65f (patch)
treea72a60a932f3594c502aca3a7ecfe96bddbea50d
parentdc07e1bbddaa9e52b1bf18f3da4bdeb7855390cd (diff)
parent9c9c47677487af4f9a9810a0171b077789ddd63b (diff)
downloadrust-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.rs10
-rw-r--r--src/test/ui/suggestions/assoc-const-as-fn.stderr6
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
    |