Skip to content

Instantly share code, notes, and snippets.

@gakuzzzz
Created December 19, 2014 15:11
Show Gist options
  • Save gakuzzzz/9b92c0cebfa616a8f459 to your computer and use it in GitHub Desktop.
Save gakuzzzz/9b92c0cebfa616a8f459 to your computer and use it in GitHub Desktop.
doctest import
  /**
   * {{{
   * prop> import org.scalacheck.{Gen, Arbitrary}
   * prop> import org.scalacheck.Arbitrary._
   * prop> import foo.BarType
   * prop> val itemTypeGen = Gen.oneOf(BarType.values)
   * prop> implicit val barTypeArbitrary = Arbitrary(barTypeGen)
   * prop> (i: Int, t: BarType) => i > 10
   * }}}
   */
[error] foo.scala:30: could not find implicit value for parameter
a2: org.scalacheck.Arbitrary[foo.BarType]
[error]       check {
[error]             ^

  /**
   * {{{
   * prop> import org.scalacheck.{Gen, Arbitrary}
   *     | import org.scalacheck.Arbitrary._
   *     | import foo.BarType
   *     | val itemTypeGen = Gen.oneOf(BarType.values)
   *     | implicit val barTypeArbitrary = Arbitrary(barTypeGen)
   *     | (i: Int, t: BarType) => i > 10
   * }}}
   */
[info] Run completed in 3 seconds, 561 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0
[success] Total time: 12 s, completed 2014/12/20 0:10:36
@tkawachi
Copy link

私の手元では↓は正しく失敗しました。

case class BarType(b: Int)

object Foo {
  /**
   * {{{
   * prop> import org.scalacheck.{Gen, Arbitrary}
   * prop> import org.scalacheck.Arbitrary._
   * prop> val itemTypeGen = Gen.oneOf(Foo.values)
   * prop> implicit val barTypeArbitrary = Arbitrary(itemTypeGen)
   * prop> (i: Int, t: BarType) => i > 10
   * }}}
   */
  val values = Seq(BarType(1), BarType(2), BarType(3))
}

@gakuzzzz
Copy link
Author

これでうまくいきました。

package others

sealed abstract class BarType

object BarType {

  case object A extends BarType
  case object B extends BarType
  case object C extends BarType

  val values: Seq[barType] = Seq(A, B, C) // 戻り値型省略すると失敗する

}
package com.example

object Foo {
  /**
   * {{{
   * prop> import org.scalacheck.{Gen, Arbitrary}
   * prop> import org.scalacheck.Arbitrary._
   * prop> import others.BarType
   * prop> val barTypeGen = Gen.oneOf(BarType.values)
   * prop> implicit val barTypeArbitrary = Arbitrary(barTypeGen)
   * prop> (i: Int, t: BarType) => i > 10
   * }}}
   */
  val values = ???
}

どうやら sbt-doctest 関係なく、 Arbitrary の型推論に失敗していたようです。お騒がせしました

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment