-
Notifications
You must be signed in to change notification settings - Fork 1.1k
A variety of bugs (42 or so). #4389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I wasn't able to reproduce this one on master, for me compilation stops normally after 19 errors, are you using any compiler flag? |
No, I tested them using class CompilationTests2 extends ParallelTesting {
import ParallelTesting._
import TestConfiguration._
import CompilationTests2._
// Test suite configuration --------------------------------------------------
def maxDuration = 30.seconds
def numberOfSlaves = 5
def safeMode = Properties.testsSafeMode
def isInteractive = SummaryReport.isInteractive
def testFilter = Properties.testsFilter
// Positive tests ------------------------------------------------------------
// Run tests -----------------------------------------------------------------
@Test def runAll: Unit = {
implicit val testGroup: TestGroup = TestGroup("runAll")
compileFilesInDir("tests/result", defaultOptions)
}.checkRuns()
...
} |
Oh I see, it needs |
Another one: object i0 {
(null: String) match {
case (i1: Int |) => false
isInstanceOf lazy 4 | (_: Any) =>
println()
case i2() => extends _
case _ =>
case i3: String => Set[Int](new i1())
def this(i1: Int, i2: Int, i4: Int) = 0
case _ =>
}
} exception occurred while compiling
IN 0d3d32f4bfeedb17806fb4384e69a62353f26377.scala
java.lang.ClassCastException: dotty.tools.dotc.core.Types$CachedTypeRef cannot be cast to dotty.tools.dotc.core.Types$TermRef
at dotty.tools.dotc.core.Types$TermRef$.apply(Types.scala:2150)
at dotty.tools.dotc.core.SymDenotations$SymDenotation.termRef(SymDenotations.scala:1167)
at dotty.tools.dotc.typer.Typer.$anonfun$typedClassDef$1(Typer.scala:1538)
at dotty.tools.dotc.util.Stats$.track(Stats.scala:35) |
Same stack trace as eff46343d34261c03ec1223a254a3d39587f8d96.scala so same issue probably. |
object i0 {
def i1() = {
var i2: Any = new Array[this]()
i2.i5(0) += 123
val i6: 3 = 'i2('i219, 'i3')
i16 = 2 }
object i19 {
def i15(i12: => Any): String = 1
}
|
Maybe this is the same problem as in eff46343d34261c03ec1223a254a3d39587f8d96, but stacktraces are a bit different. class i0 {
private var main(i1: String): Unit = {
class i2 extends AnyRef {
def i3 = 0
}
def this() = { this(i4); i3 }
}
}
|
class i0 {
type Ordering[i1, i2] = (=> i3[i1])
def i4[i2, i3](i5: i1): i4[Any]
i8 += i14 {
type i4[+i9] = i5
def i7: Int = i6(5)
class i9[i10 <: i16 <: i4[_], i12](val i14: i11[_], i4: i11) {
def i16[i14 >: i1]: i0 = ???
implicit def i13[i4](i5: (=> i6)): i1[i6]
type i13[i7] = i13[i7]
def i8[+i1[+i2] <: i0[i1]]](i9: => ii5[i7]): i7[i5] = sys.error();
def i10(i11: i4[i10.i4])(implicit i8: i0[i6#i0]) = i4 * i7 i5 i4! this match {
case i14(i9) => 3 }
}
class i10 {
type i13 = i10.i8
val i11 =
var i21 =
case class Tuple1(i3: i1, i4: i4, i6)
}
(new i10(i13))
}
}
package i1.i0
object i12 {
def i9(i10: i1)(implicit i9: i8[Boolean]) = implicitly[i9](i10: Any, i4, i9) {}
case class i9[i14[i2]](i16: i11[i8[i2]]) extends i10[i4, i14] {
def this(i11: i12) = {
val i5 = new i5[Int, Int]
}
}
|
import
object i0 {
def i1[i2[_]](implicit i3: i2[Int]) = ()
i1(()) }
|
abstract class i0 {
def i1(i2: Int)(i3: Int): Int
<i1> tailrec match {
case i2: i2[Int] => 15
case '- ' ' =>
new i1(42)
}
|
object i0 {
def unapply(i1: Int)(i6: List[Int]): Int = {
case _ => case _ { if (true) i6 } }
def i7(i8: i0) = i1 match {
case i0(_) =>
(i1, i8) match {
case i0(i1, i1) => case _ => i2
}
}
object i5 {
import collection.mutable._
try { ??? mutable { case i1(i5, i3, i4) => i5 })
}
|
case class i0[i1, i4](i4: i1)
object i4 {
implicit def i4[i1: i0](i4: i1): i1
def i4[i4[_], i4[_], i4[i4]](i4: i1[i4]): i4[i4] = null
}
class i1 extends i4 {
case _ =>
}
val i1 = new i0 {
type i1[i4] = i4 with i0[i4]
trait i1 extends i4 {
type i1[i4] = i1 type i4 = i4#i4 def i4[i4 >: i4](i4: => i4): i4.i4[_ <: i4] = i4
i4(i1, i4: i4)
def unapply(i2: i4) = sys.error("")
}
trait i4
trait throw {
val i3: i4 = i4(5, i1: i1,
i4: i4)
def i3: i4[Int] = i1(null: Any) i3(0, i1())
println(i3 <= i4)
}
object i1 {
implicit def i1(i4: i4): Int
def i1[@specialized i4 <: i4[i4]](i1: i4): i4[Int]
def i1[@specialized i4, i4 <: i1](i4: i4): i4[i1[i4]] = new i4[i1] {
val i1 = (new i2.i1
}
}
|
package i0
trait i0 {
type i0
type i0[i1] = { def I2 = if (I2) i0 }
println( + I2 + i1)
}
object I2 {
def I2(I2: String): Boolean = ???
inline def List(i1: String, val I2: Int) = 1
}
|
possibly a duplicate of #4370 class i0 {
type i1 = {
override def toString <: i2
def i2: i0 { type i2 = i1 } = i2.i2 }
}
trait i2 {
type i1
def i2[i2](i2: i2): i0[i2]
}
new i2[i2] {
type i2 = i2[i2]
val i2: i0[_] & i2[i2] = Nil
}
class i2[i2] {
def i2(i2: Function1[i1[_]]): Either[Dynamic] = i2
def i2[i2 <: String](implicitly: i2[_]): i2[i2] = null
}
object i2 {
val i2: Seq[_] = sys.error("")
val i2 = Seq(new i2)
Console.println(i2[i2].i2)
}
|
<iI6>{I6}#I6{}
val I3 = new I2 with i0[Any]((I6: Int) I6> new toInt) implicit def I3[i5[_]]( I2: I2[I6, I6])#I2[I6]] = ???
def I2[I6 <: I1] = new i0[I6] {
def I6(scala.I6: Array[I1]) = {
val i5 = None
I6 = i5.asInstanceOf[Double]
}
I2.I6 == if (!I2.I6 =!= +I6' + I6 + I6 - 10) || I4 == true
case None => !1
def this() = 1
}
trait i5 {
type I2 >: Null
def I6( I2: List[Long, Nothing] = ???
I6(I6) +=( I6)
}
private var I6 extends i0[I6, I6] with I6[Int] {
var I2: I1[Option] = I6 with Dynamic {
val I1 = new Array[Nothing](1, 2)
}
|
class i0[i1]
class i1 extends i0[Int]
object i0 {
implicit val i2: i1 { type i1 = i1; object i2 {}
def i2[i1, i2 <: i1 <: i0[i2]](implicit i2: i1): i0 { type i2 = i1; }
trait i2[+i2[i2]] {
def i2[i2[i2] <: i0[i2], i2](i2: i0[i2]): i2[i2] =
i1 match {
case i1: i2[i2] => i2
case i2: i2[i2] => i2
}
}
|
object i0 {
abstract class i0[i0, i0, i0, i0] {
val I1 = new i0
val I1: Int = I1 {
val I1 = I1
}
}
object I1 {
def I1[I1 >: i0, I1 >: I1]: i0[i0, I1] = i0[i0]
def I1() i0 = i0
import I1.i0()
}
}
trait I1[-I1, +i0[i0 <: I1] <: I1#i0[(i0, I1, I1], I1 <: i0)] {}
class I1 {}
object i0 {
type i0[i0] <: i0[i0, I1]]
}
trait I1
class I1 extends i0
|
object i0 {
class i0 {}
case class I2() {}
}
(I2 _*)
}
trait I2[I2] {
val I2: I2
type I2 = super.I2
}
class I2[I2] { class I2 extends i0[I2]
}
class I2 {
def I2[I2 <: I2](implicit I2: I2 => I2): i0 = ???
I2() }
class I2 extends { lazy val I2 = this type i0 }
trait i0 extends i0 with I2 {
I2: I2 =>
}
implicit def I1: I2[I2] = collection.I2
}
object i0 {
val I2 = new I2
}
|
object i0 {
def I1[i6](i6: I1)(implicit i6: i6 => Boolean = this, i6: Int) = 0
val i6 = I1(i6[String] )
def i6[i6 <: i6](implicit i6: i6[i6], i6: i6[i6]): i6[i6] = i6
def i6[i6](i6: i6[i6]): i6[i6] = Nil
def i6[i6](i6: List[I1]): i6[I1, i6] = new I1[i6]
def i6[I1: i6, I1](I1: i2 => Seq[i6]) match {
case i6 => I1 match {
case i6' | I1(i6) < 2
}
def i6[@specialized I1, i2 >: i2, I1, i6, i2, i3, I4, i2, i2, i2, i3, I4, i5, i2, i6, i6](i2: i6, i6: I1, I4: i6)(i5: i6[I1, I1, i6, i6, i6, i6, i6, i6 <1, i6, i3, I4, i6, i6, i6, I1, I1, i2, i2, i2 i3, I4, i6, i6, i6] => I1): i6
}
class i6[i6](val i6: i6[_]) {
def I1[@specialized i6: i6](i6: String) = i6(i6); i2(_) { implicit I1: i6[new] }
def i2(i3: I1): i6 { type I1 = I1[i6]
type I1 = i6[i6]
override case val I1: i6[(i6, i6)]) = i6 match {
case i6: I1[_] =>
}
}
|
class i0[@specialized i0] {
def i1: i0
}
trait main extends i0 {
class i1 {}
var i1 = 0
var i1 = new i1
}
|
import language.i0
@scala.AnyRef
object i1 {
def i2(i3: String) = 2
def I4(i3: String): Any = None
trait i5 {}
def I6[i7 <: _[_]](i7: i7[i7])(implicit i7: i5[i7]): i7 = i2 + i2 + + i1() yield i7
i2(i5, this)
}
|
Note: Tests that introduce double definitions need to be compiled without -Tno-double-bindings. Make them a neg test in neg-custom-args. |
It would be great if we could get minimized test cases in the comments. No need to file separate issues for them. Just list each code snippet in a separate comment. If they are presented like this, they should be easy & fast to fix. Otherwise, the ceremony of issues and bug fixes is crushing. |
Fix more problems detected by fuzzing in #4389
Add a new kind of compiler test that only checks for compiler crashes. Add regression tests 146 tests from the list in scala#4389 that compile now. Only 3 tests from scala#4389 are still in `tests/pending/fuzzball`. Also added the latest test from the (dotty-fuzzing-results)[https://github.com/alexknvl/dotty-fuzzing-results], most of them are in `pending`.
Fix #4389: Add test infrastructure for fuzzy tests
Uh oh!
There was an error while loading. Please reload this page.
All files were generated using https://github.com/alexknvl/fuzzball
https://files.gitter.im/lampepfl/dotty/dWPj/exc-files.zip
There could be some duplicates. Most snippets have syntax errors in them. Feel free to create separate issues for individual bugs and reference them here, I'll update the list.
#4377 - already reported
#4373 - already reported
#4370 - already reported
The text was updated successfully, but these errors were encountered: