aboutsummaryrefslogtreecommitdiff
path: root/compiler/test
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-01-25 14:37:27 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-01-25 14:37:27 +0100
commit4c02b441da6c54fa47c01bff98a423dcbd46203b (patch)
tree63fb98c2d034171c18881ffa18e814c435783939 /compiler/test
parent6a95fef182f23a610a4e80dfd9bfcbf23364f0ee (diff)
downloaddotty-4c02b441da6c54fa47c01bff98a423dcbd46203b.tar.gz
dotty-4c02b441da6c54fa47c01bff98a423dcbd46203b.tar.bz2
dotty-4c02b441da6c54fa47c01bff98a423dcbd46203b.zip
Fix #1908: give synthetic default params correct flags
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)
+ }
+}