1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
package dotty.tools
package dotc
package transform
import org.junit.{Assert, Test}
import core._
import ast.Trees
import Contexts._
import Flags._
import Denotations._
import NameOps._
import Symbols._
import Types._
import Decorators._
import Trees._
import TreeTransforms.{TreeTransform, TreeTransformer}
class PostTyperTransformerTest extends DottyTest {
/* FIXME: re-enable after adapting to new scheme
@Test
def shouldStripImports = checkCompile("frontend", "class A{ import scala.collection.mutable._; val d = 1}") {
(tree, context) =>
implicit val ctx = context
class EmptyTransform extends TreeTransform {
override def name: String = "empty"
init(ctx, ctx.period.firstPhaseId, ctx.period.lastPhaseId)
}
val transformer = new PostTyperTransformer {
override def transformations = Array(new EmptyTransform)
override def name: String = "test"
}
val transformed = transformer.transform(tree)
Assert.assertTrue("should strip imports",
!transformed.toString.toLowerCase.contains("import")
)
}
@Test
def shouldStripNamedArgs = checkCompile("frontend", "class A{ def p(x:Int, y:Int= 2) = 1; p(1, y = 2)}") {
(tree, context) =>
implicit val ctx = context
class EmptyTransform extends TreeTransform {
override def name: String = "empty"
init(ctx, ctx.period.firstPhaseId, ctx.period.lastPhaseId)
}
val transformer = new PostTyperTransformer {
override def transformations = Array(new EmptyTransform)
override def name: String = "test"
}
val transformed = transformer.transform(tree)
Assert.assertTrue("should string named arguments",
!transformed.toString.contains("NamedArg")
)
}
@Test
def shouldReorderExistingObjectsInPackage = checkCompile("frontend", "object A{}; class A{} ") {
(tree, context) =>
implicit val ctx = context
class EmptyTransform extends TreeTransform {
override def name: String = "empty"
init(ctx, ctx.period.firstPhaseId, ctx.period.lastPhaseId)
}
val transformer = new PostTyperTransformer {
override def transformations = Array(new EmptyTransform)
override def name: String = "test"
}
val transformed = transformer.transform(tree).toString
val classPattern = "TypeDef(Modifiers(,,List()),A,"
val classPos = transformed.indexOf(classPattern)
val moduleClassPattern = "TypeDef(Modifiers(final module,,List()),A$,"
val modulePos = transformed.indexOf(moduleClassPattern)
Assert.assertTrue("should reorder existing objects in package",
classPos < modulePos
)
}
@Test
def shouldReorderExistingObjectsInBlock = checkCompile("frontend", "class D {def p = {object A{}; class A{}; 1}} ") {
(tree, context) =>
implicit val ctx = context
class EmptyTransform extends TreeTransform {
override def name: String = "empty"
init(ctx, ctx.period.firstPhaseId, ctx.period.lastPhaseId)
}
val transformer = new PostTyperTransformer {
override def transformations = Array(new EmptyTransform)
override def name: String = "test"
}
val transformed = transformer.transform(tree).toString
val classPattern = "TypeDef(Modifiers(,,List()),A,"
val classPos = transformed.indexOf(classPattern)
val moduleClassPattern = "TypeDef(Modifiers(final module,,List()),A$,"
val modulePos = transformed.indexOf(moduleClassPattern)
Assert.assertTrue("should reorder existing objects in block",
classPos < modulePos
)
}
@Test
def shouldReorderExistingObjectsInTemplate = checkCompile("frontend", "class D {object A{}; class A{}; } ") {
(tree, context) =>
implicit val ctx = context
class EmptyTransform extends TreeTransform {
override def name: String = "empty"
init(ctx, ctx.period.firstPhaseId, ctx.period.lastPhaseId)
}
val transformer = new PostTyperTransformer {
override def transformations = Array(new EmptyTransform)
override def name: String = "test"
}
val transformed = transformer.transform(tree).toString
val classPattern = "TypeDef(Modifiers(,,List()),A,"
val classPos = transformed.indexOf(classPattern)
val moduleClassPattern = "TypeDef(Modifiers(final module,,List()),A$,"
val modulePos = transformed.indexOf(moduleClassPattern)
Assert.assertTrue("should reorder existing objects in template",
classPos < modulePos
)
}*/
}
|