diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-11-17 12:13:20 +0100 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-11-17 12:13:20 +0100 |
commit | ebf16c7ef273206223674b3c72cd7a24a14bfa65 (patch) | |
tree | b16343c7250e679f4ac1dca72e957a4055a3ef94 /src | |
parent | e9a37521c499788fa7e1aab9d553c84ca00d8a4f (diff) | |
parent | 5f50e0368e635db8279797095dbd34470722d5c7 (diff) | |
download | scala-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')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 13 |
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) } |