Skip to content

Instantly share code, notes, and snippets.

View olafurpg's full-sized avatar

Ólafur Páll Geirsson olafurpg

View GitHub Profile
diff --git a/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala b/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
index d78f809..a13c972 100644
--- a/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
+++ b/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
@@ -17,6 +17,9 @@ import akka.util.Switch
import scala.concurrent.duration.Duration
import scala.util.control.NonFatal
import java.util.concurrent.TimeUnit
+import akka.actor.ActorSystem
+import akka.event.LoggingAdapter
diff --git a/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala b/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
index d78f809..a13c972 100644
--- a/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
+++ b/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
@@ -17,6 +17,9 @@ import akka.util.Switch
import scala.concurrent.duration.Duration
import scala.util.control.NonFatal
import java.util.concurrent.TimeUnit
+import akka.actor.ActorSystem
+import akka.event.LoggingAdapter
@olafurpg
olafurpg / akka.diff
Last active September 6, 2017 09:33
commit c6a47ed6c2f5a91fb7394ea7e9a3695af029aa0c
Author: Ólafur Páll Geirsson <[email protected]>
Date: Wed Sep 6 11:29:51 2017 +0200
Undo manual fixes.
diff --git a/akka-actor/src/main/scala/akka/event/EventBus.scala b/akka-actor/src/main/scala/akka/event/EventBus.scala
index ff76b3c..d61fce4 100644
--- a/akka-actor/src/main/scala/akka/event/EventBus.scala
+++ b/akka-actor/src/main/scala/akka/event/EventBus.scala
@olafurpg
olafurpg / NoDefaultParams.md
Created September 8, 2017 11:45
Default parameter values are bad, let me explain why

Default parameter values should be avoided in favor of method overloading. Why?

Methods as functions

def add(a: Int, b: Int = 2) = a + b
List(1).map(add) // Compile error

def add2(a: Int) = add2(a, b = 2)
def add2(a: Int, b: Int) = a + b
@olafurpg
olafurpg / NoDefaultParameters.scala
Last active September 8, 2017 15:56
Scalafix linter rule to disallow default parameter values
import scalafix._
import scala.meta._
case object NoDefaultParams extends Rule("NoDefaultParams") {
val error = LintCategory.error(
"Default parameter values should be avoided, use method overloading instead. " +
"Details: https://gist.github.com/olafurpg/38699f591329c3bcff52b7412dcb696b"
)
override def check(ctx: RuleCtx): List[LintMessage] = ctx.tree.collect {
case param"..$_ $_: $_ = ${Some(default)}" =>
error.at(s"default parameter values are not allowed.", default.pos)
@olafurpg
olafurpg / NoDefaultParamsTest.scala
Created September 8, 2017 12:27
Test case for NoDefaultParams rule
/*
rule = "https://gist.githubusercontent.com/olafurpg/7b022c7120156716def282028b091e8b/raw/2a83cfc22462804c53a9fb67d0c0220b8b82f124/NoDefaultParameters.scala"
*/
package test
class NoDefaultParams {
def foo(e: Int = 2) = e // assert: NoDefaultParams
def bar(e: Int) = e
}

Test

   2: _root_.spire.math.FpFilterExact#`===`(Lspire/math/FpFilter;Lspire/algebra/Signed;Lalgebra/ring/Rng;)Z.
   2: _root_.records.test.Typecheck.typed(Ljava/lang/String;)V.
   2: _root_.sourcecode.Text.apply(Ljava/lang/Object;)Lsourcecode/Text;.
   2: _root_.spire.syntax.IsRealOps#isWhole()Z.
   2: _root_.monix.types.Functor.Ops#map(Lscala/Function1;)Ljava/lang/Object;.
   2: _root_.spire.syntax.BitStringOps#bitCount()I.
   2: _root_.com.typesafe.scalalogging.Logger#debug(Ljava/lang/String;Ljava/lang/Throwable;)V.