diff options
author | Martin Odersky <odersky@gmail.com> | 2016-05-06 19:27:44 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-05-23 16:11:45 +0200 |
commit | a88de62e5d60fe8ba83d99bd463797e6b173e3d1 (patch) | |
tree | ac00eace9d22fde844eab1931cdb1896d35e36ff /src/dotty/tools/dotc/core | |
parent | ec71e006ea5d506b55ba624999b0d2aa01b2d7c1 (diff) | |
download | dotty-a88de62e5d60fe8ba83d99bd463797e6b173e3d1.tar.gz dotty-a88de62e5d60fe8ba83d99bd463797e6b173e3d1.tar.bz2 dotty-a88de62e5d60fe8ba83d99bd463797e6b173e3d1.zip |
Safe equality for core classes:
Name, Symbol, Denotation, Type.
This uncovered two nonsensical comparisons, one in CollectEntryPoints,
the other in DottyBackendInterface.
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r-- | src/dotty/tools/dotc/core/Denotations.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Names.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Symbols.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 2 |
4 files changed, 8 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Denotations.scala b/src/dotty/tools/dotc/core/Denotations.scala index 080e8a39b..69624b01a 100644 --- a/src/dotty/tools/dotc/core/Denotations.scala +++ b/src/dotty/tools/dotc/core/Denotations.scala @@ -70,6 +70,8 @@ import Decorators.SymbolIteratorDecorator */ object Denotations { + implicit def eqDenotation: Eq[Denotation, Denotation] = Eq + /** A denotation is the result of resolving * a name (either simple identifier or select) during a given period. * diff --git a/src/dotty/tools/dotc/core/Names.scala b/src/dotty/tools/dotc/core/Names.scala index 10eef16c1..223d95045 100644 --- a/src/dotty/tools/dotc/core/Names.scala +++ b/src/dotty/tools/dotc/core/Names.scala @@ -26,6 +26,8 @@ object Names { def toTermName: TermName } + implicit def eqName: Eq[Name, Name] = Eq + /** A name is essentially a string, with three differences * 1. Names belong in one of two name spaces: they are type names or term names. * Term names have a sub-category of "local" field names. diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala index d40acdfa7..473f107cb 100644 --- a/src/dotty/tools/dotc/core/Symbols.scala +++ b/src/dotty/tools/dotc/core/Symbols.scala @@ -361,6 +361,8 @@ trait Symbols { this: Context => object Symbols { + implicit def eqSymbol: Eq[Symbol, Symbol] = Eq + /** A Symbol represents a Scala definition/declaration or a package. * @param coord The coordinates of the symbol (a position or an index) * @param id A unique identifier of the symbol (unique per ContextBase) diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index 114e6c908..71ea6d2b3 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -38,6 +38,8 @@ object Types { @sharable private var nextId = 0 + implicit def eqType: Eq[Type, Type] = Eq + /** The class of types. * The principal subclasses and sub-objects are as follows: * |