Skip to content

Commit

Permalink
Merge pull request #358 from olafurpg/master
Browse files Browse the repository at this point in the history
Rename Disable to DisableSymbol
  • Loading branch information
olafurpg authored Sep 18, 2017
2 parents d2d63a4 + 3906b5c commit 4edc623
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 9 deletions.
23 changes: 23 additions & 0 deletions readme/Rules.scalatex
Original file line number Diff line number Diff line change
Expand Up @@ -322,5 +322,28 @@
regions of code, track @issue(241) for updates.
bt1



@sect(Disable.toString)
@since("0.5.0")
This rule reports errors when a "disallowed" symbol is referenced.

Example:
@hl.scala
MyCode.scala:7: error: [DisallowSymbol.asInstanceOf] asInstanceOf is disabled.
myValue.asInstanceOf[String]
^
@h3{Configuration}

@p
By default, this rule does allows all symbols.
To disallow a symbol,

@hl.scala
Disable.symbols = [
"scala.Option.get"
"scala.Any.asInstanceOf"
]

@sect{Planned rules...}
See @lnk("here", "https://github.com/scalacenter/scalafix/labels/rule").
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package scalafix.internal.config
import metaconfig.ConfDecoder
import org.langmeta._

final case class DisableConfig(disabledSymbols: List[Symbol])
final case class DisableConfig(symbols: List[Symbol])

object DisableConfig {
lazy val empty: DisableConfig = DisableConfig(Nil)
Expand All @@ -12,6 +12,6 @@ object DisableConfig {
object DisableConfigDecoder {
implicit lazy val configDecoder: ConfDecoder[DisableConfig] =
ConfDecoder.instanceF[DisableConfig] {
_.getOrElse("disabledSymbols")(Nil: List[Symbol]) map DisableConfig.apply
_.getOrElse[List[Symbol.Global]]("symbols")(Nil).map(DisableConfig.apply)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ final case class Disable(index: SemanticdbIndex, configuration: DisableConfig)
)

private lazy val disabledSymbol: SymbolMatcher =
SymbolMatcher.normalized(configuration.disabledSymbols: _*)
SymbolMatcher.normalized(configuration.symbols: _*)

override def init(config: Conf): Configured[Rule] =
config
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@ object ScalafixRuleNames {
"VolatileLazyVal",
"ProcedureSyntax",
"ExplicitUnit",
"DottyVolatileLazyVal",
"DottyVarArgPattern",
"NoInfer",
"Sbt1",
"ExplicitResultTypes",
"ExplicitReturnTypes",
"RemoveUnusedImports",
"NoAutoTupling"
"NoAutoTupling",
"Disable"
)
}
12 changes: 7 additions & 5 deletions scalafix-tests/input/src/main/scala/test/Disable.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/*
rule = Disable
Disable.disabledSymbols = [
"_root_.scala.Any#asInstanceOf()Ljava/lang/Object;.",
"_root_.test.Disable.D#disabledFunction()Z."
Disable.symbols = [
"scala.Any.asInstanceOf"
"scala.Option.get"
"test.Disable.D.disabledFunction"
]
*/
package test
Expand All @@ -28,9 +29,10 @@ case object Disable {
trait A {
type O
}
object AA extends A {
object AA extends A {
type O = String
def asInstanceOf: O = "test"
def asInstanceOf: O = "test"
}
val yy = AA.asInstanceOf // OK, no errors
Option(1).get // assert: Disable.get
}

0 comments on commit 4edc623

Please sign in to comment.