diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-13 14:09:27 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-13 14:09:27 +0100 |
commit | 291b563418011120c9fbe05a05e118a7ec28005d (patch) | |
tree | bf5a86dd05fbbf2ee6614d4c3e43e265197abe58 /src/dotty/tools/dotc/typer/Checking.scala | |
parent | 7cdf3d0dc5709634825b1300d77d1a0ef01c69fa (diff) | |
download | dotty-291b563418011120c9fbe05a05e118a7ec28005d.tar.gz dotty-291b563418011120c9fbe05a05e118a7ec28005d.tar.bz2 dotty-291b563418011120c9fbe05a05e118a7ec28005d.zip |
Fix #248: Class cannot inherit from refinement types
We now check that classes do not inherit from refinement types
(unless they are an encoding of parameterized types), nor from
& or | types.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Checking.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Checking.scala | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Checking.scala b/src/dotty/tools/dotc/typer/Checking.scala index 17cba1373..9e13ec13b 100644 --- a/src/dotty/tools/dotc/typer/Checking.scala +++ b/src/dotty/tools/dotc/typer/Checking.scala @@ -248,7 +248,7 @@ trait Checking { * @return `tp` itself if it is a class or trait ref, ObjectClass.typeRef if not. */ def checkClassTypeWithStablePrefix(tp: Type, pos: Position, traitReq: Boolean)(implicit ctx: Context): Type = - tp.underlyingClassRef match { + tp.underlyingClassRef(refinementOK = false) match { case tref: TypeRef => if (ctx.phase <= ctx.refchecksPhase) checkStable(tref.prefix, pos) if (traitReq && !(tref.symbol is Trait)) ctx.error(d"$tref is not a trait", pos) |