@@ -1830,16 +1830,13 @@ trait Applications extends Compatibility {
18301830            isAsGood(alt1, tp1.instantiate(tparams.map(_.typeRef)), alt2, tp2)
18311831          }
18321832        case  _ =>  //  (3)
1833-           def  compareValues (tp1 : Type , tp2 : Type )(using  Context ) = 
1834-             extension  (alt : TermRef ) def  isNotGivenClass :  Boolean  =  alt.symbol ==  defn.NotGivenClass 
1835-             isAsGoodValueType(tp1, tp2, alt1.isNotGivenClass, alt2.isNotGivenClass)
18361833          tp2 match 
18371834            case  tp2 : MethodType  =>  true  //  (3a)
18381835            case  tp2 : PolyType  if  tp2.resultType.isInstanceOf [MethodType ] =>  true  //  (3a)
18391836            case  tp2 : PolyType  =>  //  (3b)
1840-               explore(compareValues (tp1, instantiateWithTypeVars(tp2)))
1837+               explore(isAsGoodValueType (tp1, instantiateWithTypeVars(tp2)))
18411838            case  _ =>  //  3b)
1842-               compareValues (tp1, tp2)
1839+               isAsGoodValueType (tp1, tp2)
18431840    }
18441841
18451842    /**  Test whether value type `tp1` is as good as value type `tp2`. 
@@ -1869,15 +1866,14 @@ trait Applications extends Compatibility {
18691866     *     for overloading resolution (when `preferGeneral is false), and the opposite relation 
18701867     *     `U <: T` or `U convertible to `T` for implicit disambiguation between givens 
18711868     *     (when `preferGeneral` is true). For old-style implicit values, the 3.4 behavior is kept. 
1872-      *     If one of the alternatives is a NotGivenClass, and the other is not, then the NotGivenClass loses. 
18731869     * 
18741870     *   - In Scala 3.5 and Scala 3.6-migration, we issue a warning if the result under 
18751871     *     Scala 3.6 differ wrt to the old behavior up to 3.5. 
18761872     * 
18771873     *  Also and only for given resolution: If a compared type refers to a given or its module class, use 
18781874     *  the intersection of its parent classes instead. 
18791875     */  
1880-     def  isAsGoodValueType (tp1 : Type , tp2 : Type ,  alt1IsNotGivenClass :  Boolean ,  alt2IsNotGivenClass :  Boolean )(using  Context ):  Boolean  = 
1876+     def  isAsGoodValueType (tp1 : Type , tp2 : Type )(using  Context ):  Boolean  = 
18811877      val  oldResolution  =  ctx.mode.is(Mode .OldImplicitResolution )
18821878      if  ! preferGeneral ||  Feature .migrateTo3 &&  oldResolution then 
18831879        //  Normal specificity test for overloading resolution (where `preferGeneral` is false)
@@ -1907,9 +1903,8 @@ trait Applications extends Compatibility {
19071903              case  _ =>  mapOver(t)
19081904          (flip(tp1p) relaxed_<:<  flip(tp2p)) ||  viewExists(tp1, tp2)
19091905        else 
1910-           //  New rules: better means generalize, except `NotGivenClass` which is given lower priority
1911-           if  alt1IsNotGivenClass !=  alt2IsNotGivenClass then  alt2IsNotGivenClass
1912-           else  (tp2p relaxed_<:<  tp1p) ||  viewExists(tp2, tp1)
1906+           //  New rules: better means generalize
1907+           (tp2p relaxed_<:<  tp1p) ||  viewExists(tp2, tp1)
19131908    end  isAsGoodValueType 
19141909
19151910    /**  Widen the result type of synthetic given methods from the implementation class to the 
0 commit comments