Skip to content

Commit f2fc8d8

Browse files
committed
Fix explicit result types for Scala 2
1 parent 21ef938 commit f2fc8d8

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import scala.{meta => m}
1717

1818
import scala.meta.internal.semanticdb.scalac.SemanticdbOps
1919
import scala.meta.io.AbsolutePath
20+
import scala.reflect.NameTransformer
2021

2122
object ScalafixGlobal {
2223
def newCompiler(
@@ -72,6 +73,9 @@ class ScalafixGlobal(
7273
import scala.meta.internal.semanticdb.Scala._
7374
if (!symbol.isGlobal) return Nil
7475

76+
def EncodedTermName(str: String): TermName = TermName(NameTransformer.encode(str))
77+
def EncodedTypeName(str: String): TypeName = TypeName(NameTransformer.encode(str))
78+
7579
def loop(s: String): List[Symbol] = {
7680
if (s.isNone || s.isRootPackage) rootMirror.RootPackage :: Nil
7781
else if (s.isEmptyPackage) rootMirror.EmptyPackage :: Nil
@@ -95,20 +99,20 @@ class ScalafixGlobal(
9599
case Descriptor.None =>
96100
Nil
97101
case Descriptor.Type(value) =>
98-
val member = owner.info.decl(TypeName(value)) :: Nil
99-
if (sym.isJava) owner.info.decl(TermName(value)) :: member
102+
val member = owner.info.decl(EncodedTypeName(value)) :: Nil
103+
if (sym.isJava) owner.info.decl(EncodedTermName(value)) :: member
100104
else member
101105
case Descriptor.Term(value) =>
102-
owner.info.decl(TermName(value)) :: Nil
106+
owner.info.decl(EncodedTermName(value)) :: Nil
103107
case Descriptor.Package(value) =>
104-
owner.info.decl(TermName(value)) :: Nil
108+
owner.info.decl(EncodedTermName(value)) :: Nil
105109
case Descriptor.Parameter(value) =>
106-
owner.paramss.flatten.filter(_.name.containsName(value))
110+
owner.paramss.flatten.filter(_.name.containsName(EncodedTermName(value)))
107111
case Descriptor.TypeParameter(value) =>
108-
owner.typeParams.filter(_.name.containsName(value))
112+
owner.typeParams.filter(_.name.containsName(EncodedTypeName(value)))
109113
case Descriptor.Method(value, _) =>
110114
owner.info
111-
.decl(TermName(value))
115+
.decl(EncodedTermName(value))
112116
.alternatives
113117
.iterator
114118
.filter(sym => semanticdbSymbol(sym) == s)

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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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)