aboutsummaryrefslogtreecommitdiff
path: root/compiler/src
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2017-03-28 17:36:56 +0200
committerGitHub <noreply@github.com>2017-03-28 17:36:56 +0200
commit30bfbd571419569db08bfc5ccc7edb788679b696 (patch)
tree3874e842d6982f240404f99a181b92a2d81b2f0d /compiler/src
parent1fe730493f9c8701d781cb3ba89bf4ce400d0e72 (diff)
parent6135363f8730421202eeb39494d3720b9124131c (diff)
downloaddotty-30bfbd571419569db08bfc5ccc7edb788679b696.tar.gz
dotty-30bfbd571419569db08bfc5ccc7edb788679b696.tar.bz2
dotty-30bfbd571419569db08bfc5ccc7edb788679b696.zip
Merge pull request #2127 from dotty-staging/fix/variable-pattern-access
Fix desugaring of variable pattern leaking into API
Diffstat (limited to 'compiler/src')
-rw-r--r--compiler/src/dotty/tools/dotc/ast/Desugar.scala5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/src/dotty/tools/dotc/ast/Desugar.scala b/compiler/src/dotty/tools/dotc/ast/Desugar.scala
index b5be89440..75c7078a1 100644
--- a/compiler/src/dotty/tools/dotc/ast/Desugar.scala
+++ b/compiler/src/dotty/tools/dotc/ast/Desugar.scala
@@ -557,7 +557,7 @@ object desugar {
* val/var/lazy val p = e ==> val/var/lazy val x_1 = (e: @unchecked) match (case p => (x_1))
*
* in case there are zero or more than one variables in pattern
- * val/var/lazy p = e ==> private synthetic [lazy] val t$ = (e: @unchecked) match (case p => (x_1, ..., x_N))
+ * val/var/lazy p = e ==> private[this] synthetic [lazy] val t$ = (e: @unchecked) match (case p => (x_1, ..., x_N))
* val/var/def x_1 = t$._1
* ...
* val/var/def x_N = t$._N
@@ -586,7 +586,8 @@ object desugar {
derivedValDef(original, named, tpt, matchExpr, mods)
case _ =>
val tmpName = ctx.freshName().toTermName
- val patMods = mods & (AccessFlags | Lazy) | Synthetic
+ val patMods =
+ mods & Lazy | Synthetic | (if (ctx.owner.isClass) PrivateLocal else EmptyFlags)
val firstDef =
ValDef(tmpName, TypeTree(), matchExpr)
.withPos(pat.pos.union(rhs.pos)).withMods(patMods)