Skip to content

Instantly share code, notes, and snippets.

View zainab-ali's full-sized avatar

Zainab Ali zainab-ali

View GitHub Profile
@zainab-ali
zainab-ali / scalameta-type-substitution.sc
Created January 21, 2026 13:49
Scalameta `q` macro behaves strangely when substituting types
//> using scala 2.13.18
//> using dep "org.scalameta::scalameta::4.14.2"
import scala.meta._
val fooType = t"Foo"
val code = q"""
type Bar = ${fooType}
val qux = "any message"
"""
@zainab-ali
zainab-ali / scalameta-type-substitution.sc
Last active January 21, 2026 14:10
Scalameta 4.14.3+ `source` macro has strange behaviour when substituting types
//> using scala 2.13.18
//> using dep "org.scalameta::scalameta::4.14.3"
// Affected versions: 4.14.3, 4.14.4, 4.14.5
// Note that 4.14.2 is correct
import scala.meta._
// codeA has a type substitution
val fooType = t"Foo"
@zainab-ali
zainab-ali / ShutdownSuite.test.scala
Created January 6, 2026 18:26
Example of `registerTest` usage
//> using scala 3.7.4
//> using dep "org.typelevel::weaver-cats::0.11.3"
import weaver.*
import cats.effect.*
object ShutdownSuite extends SimpleIOSuite with Expectations.Helpers {
private val shutdownHook: Resource[IO, Unit] = Resource.onFinalize(IO.println("Shutting down."))
@zainab-ali
zainab-ali / MultiLineDiffExampleTest.scala
Last active November 6, 2025 15:49
Demonstrates better diffs using multi-line strings.
//> using scala 3.7.3
//> using repository ivy2Local
//> using dep "org.typelevel::weaver-cats::0.10.1"
import weaver.*
case class Address(country: String, city: String)
case class Person(address: Address)
val expected = List(
Person(Address("UK", "London")),
@zainab-ali
zainab-ali / Provider.test.scala
Created October 1, 2025 14:05
Demonstrates usage of `Provider` vs `SharedResourceSuite`
//> using scala "3.7.0"
//> using test.dep org.typelevel::weaver-cats::0.11-5acfd6a-SNAPSHOT
//> using repository "https://central.sonatype.com/repository/maven-snapshots"
import cats.effect.*
import cats.*
import cats.data.OptionT
import weaver.*
import fs2.*
type MyEffect[A] = OptionT[IO, A]
@zainab-ali
zainab-ali / WeaverScalaNativeBug.scala
Last active September 23, 2025 12:36
weaver's shading logic for munit-diff causes linking errors in Scala Native
//> using scala "3.7.0"
//> using platform native
//> using repository "https://central.sonatype.com/repository/maven-snapshots"
// The linking error occurs in the latest published version:
//> using nativeVersion 0.4.17
//> using dep org.typelevel::weaver-cats::0.10.1
// They also occur in the 0.5 version, regardless of the version of munit-diff:
// using nativeVersion 0.5.7
@zainab-ali
zainab-ali / DisciplineBug.test.scala
Created September 19, 2025 13:47
Demonstrates bugs in DisciplineFSuite
//> using scala "3.7.3"
//> using test.dep org.typelevel::weaver-cats::0.10.1
//> using test.dep org.typelevel::weaver-discipline::0.10.1
import weaver.*
import weaver.discipline.*
import cats.effect.IO
object DisciplineBug extends SimpleIOSuite with DisciplineFSuite[IO] {
//> using scala "3.7.3"
//> using test.dep org.typelevel::weaver-cats::0.10.1
//> using test.dep org.typelevel::weaver-scalacheck::0.10.1
import weaver.*
import weaver.scalacheck.*
import org.scalacheck.rng.Seed
object CheckersBug extends SimpleIOSuite with Checkers {
@zainab-ali
zainab-ali / NonTerminatingSuite.test.scala
Created September 5, 2025 11:42
weaver-issue-83-repo
//> using scala "3.7.0"
//> using dep "org.typelevel::weaver-cats::0.10.1"
//> using dep "org.typelevel::weaver-scalacheck::0.10.1"
import org.scalacheck.{Arbitrary, Gen}
import weaver.*
import weaver.scalacheck.*
object NonTerminatingSuite extends SimpleIOSuite with Checkers:
test("Fix me") {
@zainab-ali
zainab-ali / MySuite.test.scala
Created September 2, 2025 10:56
Weaver SourceLocation macro bug
//> using scala "3.7.0"
//> using dep "org.typelevel::weaver-cats::0.10.0"
import weaver.*
object MySuite extends FunSuite:
test("parse and compare valid semver"):
expect.all(
1 > 2
)