diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala index f8924a6d87..d607d0e017 100644 --- a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala +++ b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala @@ -424,10 +424,22 @@ class ModelFactory(val global: Global, val settings: doc.Settings) { thisFactory Some(new NonTemplateMemberImpl(bSym, inTpl) with Val { override def isVar = true }) - else if (bSym.isMethod && !bSym.hasAccessorFlag && !bSym.isConstructor && !bSym.isModule) - Some(new NonTemplateParamMemberImpl(bSym, inTpl) with HigherKindedImpl with Def { + else if (bSym.isMethod && !bSym.hasAccessorFlag && !bSym.isConstructor && !bSym.isModule) { + val cSym = { // This unsightly hack closes issue #4086. + if (bSym == definitions.Object_synchronized) { + val cSymInfo = bSym.info match { + case PolyType(ts, MethodType(List(bp), mt)) => + val cp = bp.cloneSymbol.setInfo(appliedType(definitions.ByNameParamClass.typeConstructor, List(bp.info))) + PolyType(ts, MethodType(List(cp), mt)) + } + bSym.cloneSymbol.setInfo(cSymInfo) + } + else bSym + } + Some(new NonTemplateParamMemberImpl(cSym, inTpl) with HigherKindedImpl with Def { override def isDef = true }) + } else if (bSym.isConstructor) Some(new NonTemplateParamMemberImpl(bSym, inTpl) with Constructor { override def isConstructor = true |