diff options
author | Martin Odersky <odersky@gmail.com> | 2016-05-03 11:23:24 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-05-19 08:32:48 +0200 |
commit | b26b725ef25a55a325b2c8a44c1ac67272632f14 (patch) | |
tree | d05eda39d405787a7b2ca651fea8fa2455bd19b7 /src/dotty/tools/dotc/typer | |
parent | 3a97b3fb546bc57afb8cbfadb27eb9e66b0842d1 (diff) | |
download | dotty-b26b725ef25a55a325b2c8a44c1ac67272632f14.tar.gz dotty-b26b725ef25a55a325b2c8a44c1ac67272632f14.tar.bz2 dotty-b26b725ef25a55a325b2c8a44c1ac67272632f14.zip |
Handle MergeErrors in RefChecks
Used to throw an uncaught merge error in checkAllOverrides
when compiling i1240c.scala.
Diffstat (limited to 'src/dotty/tools/dotc/typer')
-rw-r--r-- | src/dotty/tools/dotc/typer/RefChecks.scala | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/RefChecks.scala b/src/dotty/tools/dotc/typer/RefChecks.scala index 37c2fe48f..a654bb08f 100644 --- a/src/dotty/tools/dotc/typer/RefChecks.scala +++ b/src/dotty/tools/dotc/typer/RefChecks.scala @@ -837,7 +837,7 @@ class RefChecks extends MiniPhase { thisTransformer => if (tree.symbol is Macro) EmptyTree else tree } - override def transformTemplate(tree: Template)(implicit ctx: Context, info: TransformerInfo) = { + override def transformTemplate(tree: Template)(implicit ctx: Context, info: TransformerInfo) = try { val cls = ctx.owner checkOverloadedRestrictions(cls) checkParents(cls) @@ -845,6 +845,10 @@ class RefChecks extends MiniPhase { thisTransformer => checkAllOverrides(cls) checkDerivedValueClass(cls, tree.body) tree + } catch { + case ex: MergeError => + ctx.error(ex.getMessage, tree.pos) + tree } override def transformTypeTree(tree: TypeTree)(implicit ctx: Context, info: TransformerInfo) = { |