diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-01-29 15:09:45 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-01-29 15:09:45 +1000 |
commit | ddd83de2bc44471353e34d20fae037cc88267838 (patch) | |
tree | 1f774ad5d590aed133e3cac15efb917a1568c7c3 /src/compiler | |
parent | 6f9c65d784ddc0df3accf8ca821c7f9e081110f0 (diff) | |
parent | b2093f2345b991fa4774950c5505621ab6445897 (diff) | |
download | scala-ddd83de2bc44471353e34d20fae037cc88267838.tar.gz scala-ddd83de2bc44471353e34d20fae037cc88267838.tar.bz2 scala-ddd83de2bc44471353e34d20fae037cc88267838.zip |
Merge pull request #4917 from retronym/ticket/9629
SI-9629 Emit missing 'pattern must be a value' error
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index bf64ed9baa..3a8edafd58 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -5421,6 +5421,9 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper if (!isPastTyper) signalDone(context.asInstanceOf[analyzer.Context], tree, result) + if (mode.inPatternMode && !mode.inPolyMode && result.isType) + PatternMustBeValue(result, pt) + result } @@ -5510,10 +5513,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper // as a compromise, context.enrichmentEnabled tells adaptToMember to go ahead and enrich, // but arbitrary conversions (in adapt) are disabled // TODO: can we achieve the pattern matching bit of the string interpolation SIP without this? - typingInPattern(context.withImplicitsDisabledAllowEnrichment(typed(tree, PATTERNmode, pt))) match { - case tpt if tpt.isType => PatternMustBeValue(tpt, pt); tpt - case pat => pat - } + typingInPattern(context.withImplicitsDisabledAllowEnrichment(typed(tree, PATTERNmode, pt))) } /** Types a (fully parameterized) type tree */ |