Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
xuwei-k / img1.png
Last active January 22, 2025 01:10
img1.png
package fix
import scala.meta.Defn
import scala.meta.Term
import scala.meta.transversers.*
import scalafix.Patch
import scalafix.lint.Diagnostic
import scalafix.lint.LintSeverity
import scalafix.v1.SyntacticDocument
import scalafix.v1.SyntacticRule
object ScalaRunTimeForScalaJS {
def main(a: Array[String]): Unit = {
println(replStringOf((1 to 200).toList, 10))
}
def replStringOf(arg: Any, maxElements: Int): String =
stringOf(arg, maxElements) match {
case null => "null toString"
case s if s.indexOf('\n') >= 0 => "\n" + s + "\n"
case s => s + "\n"
import org.wartremover.WartTraverser
import org.wartremover.WartUniverse
object StringTailInit extends WartTraverser {
def apply(u: WartUniverse): u.Traverser =
new u.Traverser(this) {
import q.reflect.*
override def traverseTree(tree: Tree)(owner: Symbol): Unit = {
tree match {
case Select(Apply(Ident("augmentString"), _ :: Nil), "init" | "tail") =>
@xuwei-k
xuwei-k / Main.scala
Last active December 2, 2024 23:43
Scala 3 generic numeric literals example
package example
import scala.compiletime.testing.typeCheckErrors
object Main {
val x1: PosInt = 2
def main(args: Array[String]): Unit = {
println(x1)
package com.thealp.paripi.shared.warts
import org.wartremover.WartTraverser
import org.wartremover.WartUniverse
object OverrideMod extends WartTraverser {
override def apply(u: WartUniverse): u.Traverser =
new u.Traverser(this) {
import q.reflect.*
override def traverseTree(tree: Tree)(owner: Symbol): Unit = {
import sbt.*
import sbt.Keys.*
object CountImplicitKeywordPlugin extends AutoPlugin {
override def trigger: PluginTrigger = allRequirements
object autoImport {
val implicitKeyword = taskKey[Int]("")
val allImplicitKeyword = taskKey[Seq[(String, Int)]]("")
}
import autoImport.*
package fix
import scala.meta._
import scalafix.v1._
class ImplicitClassExtension extends SyntacticRule("ImplicitClassExtension") {
val exclude: Seq[String] = Seq(
// 書き換えるとoverload衝突する場合や、呼び出しの優先順位変わってエラーになるものなど、
// 下記の条件で除外しきれなかった例外的なものをfile単位で除くためにここに記述
)
import scala.compiletime.ops.int
import scala.compiletime.ops.long
import scala.compiletime.ops.double
type Factorial[A <: Int] =
Factorial0[A, 1L]
type Factorial0[A <: Int, B <: Long] <: Long =
int.<[A, 1] match
case true =>
import scala.compiletime.ops.int
import scala.compiletime.ops.double
type F1[A <: Int] <: Double =
int.%[A, 2] match
case 0 =>
1d
case 1 =>
-1d