diff options
author | Martin Odersky <odersky@gmail.com> | 2016-06-29 19:05:20 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-07-11 13:34:59 +0200 |
commit | af43d325b778973ad9e144b5c27c455febb98890 (patch) | |
tree | 7803923eade05a15f0a5bbe3ef8b6fb86390643b /src/dotty/tools/dotc/core/Symbols.scala | |
parent | 850dc6f2fb3b6228f2586ce0790621e80f664afe (diff) | |
download | dotty-af43d325b778973ad9e144b5c27c455febb98890.tar.gz dotty-af43d325b778973ad9e144b5c27c455febb98890.tar.bz2 dotty-af43d325b778973ad9e144b5c27c455febb98890.zip |
Abstract type parameters out from type symbols
In the new hk scheme, a type parameter can be represented by a
refinement without a corresponding symbol. Therefore, we need
to disentangle the info inherent in a type parameter from the
contents of a type symbol. We achieve this by creating a common
super trait "MemerInfo" of Symbol and RefinedType.
Diffstat (limited to 'src/dotty/tools/dotc/core/Symbols.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Symbols.scala | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala index 1b605e24f..c7eb54812 100644 --- a/src/dotty/tools/dotc/core/Symbols.scala +++ b/src/dotty/tools/dotc/core/Symbols.scala @@ -367,7 +367,7 @@ object Symbols { * @param coord The coordinates of the symbol (a position or an index) * @param id A unique identifier of the symbol (unique per ContextBase) */ - class Symbol private[Symbols] (val coord: Coord, val id: Int) extends DotClass with printing.Showable { + class Symbol private[Symbols] (val coord: Coord, val id: Int) extends DotClass with MemberBinding with printing.Showable { type ThisName <: Name @@ -489,6 +489,13 @@ object Symbols { */ def pos: Position = if (coord.isPosition) coord.toPosition else NoPosition + // MemberBinding methods + def isTypeParam(implicit ctx: Context) = denot.is(TypeParam) + def memberName(implicit ctx: Context): Name = name + def memberBounds(implicit ctx: Context) = denot.info.bounds + def memberBoundsAsSeenFrom(pre: Type)(implicit ctx: Context) = pre.memberInfo(this).bounds + def memberVariance(implicit ctx: Context) = denot.variance + // -------- Printing -------------------------------------------------------- /** The prefix string to be used when displaying this symbol without denotation */ |