From b0d90f713ab214fc3196b639c7fa4755b66ad9da Mon Sep 17 00:00:00 2001 From: Chris Jansen Date: Wed, 2 Nov 2022 11:15:29 +0000 Subject: [PATCH] Fix intellij implicit resolution IJ seems to not be able to find `InitLast` implicits when they are type bounds on methods, adding it an implicit parameter works fine. --- .../prometheus4cats/internal/package.scala | 30 ++++++++++--------- .../javasimpleclient/package.scala | 1 + 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/core/src/main/scala/prometheus4cats/internal/package.scala b/core/src/main/scala/prometheus4cats/internal/package.scala index 4864952d..57a00cf1 100644 --- a/core/src/main/scala/prometheus4cats/internal/package.scala +++ b/core/src/main/scala/prometheus4cats/internal/package.scala @@ -385,13 +385,13 @@ class LabelledMetricDsl[F[_], A, T, N <: Nat, L[_[_], _, _]] private[internal] ( def label[B]: LabelApply[F, A, T, N, B, L] = new LabelApply[F, A, T, N, B, L] { - override def apply[C: InitLast.Aux[T, B, *]]( + override def apply[C]( name: Label.Name, toString: B => String - ): LabelledMetricDsl[F, A, C, Succ[N], L] = new LabelledMetricDsl( + )(implicit initLast: InitLast.Aux[T, B, C]): LabelledMetricDsl[F, A, C, Succ[N], L] = new LabelledMetricDsl( makeLabelledMetric, labelNames :+ name, - c => f(InitLast[T, B, C].init(c)) :+ toString(InitLast[T, B, C].last(c)) + c => f(initLast.init(c)) :+ toString(initLast.last(c)) ) } @@ -419,14 +419,14 @@ object LabelledMetricDsl { override def label[B]: LabelApply.WithCallbacks[F, A, A0, T, N, B, L] = new LabelApply.WithCallbacks[F, A, A0, T, N, B, L] { - override def apply[C: InitLast.Aux[T, B, *]]( + override def apply[C]( name: Label.Name, toString: B => String - ): WithCallbacks[F, A, A0, C, Succ[N], L] = new WithCallbacks( + )(implicit initLast: InitLast.Aux[T, B, C]): WithCallbacks[F, A, A0, C, Succ[N], L] = new WithCallbacks( makeLabelledMetric, makeLabelledCallback, labelNames :+ name, - c => f(InitLast[T, B, C].init(c)) :+ toString(InitLast[T, B, C].last(c)) + c => f(initLast.init(c)) :+ toString(initLast.last(c)) ) } @@ -476,28 +476,30 @@ class TypeStep[+D[_]] private[prometheus4cats] (long: D[Long], double: D[Double] abstract class LabelApply[F[_], A, T, N <: Nat, B, L[_[_], _, _]] { - def apply[C: InitLast.Aux[T, B, *]](name: Label.Name)(implicit - show: Show[B] + def apply[C](name: Label.Name)(implicit + show: Show[B], + initLast: InitLast.Aux[T, B, C] ): LabelledMetricDsl[F, A, C, Succ[N], L] = apply(name, _.show) - def apply[C: InitLast.Aux[T, B, *]]( + def apply[C]( name: Label.Name, toString: B => String - ): LabelledMetricDsl[F, A, C, Succ[N], L] + )(implicit initLast: InitLast.Aux[T, B, C]): LabelledMetricDsl[F, A, C, Succ[N], L] } object LabelApply { abstract class WithCallbacks[F[_], A, A0, T, N <: Nat, B, L[_[_], _, _]] extends LabelApply[F, A, T, N, B, L] { - override def apply[C: InitLast.Aux[T, B, *]](name: Label.Name)(implicit - show: Show[B] + override def apply[C](name: Label.Name)(implicit + show: Show[B], + initLast: InitLast.Aux[T, B, C] ): LabelledMetricDsl.WithCallbacks[F, A, A0, C, Succ[N], L] = apply(name, _.show) - override def apply[C: InitLast.Aux[T, B, *]]( + override def apply[C]( name: Label.Name, toString: B => String - ): LabelledMetricDsl.WithCallbacks[F, A, A0, C, Succ[N], L] + )(implicit initLast: InitLast.Aux[T, B, C]): LabelledMetricDsl.WithCallbacks[F, A, A0, C, Succ[N], L] } } diff --git a/java/src/main/scala/prometheus4cats/javasimpleclient/package.scala b/java/src/main/scala/prometheus4cats/javasimpleclient/package.scala index 5172c4c8..a8d371aa 100644 --- a/java/src/main/scala/prometheus4cats/javasimpleclient/package.scala +++ b/java/src/main/scala/prometheus4cats/javasimpleclient/package.scala @@ -32,4 +32,5 @@ package object javasimpleclient { case (prefix, name) => NameUtils.makeName(prefix, name) } + }