aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-05-03 11:23:24 +0200
committerMartin Odersky <odersky@gmail.com>2016-05-19 08:32:48 +0200
commitb26b725ef25a55a325b2c8a44c1ac67272632f14 (patch)
treed05eda39d405787a7b2ca651fea8fa2455bd19b7 /src/dotty/tools/dotc/typer
parent3a97b3fb546bc57afb8cbfadb27eb9e66b0842d1 (diff)
downloaddotty-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.scala6
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) = {