diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2017-01-25 14:37:27 +0100 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2017-01-25 14:37:27 +0100 |
commit | 4c02b441da6c54fa47c01bff98a423dcbd46203b (patch) | |
tree | 63fb98c2d034171c18881ffa18e814c435783939 /compiler/test/dotty | |
parent | 6a95fef182f23a610a4e80dfd9bfcbf23364f0ee (diff) | |
download | dotty-4c02b441da6c54fa47c01bff98a423dcbd46203b.tar.gz dotty-4c02b441da6c54fa47c01bff98a423dcbd46203b.tar.bz2 dotty-4c02b441da6c54fa47c01bff98a423dcbd46203b.zip |
Fix #1908: give synthetic default params correct flags
Diffstat (limited to 'compiler/test/dotty')
-rw-r--r-- | compiler/test/dotty/tools/dotc/ast/DesugarTests.scala | 49 |
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) + } +} |