@@ -4,7 +4,7 @@ package ast
44
55import core .*
66import util .Spans .* , Types .* , Contexts .* , Constants .* , Names .* , NameOps .* , Flags .*
7- import Symbols .* , StdNames .* , Trees .* , ContextOps .*
7+ import Symbols .* , StdNames .* , Definitions . * , Trees .* , ContextOps .*
88import Decorators .*
99import Annotations .Annotation
1010import NameKinds .{UniqueName , ContextBoundParamName , ContextFunctionParamName , DefaultGetterName , WildcardParamName }
@@ -1024,7 +1024,12 @@ object desugar {
10241024 val toStringMeth =
10251025 DefDef (nme.toString_, Nil , TypeTree (), Literal (Constant (className.toString))).withMods(Modifiers (Override | Synthetic ))
10261026
1027- companionDefs(anyRef, applyMeths ::: unapplyMeth :: toStringMeth :: companionMembers)
1027+ if Feature .shouldBehaveAsScala2 && ! mods.is(Abstract ) && originalTparams.isEmpty && arity <= MaxImplementedFunctionArity then
1028+ val tpt = originalVparamss.head.map(_.tpt) :+ untpd.Ident (cdef.name)
1029+ val parent = appliedTypeTree(scalaRuntimeDot(s " AbstractFunction $arity" .toTypeName), tpt)
1030+ companionDefs(parent, applyMeths ::: unapplyMeth :: toStringMeth :: companionMembers)
1031+ else
1032+ companionDefs(anyRef, applyMeths ::: unapplyMeth :: toStringMeth :: companionMembers)
10281033 }
10291034 else if (companionMembers.nonEmpty || companionDerived.nonEmpty || isEnum)
10301035 companionDefs(anyRef, companionMembers)
0 commit comments