Skip to content

Commit 746a923

Browse files
committed
Fix compilation after rebase with common code action interface
1 parent 449b189 commit 746a923

File tree

6 files changed

+34
-27
lines changed

6 files changed

+34
-27
lines changed

metals/src/main/scala/scala/meta/internal/metals/Compilers.scala

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -918,20 +918,6 @@ class Compilers(
918918
}
919919
}.getOrElse(Future.successful(Nil.asJava))
920920

921-
def convertToNamedLambdaParameters(
922-
position: TextDocumentPositionParams,
923-
token: CancelToken,
924-
): Future[ju.List[TextEdit]] = {
925-
withPCAndAdjustLsp(position) { (pc, pos, adjust) =>
926-
pc.convertToNamedLambdaParameters(
927-
CompilerOffsetParamsUtils.fromPos(pos, token)
928-
).asScala
929-
.map { edits =>
930-
adjust.adjustTextEdits(edits)
931-
}
932-
}
933-
}.getOrElse(Future.successful(Nil.asJava))
934-
935921
def implementAbstractMembers(
936922
params: TextDocumentPositionParams,
937923
token: CancelToken,

metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedLambdaParameters.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import scala.meta.internal.metals.codeactions.CodeActionBuilder
1313
import scala.meta.internal.metals.logging
1414
import scala.meta.internal.parsing.Trees
1515
import scala.meta.pc.CancelToken
16+
import scala.meta.pc.CodeActionId
1617

1718
import org.eclipse.{lsp4j => l}
1819

@@ -43,9 +44,11 @@ class ConvertToNamedLambdaParameters(
4344
)(implicit ec: ExecutionContext): Future[Unit] = {
4445
val uri = data.position.getTextDocument().getUri()
4546
for {
46-
edits <- compilers.convertToNamedLambdaParameters(
47+
edits <- compilers.codeAction(
4748
data.position,
4849
token,
50+
CodeActionId.ConvertToNamedLambdaParameters,
51+
null,
4952
)
5053
_ = logging.logErrorWhen(
5154
edits.isEmpty(),
@@ -83,6 +86,11 @@ class ConvertToNamedLambdaParameters(
8386
)
8487
Future.successful(Seq(codeAction))
8588
}
89+
.filter(_ =>
90+
compilers
91+
.supportedCodeActions(path)
92+
.contains(CodeActionId.ConvertToNamedLambdaParameters)
93+
)
8694
.getOrElse(Future.successful(Nil))
8795
}
8896

mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ public class CodeActionId {
1111
public static final String ImportMissingSymbol = "ImportMissingSymbol";
1212
public static final String InlineValue = "InlineValue";
1313
public static final String InsertInferredType = "InsertInferredType";
14+
public static final String ConvertToNamedLambdaParameters = "ConvertToNamedLambdaParameters";
1415
}

mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,6 @@ public CompletableFuture<List<TextEdit>> inlineValue(OffsetParams params) {
186186
public abstract CompletableFuture<List<TextEdit>> convertToNamedArguments(OffsetParams params,
187187
List<Integer> argIndices);
188188

189-
/**
190-
* Return the text edits for converting a wildcard lambda to a named lambda.
191-
*/
192-
public CompletableFuture<List<TextEdit>> convertToNamedLambdaParameters(OffsetParams params) {
193-
return CompletableFuture.supplyAsync(() -> {
194-
throw new DisplayableException("Convert to named lambda parameters is not available in this version of Scala");
195-
});
196-
};
197-
198189
/**
199190
* The text contents of the given file changed.
200191
*/

mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ case class ScalaPresentationCompiler(
6868
): PresentationCompiler =
6969
copy(completionItemPriority = priority)
7070

71+
override def supportedCodeActions(): ju.List[String] = List(
72+
CodeActionId.ConvertToNamedLambdaParameters
73+
).asJava
74+
7175
val compilerAccess: CompilerAccess[StoreReporter, MetalsDriver] =
7276
Scala3CompilerAccess(
7377
config,
@@ -153,8 +157,22 @@ case class ScalaPresentationCompiler(
153157
folderPath,
154158
completionItemPriority,
155159
).completions()
160+
}
156161

162+
override def codeAction[T](
163+
params: OffsetParams,
164+
codeActionId: String,
165+
codeActionPayload: ju.Optional[T]
166+
): ju.concurrent.CompletableFuture[ju.List[l.TextEdit]] = {
167+
(codeActionId, codeActionPayload) match {
168+
case (CodeActionId.ConvertToNamedLambdaParameters, _) =>
169+
convertToNamedLambdaParameters(params)
170+
case (id, _) =>
171+
CompletableFuture.failedFuture(
172+
new IllegalArgumentException(s"Unsupported action id $id")
173+
)
157174
}
175+
}
158176

159177
def definition(params: OffsetParams): CompletableFuture[DefinitionResult] =
160178
compilerAccess.withNonInterruptableCompiler(Some(params))(
@@ -364,7 +382,7 @@ case class ScalaPresentationCompiler(
364382
}
365383
end convertToNamedArguments
366384

367-
override def convertToNamedLambdaParameters(
385+
def convertToNamedLambdaParameters(
368386
params: OffsetParams
369387
): ju.concurrent.CompletableFuture[ju.List[l.TextEdit]] =
370388
val empty: Either[String, List[l.TextEdit]] = Right(List())

tests/cross/src/test/scala/tests/pc/ConvertToNamedLambdaParametersSuite.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import java.net.URI
55
import scala.meta.internal.jdk.CollectionConverters._
66
import scala.meta.internal.metals.CompilerOffsetParams
77
import scala.meta.internal.metals.TextEdits
8+
import scala.meta.pc.CodeActionId
89

910
import munit.Location
1011
import munit.TestOptions
@@ -166,8 +167,10 @@ class ConvertToNamedLambdaParametersSuite extends BaseCodeActionSuite {
166167
): List[l.TextEdit] = {
167168
val (code, _, offset) = params(original)
168169
val result = presentationCompiler
169-
.convertToNamedLambdaParameters(
170-
CompilerOffsetParams(URI.create(filename), code, offset, cancelToken)
170+
.codeAction(
171+
CompilerOffsetParams(URI.create(filename), code, offset, cancelToken),
172+
CodeActionId.ConvertToNamedLambdaParameters,
173+
null
171174
)
172175
.get()
173176
result.asScala.toList

0 commit comments

Comments
 (0)