@@ -21,7 +21,7 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
21
21
new RewritePhase (prev)
22
22
}
23
23
24
- class RewritePhase (prev : Phase ) extends StdPhase (prev) {
24
+ private class RewritePhase (prev : Phase ) extends StdPhase (prev) {
25
25
override def apply (unit : CompilationUnit ): Unit = {
26
26
val patches = ArrayBuffer [Patch ]()
27
27
@@ -35,13 +35,13 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
35
35
}
36
36
37
37
val settings = global.settings
38
- val rewritesSetting = settings.Yrewrites
39
- if (rewritesSetting .contains(rewritesSetting .domain.breakOutArgs)) {
38
+ val rws = settings.Yrewrites
39
+ if (rws .contains(rws .domain.breakOutArgs)) {
40
40
val rewriter = new BreakoutTraverser ()
41
41
rewriter.traverse(unit.body)
42
42
patches ++= rewriter.patches
43
43
}
44
- if (rewritesSetting .contains(rewritesSetting .domain.collectionSeq)) {
44
+ if (rws .contains(rws .domain.collectionSeq)) {
45
45
val rewriter = new CollectionSeqTransformer (treeByRangePos, unit)
46
46
rewriter.transform(unit.body)
47
47
patches ++= rewriter.patches
@@ -50,11 +50,11 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
50
50
}
51
51
}
52
52
53
- case class Patch (span : Position , replacement : String ) {
53
+ private case class Patch (span : Position , replacement : String ) {
54
54
def delta : Int = replacement.length - (span.end - span.start)
55
55
}
56
56
57
- def checkNoOverlap (patches : Array [Patch ]): Boolean = {
57
+ private def checkNoOverlap (patches : Array [Patch ]): Boolean = {
58
58
var ok = true
59
59
if (patches.nonEmpty)
60
60
patches.reduceLeft { (p1, p2) =>
@@ -67,7 +67,7 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
67
67
ok
68
68
}
69
69
70
- def applyPatches (source : SourceFile , patches : Array [Patch ]): String = {
70
+ private def applyPatches (source : SourceFile , patches : Array [Patch ]): String = {
71
71
val sourceChars = source.content
72
72
val patchedChars = new Array [Char ](sourceChars.length + patches.foldLeft(0 )(_ + _.delta))
73
73
@@ -91,7 +91,7 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
91
91
new String (patchedChars)
92
92
}
93
93
94
- def writePatches (source : SourceFile , patches : Array [Patch ]): Unit = if (patches.nonEmpty) {
94
+ private def writePatches (source : SourceFile , patches : Array [Patch ]): Unit = if (patches.nonEmpty) {
95
95
java.util.Arrays .sort(patches, Ordering .by[Patch , Int ](_.span.start))
96
96
if (checkNoOverlap(patches)) {
97
97
val bytes = applyPatches(source, patches).getBytes(settings.encoding.value)
@@ -101,12 +101,12 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
101
101
}
102
102
}
103
103
104
- lazy val breakOutSym = {
104
+ private lazy val breakOutSym = {
105
105
import definitions ._
106
106
getMemberMethod(rootMirror.getPackageObject(" scala.collection" ), TermName (" breakOut" ))
107
107
}
108
108
109
- def isInferredArg (tree : Tree ) = tree match {
109
+ private def isInferredArg (tree : Tree ) = tree match {
110
110
case tt : TypeTree => tt.original eq null
111
111
case _ =>
112
112
val pos = tree.pos
@@ -117,7 +117,7 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
117
117
}
118
118
119
119
// Applied.unapply matches any tree, not just applications
120
- object Application {
120
+ private object Application {
121
121
def unapply (t : Tree ): Option [(Tree , List [Tree ], List [List [Tree ]])] = t match {
122
122
case _ : Apply | _ : TypeApply =>
123
123
val applied = treeInfo.dissectApplied(t)
@@ -126,7 +126,7 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
126
126
}
127
127
}
128
128
129
- class BreakoutTraverser extends Traverser {
129
+ private class BreakoutTraverser extends Traverser {
130
130
val patches = collection.mutable.ArrayBuffer .empty[Patch ]
131
131
override def traverse (tree : Tree ): Unit = tree match {
132
132
case Application (fun, targs, argss) if fun.symbol == breakOutSym =>
@@ -150,11 +150,6 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
150
150
val patches = collection.mutable.ArrayBuffer .empty[Patch ]
151
151
override def transform (tree : Tree ): Tree = {
152
152
tree match {
153
- case tt : TypeTree if tt.original != null =>
154
- val saved = tt.original.tpe
155
- tt.original.tpe = tt.tpe
156
- try transform(tt.original)
157
- finally tt.original.setType(saved)
158
153
case ref : RefTree =>
159
154
for (rewrite <- rewrites) {
160
155
val sym = ref.symbol
@@ -174,7 +169,18 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
174
169
super .transform(tree)
175
170
}
176
171
}
172
+
177
173
private class RewriteTypingTransformer (unit : CompilationUnit ) extends TypingTransformer (unit) {
174
+
175
+ override def transform (tree : Tree ): Tree = tree match {
176
+ case tt : TypeTree if tt.original != null =>
177
+ val saved = tt.original.tpe
178
+ tt.original.tpe = tt.tpe
179
+ try transform(tt.original)
180
+ finally tt.original.setType(saved)
181
+ case _ => super .transform(tree)
182
+ }
183
+
178
184
protected def localTyperParamsEntered : analyzer.Typer = {
179
185
val typer : analyzer.Typer = localTyper
180
186
typer.context.enclosingContextChain.filter(_.owner.isMethod).foreach { (methodContext : analyzer.Context ) =>
0 commit comments