summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-11-17 12:13:20 +0100
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-11-17 12:13:20 +0100
commitebf16c7ef273206223674b3c72cd7a24a14bfa65 (patch)
treeb16343c7250e679f4ac1dca72e957a4055a3ef94 /src/compiler
parente9a37521c499788fa7e1aab9d553c84ca00d8a4f (diff)
parent5f50e0368e635db8279797095dbd34470722d5c7 (diff)
downloadscala-ebf16c7ef273206223674b3c72cd7a24a14bfa65.tar.gz
scala-ebf16c7ef273206223674b3c72cd7a24a14bfa65.tar.bz2
scala-ebf16c7ef273206223674b3c72cd7a24a14bfa65.zip
Merge pull request #4114 from retronym/ticket/8534
SI-8534 Avoid crash in erroneous SelectFromTypeTree
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index a182a2e269..680cd22dd3 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -5183,16 +5183,19 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
typed(tree.ref, MonoQualifierModes | mode.onlyTypePat, AnyRefTpe)
}
- if (!refTyped.isErrorTyped)
+ if (refTyped.isErrorTyped) {
+ setError(tree)
+ } else {
tree setType refTyped.tpe.resultType
-
- if (treeInfo.admitsTypeSelection(refTyped)) tree
- else UnstableTreeError(refTyped)
+ if (refTyped.isErrorTyped || treeInfo.admitsTypeSelection(refTyped)) tree
+ else UnstableTreeError(tree)
+ }
}
def typedSelectFromTypeTree(tree: SelectFromTypeTree) = {
val qual1 = typedType(tree.qualifier, mode)
- if (qual1.tpe.isVolatile) TypeSelectionFromVolatileTypeError(tree, qual1)
+ if (qual1.isErrorTyped) setError(treeCopy.SelectFromTypeTree(tree, qual1, tree.name))
+ else if (qual1.tpe.isVolatile) TypeSelectionFromVolatileTypeError(tree, qual1)
else typedSelect(tree, qual1, tree.name)
}