org.scalactic

LowPriorityCheckedEqualityConstraints

trait LowPriorityCheckedEqualityConstraints extends EqualityPolicy

Provides an implicit conversion that will be applied only if a higher-priority implicit conversion declared a subtrait is not applicable.

The purpose of this trait is to make the === operator symetric. In other words, a === invocation will be allowed if subtype relationship exists in either direction. For example, in the following expression, the left hand side is a subtype of the right hand side:

List(1, 2, 3) === Seq(1, 2, 3)

But in the next expression, it the right hand side is a subtype of the left hand side

Seq(1, 2, 3) === List(1, 2, 3)

The first expression above is enabled by the implicit conversion typeCheckedConstraint in traits TypeCheckedTripleEquals. The second expression above is enabled by the implicit conversion lowPriorityTypeCheckedConstraint in this trait.

The reason these two implicit methods aren't both declared in the subtraits is that if the subtype relationship existed in both directions, they would conflict. This can happen when the exact same type is on both the left and right hand sides, because a type is a subtype of itself. By placing one of them in this supertrait, the higher priority conversion will be selected.

Source
LowPriorityCheckedEqualityConstraints.scala
Linear Supertypes
EqualityPolicy, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. LowPriorityCheckedEqualityConstraints
  2. EqualityPolicy
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. class CheckingEqualizer[L] extends AnyRef

    Class used via an implicit conversion to enable two objects to be compared with === and !== with a Boolean result and an enforced type constraint between two object types.

  2. class Equalizer[L] extends AnyRef

    Class used via an implicit conversion to enable any two objects to be compared with === and !== with a Boolean result and no enforced type constraint between two object types.

  3. class FreshCheckingEqualizer[L] extends AnyRef

    Class used via an implicit conversion to enable two objects to be compared with === and !== with a Boolean result and an enforced type constraint between two object types.

Abstract Value Members

  1. abstract def checkedEqualityConstraint[A, B](implicit equivalenceOfA: Equivalence[A], ev: <:<[B, A]): EqualityConstraint[A, B] with NativeSupport

    Definition Classes
    EqualityPolicy
  2. abstract def conversionCheckedConstraint[A, B](implicit equivalenceOfA: Equivalence[A], cnv: (B) ⇒ A): Constraint[A, B]

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that B is implicitly convertible to A, given an implicit Equivalence[A].

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that B is implicitly convertible to A, given an implicit Equivalence[A].

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtrait ConversionCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    equivalenceOfA

    an Equivalence[A] type class to which the Constraint.areEqual method will delegate to determine equality.

    cnv

    an implicit conversion from B to A

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[A].

    Definition Classes
    EqualityPolicy
  3. abstract def convertEquivalenceToAToBConstraint[A, B](equivalenceOfB: Equivalence[B])(implicit ev: <:<[A, B]): Constraint[A, B]

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that A must be a subtype of B, given an explicit Equivalence[B].

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that A must be a subtype of B, given an explicit Equivalence[B].

    This method is used to enable the Explicitly DSL for TypeCheckedTripleEquals by requiring an explicit Equivalance[B], but taking an implicit function that provides evidence that A is a subtype of B.

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[B]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtraits LowPriorityTypeCheckedConstraint (extended by TypeCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    equivalenceOfB

    an Equivalence[B] type class to which the Constraint.areEqual method will delegate to determine equality.

    ev

    evidence that A is a subype of B

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[B].

    Definition Classes
    EqualityPolicy
  4. abstract def convertEquivalenceToAToBConversionConstraint[A, B](equivalenceOfB: Equivalence[B])(implicit ev: (A) ⇒ B): Constraint[A, B]

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that A is implicitly convertible to B, given an explicit Equivalence[B].

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that A is implicitly convertible to B, given an explicit Equivalence[B].

    This method is used to enable the Explicitly DSL for ConversionCheckedTripleEquals by requiring an explicit Equivalance[B], but taking an implicit function that converts from A to B.

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[B]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtraits LowPriorityConversionCheckedConstraint (extended by ConversionCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[B].

    Definition Classes
    EqualityPolicy
  5. abstract def convertEquivalenceToBSubtypeOfAEqualityConstraint[A, B](equivalenceOfA: Equivalence[A])(implicit ev: <:<[B, A]): EqualityConstraint[A, B] with NativeSupport

    Definition Classes
    EqualityPolicy
  6. abstract def convertEquivalenceToBToAConstraint[A, B](equivalenceOfA: Equivalence[A])(implicit ev: <:<[B, A]): Constraint[A, B]

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that B must be a subtype of A, given an explicit Equivalence[A].

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that B must be a subtype of A, given an explicit Equivalence[A].

    This method is used to enable the Explicitly DSL for TypeCheckedTripleEquals by requiring an explicit Equivalance[B], but taking an implicit function that provides evidence that A is a subtype of B. For example, under TypeCheckedTripleEquals, this method (as an implicit method), would be used to compile this statement:

    def closeEnoughTo1(num: Double): Boolean =
      (num === 1.0)(decided by forgivingEquality)
    

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtrait TypeCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    ev

    evidence that B is a subype of A

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[A].

    Definition Classes
    EqualityPolicy
  7. abstract def convertEquivalenceToBToAConversionConstraint[A, B](equivalenceOfA: Equivalence[A])(implicit ev: (B) ⇒ A): Constraint[A, B]

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that B is implicitly convertible to A, given an explicit Equivalence[A].

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that B is implicitly convertible to A, given an explicit Equivalence[A].

    This method is used to enable the Explicitly DSL for ConversionCheckedTripleEquals by requiring an explicit Equivalance[A], but taking an implicit function that converts from B to A. For example, under ConversionCheckedTripleEquals, this method (as an implicit method), would be used to compile this statement:

    def closeEnoughTo1(num: Double): Boolean =
      (num === 1.0)(decided by forgivingEquality)
    

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtrait ConversionCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    equivalenceOfA

    an Equivalence[A] type class to which the Constraint.areEqual method will delegate to determine equality.

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[A].

    Definition Classes
    EqualityPolicy
  8. abstract def convertToCheckingEqualizer[T](left: T): CheckingEqualizer[T]

    Converts to an CheckingEqualizer that provides === and !== operators that result in Boolean and enforce a type constraint.

    Converts to an CheckingEqualizer that provides === and !== operators that result in Boolean and enforce a type constraint.

    This method is overridden and made implicit by subtraits TypeCheckedTripleEquals and ConversionCheckedTripleEquals, and overriden as non-implicit by the other subtraits in this package.

    left

    the object whose type to convert to CheckingEqualizer.

    Definition Classes
    EqualityPolicy
    Exceptions thrown
    NullPointerException

    if left is null.

  9. abstract def convertToEqualizer[T](left: T): Equalizer[T]

    Converts to an Equalizer that provides === and !== operators that result in Boolean and enforce no type constraint.

    Converts to an Equalizer that provides === and !== operators that result in Boolean and enforce no type constraint.

    This method is overridden and made implicit by subtrait TripleEquals and overriden as non-implicit by the other subtraits in this package.

    left

    the object whose type to convert to Equalizer.

    Definition Classes
    EqualityPolicy
    Exceptions thrown
    NullPointerException

    if left is null.

  10. abstract def convertToFreshCheckingEqualizer[T](left: T): FreshCheckingEqualizer[T]

    Definition Classes
    EqualityPolicy
  11. abstract def enabledEqualityConstraintBetween[A, B](implicit equalityOfA: Equality[A], ev: EnabledEqualityBetween[A, B]): EqualityConstraint[A, B]

    Definition Classes
    EqualityPolicy
  12. abstract def enabledEqualityConstraintConverting[A, B](implicit equivalenceOfA: Equivalence[A], cnv: EnabledEqualityConverting[B, A]): EqualityConstraint[A, B]

    Definition Classes
    EqualityPolicy
  13. abstract def enabledEqualityConstraintFor[A](implicit equivalenceOfA: Equivalence[A], ev: EnabledEqualityFor[A]): EqualityConstraint[A, A] with NativeSupport

    Definition Classes
    EqualityPolicy
  14. abstract def lowPriorityConversionCheckedConstraint[A, B](implicit equivalenceOfB: Equivalence[B], cnv: (A) ⇒ B): Constraint[A, B]

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that A is implicitly convertible to B, given an implicit Equivalence[B].

    Provides a Constraint[A, B] class for any two types A and B, enforcing the type constraint that A is implicitly convertible to B, given an implicit Equivalence[B].

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[B]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtrait LowPriorityConversionCheckedConstraint (extended by ConversionCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    cnv

    an implicit conversion from A to B

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[B].

    Definition Classes
    EqualityPolicy
  15. abstract def lowPriorityTypeCheckedConstraint[A, B](implicit equivalenceOfB: Equivalence[B], ev: <:<[A, B]): Constraint[A, B]

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that A must be a subtype of B, given an implicit Equivalence[B].

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that A must be a subtype of B, given an implicit Equivalence[B].

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtrait LowPriorityTypeCheckedConstraint (extended by TypeCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    equivalenceOfB

    an Equivalence[B] type class to which the Constraint.areEqual method will delegate to determine equality.

    ev

    evidence that A is a subype of B

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[B].

    Definition Classes
    EqualityPolicy
  16. abstract def typeCheckedConstraint[A, B](implicit equivalenceOfA: Equivalence[A], ev: <:<[B, A]): Constraint[A, B]

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that B must be a subtype of A, given an implicit Equivalence[A].

    Provides a Constraint[A, B] for any two types A and B, enforcing the type constraint that B must be a subtype of A, given an implicit Equivalence[A].

    The returned Constraint's areEqual method uses the implicitly passed Equivalence[A]'s areEquivalent method to determine equality.

    This method is overridden and made implicit by subtrait TypeCheckedTripleEquals) and overriden as non-implicit by the other subtraits in this package.

    ev

    evidence that B is a subype of A

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEquivalent method of the passed Equivalence[A].

    Definition Classes
    EqualityPolicy
  17. abstract def unconstrainedEquality[A, B](implicit equalityOfA: Equality[A]): Constraint[A, B]

    Provides a Constraint[A, B] class for any two types A and B, with no type constraint enforced, given an implicit Equality[A].

    Provides a Constraint[A, B] class for any two types A and B, with no type constraint enforced, given an implicit Equality[A].

    The returned Constraint's areEqual method uses the implicitly passed Equality[A]'s areEqual method to determine equality.

    This method is overridden and made implicit by subtrait TripleEquals and overriden as non-implicit by the other subtraits in this package.

    equalityOfA

    an Equality[A] type class to which the Constraint.areEqual method will delegate to determine equality.

    returns

    a Constraint[A, B] whose areEqual method delegates to the areEqual method of the passed Equality[A].

    Definition Classes
    EqualityPolicy
  18. abstract def unconstrainedFreshEquality[A, B](implicit equalityOfA: Equality[A]): EqualityConstraint[A, B] with NativeSupport

    Definition Classes
    EqualityPolicy

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. def !==[T](right: Spread[T]): TripleEqualsInvocationOnSpread[T]

    Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate the “<left> should !== (<pivot> +- <tolerance>)” syntax of Matchers.

    Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate the “<left> should !== (<pivot> +- <tolerance>)” syntax of Matchers.

    right

    the Spread[T] against which to compare the left-hand value

    returns

    a TripleEqualsInvocationOnSpread wrapping the passed Spread[T] value, with expectingEqual set to false.

    Definition Classes
    EqualityPolicy
  4. def !==(right: Null): TripleEqualsInvocation[Null]

    Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate the “<left> should !== null” syntax of Matchers.

    Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate the “<left> should !== null” syntax of Matchers.

    right

    a null reference

    returns

    a TripleEqualsInvocation wrapping the passed null value, with expectingEqual set to false.

    Definition Classes
    EqualityPolicy
  5. def !==[T](right: T): TripleEqualsInvocation[T]

    Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate the “<left> should !== <right>” syntax of Matchers.

    Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate the “<left> should !== <right>” syntax of Matchers.

    right

    the right-hand side value for an equality assertion

    returns

    a TripleEqualsInvocation wrapping the passed right value, with expectingEqual set to false.

    Definition Classes
    EqualityPolicy
  6. final def ##(): Int

    Definition Classes
    AnyRef → Any
  7. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  8. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  9. def ===[T](right: Spread[T]): TripleEqualsInvocationOnSpread[T]

    Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate the “<left> should === (<pivot> +- <tolerance>)” syntax of Matchers.

    Returns a TripleEqualsInvocationOnSpread[T], given an Spread[T], to facilitate the “<left> should === (<pivot> +- <tolerance>)” syntax of Matchers.

    right

    the Spread[T] against which to compare the left-hand value

    returns

    a TripleEqualsInvocationOnSpread wrapping the passed Spread[T] value, with expectingEqual set to true.

    Definition Classes
    EqualityPolicy
  10. def ===(right: Null): TripleEqualsInvocation[Null]

    Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate the “<left> should === null” syntax of Matchers.

    Returns a TripleEqualsInvocation[Null], given a null reference, to facilitate the “<left> should === null” syntax of Matchers.

    right

    a null reference

    returns

    a TripleEqualsInvocation wrapping the passed null value, with expectingEqual set to true.

    Definition Classes
    EqualityPolicy
  11. def ===[T](right: T): TripleEqualsInvocation[T]

    Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate the “<left> should === <right>” syntax of Matchers.

    Returns a TripleEqualsInvocation[T], given an object of type T, to facilitate the “<left> should === <right>” syntax of Matchers.

    right

    the right-hand side value for an equality assertion

    returns

    a TripleEqualsInvocation wrapping the passed right value, with expectingEqual set to true.

    Definition Classes
    EqualityPolicy
  12. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  13. implicit def booleanEqualityConstraint[A, B](implicit equalityOfA: Equality[A], boolA: CooperatingBoolean[A], boolB: CooperatingBoolean[B]): EqualityConstraint[A, B] with NativeSupport

  14. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  15. implicit def convertEquivalenceToASubtypeOfBEqualityConstraint[A, B](equivalenceOfB: Equivalence[B])(implicit ev: <:<[A, B]): EqualityConstraint[A, B] with NativeSupport

  16. def defaultEquality[A]: Equality[A]

    Returns an Equality[A] for any type A that determines equality by first calling .deep on any Array (on either the left or right side), then comparing the resulting objects with ==.

    Returns an Equality[A] for any type A that determines equality by first calling .deep on any Array (on either the left or right side), then comparing the resulting objects with ==.

    returns

    a default Equality for type A

    Definition Classes
    EqualityPolicy
  17. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  18. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  19. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  20. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  21. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  22. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  23. implicit def lowPriorityCheckedEqualityConstraint[A, B](implicit equivalenceOfB: Equivalence[B], ev: <:<[A, B]): EqualityConstraint[A, B] with NativeSupport

  24. implicit def lowPriorityEnabledEqualityConstraintBetween[B, A](implicit equalityOfB: Equality[B], ev: EnabledEqualityBetween[A, B]): EqualityConstraint[B, A]

  25. implicit def lowPriorityEnabledEqualityConstraintConverting[A, B](implicit equivalenceOfB: Equivalence[B], cnv: EnabledEqualityConverting[A, B]): EqualityConstraint[A, B]

  26. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  27. final def notify(): Unit

    Definition Classes
    AnyRef
  28. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  29. implicit def numericEqualityConstraint[A, B](implicit equalityOfA: Equality[A], numA: CooperatingNumeric[A], numB: CooperatingNumeric[B]): EqualityConstraint[A, B] with NativeSupport

  30. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  31. def toString(): String

    Definition Classes
    AnyRef → Any
  32. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  33. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  34. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from EqualityPolicy

Inherited from AnyRef

Inherited from Any

Ungrouped