Skip to content

Commit ef65ffd

Browse files
committed
wip
1 parent 5df2447 commit ef65ffd

File tree

3 files changed

+41
-50
lines changed

3 files changed

+41
-50
lines changed

plugin/src/main/scala/com/typesafe/genjavadoc/JavaSig.scala

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.typesafe.genjavadoc
22

33
import scala.reflect.internal.ClassfileConstants
44

5-
trait JavaSig { this: TransformCake =>
5+
trait JavaSig extends NeedsJavaSig { this: TransformCake =>
66
import global._
77
import definitions._
88

@@ -199,12 +199,6 @@ trait JavaSig { this: TransformCake =>
199199
(initialSymbol.enclClassChain.exists(sym isNestedIn _)) ||
200200
(initialSymbol.isMethod && initialSymbol.typeParams.contains(sym))))
201201

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-
208202
class UnknownSig extends Exception
209203

210204
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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+

plugin/src/main/scala/com/typesafe/genjavadoc/NeedsSigCollector.scala

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)