Skip to content

Commit 953bdc6

Browse files
authored
Merge pull request #2190 from rochala/2166-explicit-result-types
ExplicitResultTypes: annotate members with symbolic names on Scala 2
2 parents 83a466b + 6707643 commit 953bdc6

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

scalafix-rules/src/main/scala-2/scalafix/internal/pc/ScalafixGlobal.scala

+20-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import java.{util => ju}
55

66
import scala.collection.compat._
77
import scala.collection.mutable
8+
import scala.reflect.NameTransformer
89
import scala.reflect.internal.{Flags => gf}
910
import scala.reflect.io.VirtualDirectory
1011
import scala.tools.nsc.Settings
@@ -72,6 +73,13 @@ class ScalafixGlobal(
7273
import scala.meta.internal.semanticdb.Scala._
7374
if (!symbol.isGlobal) return Nil
7475

76+
def EncodedTermName(str: String): TermName = TermName(
77+
NameTransformer.encode(str)
78+
)
79+
def EncodedTypeName(str: String): TypeName = TypeName(
80+
NameTransformer.encode(str)
81+
)
82+
7583
def loop(s: String): List[Symbol] = {
7684
if (s.isNone || s.isRootPackage) rootMirror.RootPackage :: Nil
7785
else if (s.isEmptyPackage) rootMirror.EmptyPackage :: Nil
@@ -95,20 +103,25 @@ class ScalafixGlobal(
95103
case Descriptor.None =>
96104
Nil
97105
case Descriptor.Type(value) =>
98-
val member = owner.info.decl(TypeName(value)) :: Nil
99-
if (sym.isJava) owner.info.decl(TermName(value)) :: member
106+
val member = owner.info.decl(EncodedTypeName(value)) :: Nil
107+
if (sym.isJava)
108+
owner.info.decl(EncodedTermName(value)) :: member
100109
else member
101110
case Descriptor.Term(value) =>
102-
owner.info.decl(TermName(value)) :: Nil
111+
owner.info.decl(EncodedTermName(value)) :: Nil
103112
case Descriptor.Package(value) =>
104-
owner.info.decl(TermName(value)) :: Nil
113+
owner.info.decl(EncodedTermName(value)) :: Nil
105114
case Descriptor.Parameter(value) =>
106-
owner.paramss.flatten.filter(_.name.containsName(value))
115+
owner.paramss.flatten.filter(
116+
_.name.containsName(EncodedTermName(value))
117+
)
107118
case Descriptor.TypeParameter(value) =>
108-
owner.typeParams.filter(_.name.containsName(value))
119+
owner.typeParams.filter(
120+
_.name.containsName(EncodedTypeName(value))
121+
)
109122
case Descriptor.Method(value, _) =>
110123
owner.info
111-
.decl(TermName(value))
124+
.decl(EncodedTermName(value))
112125
.alternatives
113126
.iterator
114127
.filter(sym => semanticdbSymbol(sym) == s)

scalafix-tests/input/src/main/scala-2/test/explicitResultTypes/ExplicitResultTypesBase.scala

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ object ExplicitResultTypesBase {
3636
x + 2
3737
object ExtraSpace {
3838
def * = "abc".length
39+
def ! = "abc".length
3940
def foo_ = "abc".length
4041
def `x` = "abc".length
4142
def `x ` = "abc".length

scalafix-tests/output/src/main/scala-2/test/explicitResultTypes/ExplicitResultTypesBase.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ object ExplicitResultTypesBase {
3131
// comment
3232
x + 2
3333
object ExtraSpace {
34-
def * = "abc".length
34+
def * : Int = "abc".length
35+
def ! : Int = "abc".length
3536
def foo_ : Int = "abc".length
3637
def `x`: Int = "abc".length
3738
def `x ` = "abc".length

0 commit comments

Comments
 (0)