aboutsummaryrefslogtreecommitdiff
path: root/compiler/test
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/test')
-rw-r--r--compiler/test/dotty/tools/dotc/ast/DesugarTests.scala49
1 files changed, 49 insertions, 0 deletions
diff --git a/compiler/test/dotty/tools/dotc/ast/DesugarTests.scala b/compiler/test/dotty/tools/dotc/ast/DesugarTests.scala
new file mode 100644
index 000000000..8d4d6a583
--- /dev/null
+++ b/compiler/test/dotty/tools/dotc/ast/DesugarTests.scala
@@ -0,0 +1,49 @@
+package dotty.tools
+package dotc
+package ast
+
+import core._
+import Names._, Types._ , Symbols._, StdNames._, Flags._, Contexts._
+
+import org.junit.Test
+import org.junit.Assert._
+
+class DesugarTests extends DottyTest {
+ import tpd._
+
+ private def validSym(sym: Symbol)(implicit ctx: Context): Unit = {
+ assert(
+ // remaining symbols must be either synthetic:
+ sym.is(Synthetic) ||
+ // or be a type argument from product:
+ (sym.isType && sym.is(BaseTypeArg)) ||
+ // or be a constructor:
+ sym.name == nme.CONSTRUCTOR,
+ s"found: $sym (${sym.flags})"
+ )
+ }
+
+ @Test def caseClassHasCorrectMembers =
+ checkCompile("frontend", "case class Foo(x: Int, y: String)") { (tree, context) =>
+ implicit val ctx = context
+ val ccTree = tree.find(tree => tree.symbol.name == typeName("Foo")).get
+ val List(_, foo) = defPath(ccTree.symbol, tree).map(_.symbol.info)
+
+ val x :: y :: rest = foo.decls.toList
+
+ // Make sure we extracted the correct values from foo:
+ assert(x.name == termName("x"))
+ assert(y.name == termName("y"))
+
+ rest.foreach(validSym)
+ }
+
+ @Test def caseClassCompanionHasCorrectMembers =
+ checkCompile("frontend", "case class Foo(x: Int, y: String)") { (tree, context) =>
+ implicit val ctx = context
+ val ccTree = tree.find(tree => tree.symbol.name == termName("Foo")).get
+ val List(_, foo) = defPath(ccTree.symbol, tree).map(_.symbol.info)
+
+ foo.decls.foreach(validSym)
+ }
+}