diff options
Diffstat (limited to 'test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala')
-rw-r--r-- | test/dotty/tools/dotc/transform/PostTyperTransformerTest.scala | 132 |
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 + ) + }*/ +} |