@@ -10,7 +10,11 @@ class ImplicitValueClasses(g: Global) extends AnalyzerRule(g, "implicitValueClas
10
10
11
11
private lazy val defaultClasses = Set [Symbol ](AnyClass , AnyValClass , ObjectClass )
12
12
13
- private lazy val reportOnNestedClasses = ImplicitValueClasses .Options .fromString(argument).reportOnNestedClasses
13
+ private lazy val reportOnNestedClasses = argument match {
14
+ case " all" => true
15
+ case " top-level-only" | null => false
16
+ case _ => throw new IllegalArgumentException (s " Unknown ImplicitValueClasses option: $argument" )
17
+ }
14
18
15
19
def analyze (unit : CompilationUnit ): Unit = unit.body.foreach {
16
20
case cd : ClassDef if cd.mods.hasFlag(Flag .IMPLICIT ) =>
@@ -21,10 +25,12 @@ class ImplicitValueClasses(g: Global) extends AnalyzerRule(g, "implicitValueClas
21
25
22
26
def inheritsOtherClass = tpe.baseClasses.exists { cls =>
23
27
def isDefault = defaultClasses contains cls
28
+
24
29
def isUniversalTrait = cls.isTrait && cls.superClass == AnyClass
25
30
26
31
cls != cd.symbol && ! isDefault && ! isUniversalTrait
27
32
}
33
+
28
34
def hasExactlyOneParam = paramLists.exists(lists => lists.size == 1 && lists.head.size == 1 )
29
35
30
36
def paramIsValueClass = paramLists.exists { lists =>
@@ -48,17 +54,3 @@ class ImplicitValueClasses(g: Global) extends AnalyzerRule(g, "implicitValueClas
48
54
case _ =>
49
55
}
50
56
}
51
-
52
- object ImplicitValueClasses {
53
- private sealed abstract class Options (val reportOnNestedClasses : Boolean )
54
- private object Options {
55
- private case object All extends Options (reportOnNestedClasses = true )
56
- private case object TopLevelOnly extends Options (reportOnNestedClasses = false )
57
-
58
- def fromString (s : String ): Options = s match {
59
- case " all" => All
60
- case " top-level-only" | null => TopLevelOnly
61
- case _ => throw new IllegalArgumentException (s " Unknown ImplicitValueClasses option: $s" )
62
- }
63
- }
64
- }
0 commit comments