File tree Expand file tree Collapse file tree 3 files changed +41
-50
lines changed
plugin/src/main/scala/com/typesafe/genjavadoc Expand file tree Collapse file tree 3 files changed +41
-50
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ package com.typesafe.genjavadoc
2
2
3
3
import scala .reflect .internal .ClassfileConstants
4
4
5
- trait JavaSig { this : TransformCake =>
5
+ trait JavaSig extends NeedsJavaSig { this : TransformCake =>
6
6
import global ._
7
7
import definitions ._
8
8
@@ -199,12 +199,6 @@ trait JavaSig { this: TransformCake =>
199
199
(initialSymbol.enclClassChain.exists(sym isNestedIn _)) ||
200
200
(initialSymbol.isMethod && initialSymbol.typeParams.contains(sym))))
201
201
202
- private def needsSigCollector : TypeCollector [Boolean ] =
203
- (new NeedsSigCollector [global.type ] { val global = JavaSig .this .global })
204
- .needsSigCollector
205
-
206
- private def needsJavaSig (tp : Type ) = ! settings.Ynogenericsig .value && needsSigCollector.collect(tp)
207
-
208
202
class UnknownSig extends Exception
209
203
210
204
}
Original file line number Diff line number Diff line change
1
+ package com .typesafe .genjavadoc
2
+
3
+ trait NeedsJavaSig { this : TransformCake =>
4
+
5
+ import global ._
6
+ import definitions ._
7
+
8
+ def needsJavaSig (tp : Type ): Boolean =
9
+ ! settings.Ynogenericsig .value && NeedsSigCollector .collect(tp)
10
+
11
+ private object NeedsSigCollector extends TypeCollector (false ) {
12
+ private def rebindInnerClass (pre : Type , cls : Symbol ): Type =
13
+ if (cls.owner.isClass) cls.owner.tpe else pre // why not cls.isNestedClass?
14
+ override def traverse (tp : Type ): Unit = {
15
+ if (! result) {
16
+ tp match {
17
+ case st : SubType =>
18
+ traverse(st.supertype)
19
+ case TypeRef (pre, sym, args) =>
20
+ if (sym == ArrayClass ) args foreach traverse
21
+ else if (sym.isTypeParameterOrSkolem || sym.isExistentiallyBound || ! args.isEmpty) result = true
22
+ else if (sym.isClass) traverse(rebindInnerClass(pre, sym)) // #2585
23
+ else if (! sym.owner.isPackageClass) traverse(pre)
24
+ case PolyType (_, _) | ExistentialType (_, _) =>
25
+ result = true
26
+ case RefinedType (parents, _) =>
27
+ parents foreach traverse
28
+ case ClassInfoType (parents, _, _) =>
29
+ parents foreach traverse
30
+ case at : AnnotatedType =>
31
+ traverse(at.underlying)
32
+ case _ =>
33
+ mapOver(tp)
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ }
40
+
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments