Skip to content

Commit bf77876

Browse files
committed
Review fixes
- correctly check diffs in 'convert to named lambda parameter' code action tests - add a fallback for empty names in type based term name inference
1 parent 4facfa9 commit bf77876

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

presentation-compiler/src/main/dotty/tools/pc/utils/TermNameInference.scala

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,28 @@ object TermNameInference {
77

88
/** Single character names for types. (`Int` => `i`, `i1`, `i2`, ...) */
99
def singleLetterNameStream(typeName: String): LazyList[String] = {
10-
val typeName1 = sanitizeInput(typeName)
11-
val firstCharStr = typeName1.headOption.getOrElse('x').toLower.toString
12-
numberedStreamFromName(firstCharStr)
10+
sanitizeInput(typeName).fold(saneNamesStream) { typeName1 =>
11+
val firstCharStr = typeName1.headOption.getOrElse('x').toLower.toString
12+
numberedStreamFromName(firstCharStr)
13+
}
1314
}
1415

1516
/** Names only from upper case letters (`OnDemandSymbolIndex` => `odsi`, `odsi1`, `odsi2`, ...) */
1617
def shortNameStream(typeName: String): LazyList[String] = {
17-
val typeName1 = sanitizeInput(typeName)
18-
val upperCases = typeName1.filter(_.isUpper).map(_.toLower)
19-
val name = if (upperCases.isEmpty) typeName1 else upperCases
20-
numberedStreamFromName(name)
18+
sanitizeInput(typeName).fold(saneNamesStream) { typeName1 =>
19+
val upperCases = typeName1.filter(_.isUpper).map(_.toLower)
20+
val name = if (upperCases.isEmpty) typeName1 else upperCases
21+
numberedStreamFromName(name)
22+
}
2123
}
2224

2325
/** Names from lower case letters (`OnDemandSymbolIndex` => `onDemandSymbolIndex`, `onDemandSymbolIndex1`, ...) */
2426
def fullNameStream(typeName: String): LazyList[String] = {
25-
val typeName1 = sanitizeInput(typeName)
26-
val withFirstLower =
27-
typeName1.headOption.map(_.toLower).getOrElse('x').toString + typeName1.drop(1)
28-
numberedStreamFromName(withFirstLower)
27+
sanitizeInput(typeName).fold(saneNamesStream) { typeName1 =>
28+
val withFirstLower =
29+
typeName1.headOption.map(_.toLower).getOrElse('x').toString + typeName1.drop(1)
30+
numberedStreamFromName(withFirstLower)
31+
}
2932
}
3033

3134
/** A lazy list of names: a, b, ..., z, aa, ab, ..., az, ba, bb, ... */
@@ -42,8 +45,9 @@ object TermNameInference {
4245
loop("a")
4346
}
4447

45-
private def sanitizeInput(typeName: String): String =
46-
typeName.filter(_.isLetterOrDigit)
48+
private def sanitizeInput(typeName: String): Option[String] =
49+
val typeName1 = typeName.filter(_.isLetterOrDigit)
50+
Option.when(typeName1.nonEmpty)(typeName1)
4751

4852
private def numberedStreamFromName(name: String): LazyList[String] = {
4953
val rest = LazyList.from(1).map(name + _)

presentation-compiler/test/dotty/tools/pc/tests/edit/ConvertToNamedLambdaParametersSuite.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ class ConvertToNamedLambdaParametersSuite extends BaseCodeActionSuite:
156156
val edits = convertToNamedLambdaParameters(original)
157157
val (code, _, _) = params(original)
158158
val obtained = TextEdits.applyEdits(code, edits)
159-
assertNoDiff(obtained, obtained)
159+
assertNoDiff(expected, obtained)
160160

161161
def convertToNamedLambdaParameters(
162162
original: String,

0 commit comments

Comments
 (0)