aboutsummaryrefslogtreecommitdiff
path: root/test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala')
-rw-r--r--test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala132
1 files changed, 132 insertions, 0 deletions
diff --git a/test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala b/test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala
new file mode 100644
index 000000000..03d6d9b36
--- /dev/null
+++ b/test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala
@@ -0,0 +1,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
+ )
+ }*/
+}