From e8bb288f3437a576d8b880ba44f8a858033ff5c9 Mon Sep 17 00:00:00 2001 From: youM Date: Tue, 16 Dec 2025 02:17:10 +0900 Subject: [PATCH] Update: metals(scala-lsp) version 1.6.2 -> 1.6.4 (#838) --- src/solidlsp/language_servers/scala_language_server.py | 7 +++++-- .../repos/scala/src/main/scala/com/example/Main.scala | 9 +++++++++ test/solidlsp/scala/test_scala_language_server.py | 4 ++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/solidlsp/language_servers/scala_language_server.py b/src/solidlsp/language_servers/scala_language_server.py index a274f652..e835c36f 100644 --- a/src/solidlsp/language_servers/scala_language_server.py +++ b/src/solidlsp/language_servers/scala_language_server.py @@ -57,9 +57,11 @@ class ScalaLanguageServer(SolidLanguageServer): """ assert shutil.which("java") is not None, "JDK is not installed or not in PATH." + metals_version = "1.6.4" + metals_home = os.path.join(cls.ls_resources_dir(solidlsp_settings), "metals-lsp") os.makedirs(metals_home, exist_ok=True) - metals_executable = os.path.join(metals_home, "metals") + metals_executable = os.path.join(metals_home, metals_version, "metals") coursier_command_path = shutil.which("coursier") cs_command_path = shutil.which("cs") assert cs_command_path is not None or coursier_command_path is not None, "coursier is not installed or not in PATH." @@ -82,7 +84,8 @@ class ScalaLanguageServer(SolidLanguageServer): log.info("'cs' command installed successfully.") log.info(f"metals executable not found at {metals_executable}, bootstrapping...") - artifact = "org.scalameta:metals_2.13:1.6.2" + subprocess.run(["mkdir", "-p", os.path.join(metals_home, metals_version)], check=True) + artifact = f"org.scalameta:metals_2.13:{metals_version}" cmd = [ cs_command_path, "bootstrap", diff --git a/test/resources/repos/scala/src/main/scala/com/example/Main.scala b/test/resources/repos/scala/src/main/scala/com/example/Main.scala index f7197ec3..2407efec 100644 --- a/test/resources/repos/scala/src/main/scala/com/example/Main.scala +++ b/test/resources/repos/scala/src/main/scala/com/example/Main.scala @@ -17,4 +17,13 @@ object Main { def add(a: Int, b: Int): Int = { a + b } + + // https://github.com/oraios/serena/issues/688 + def someMethod(config: Config): Unit = { + val str = config.field1 + + println(str) + } + + case class Config(field1:String) } diff --git a/test/solidlsp/scala/test_scala_language_server.py b/test/solidlsp/scala/test_scala_language_server.py index 9a25009a..9c498416 100644 --- a/test/solidlsp/scala/test_scala_language_server.py +++ b/test/solidlsp/scala/test_scala_language_server.py @@ -34,6 +34,10 @@ def test_scala_document_symbols(scala_ls): assert symbol_names[3] == "result" assert symbol_names[4] == "sum" assert symbol_names[5] == "add" + assert symbol_names[6] == "someMethod" + assert symbol_names[7] == "str" + assert symbol_names[8] == "Config" + assert symbol_names[9] == "field1" # confirm https://github.com/oraios/serena/issues/688 def test_scala_references_within_same_file(scala_ls):