From 628c9363bc3993c5ddc13cf608cbc868183653b5 Mon Sep 17 00:00:00 2001 From: Sebastien Coquelin Date: Thu, 28 Sep 2023 18:45:17 -0700 Subject: [PATCH] Upgrade to Scala 2.13.12 --- README.md | 4 +- dt_patches/dt_patch_test.sh | 6 +- .../test_dt_patches_user_srcjar/WORKSPACE | 6 + examples/semanticdb/WORKSPACE | 2 +- .../scalac/deps_tracking_reporter/BUILD | 11 + .../after_2_13_12/DepsTrackingReporter.java | 320 ++++++++++++++++++ .../before_2_13_12}/DepsTrackingReporter.java | 0 .../io/bazel/rulesscala/scalac/reporter/BUILD | 2 +- test/shell/test_scala_config.sh | 2 +- test_version.sh | 2 +- third_party/repositories/scala_2_13.bzl | 16 +- third_party/repositories/scala_3_1.bzl | 8 +- third_party/repositories/scala_3_2.bzl | 8 +- third_party/repositories/scala_3_3.bzl | 8 +- 14 files changed, 368 insertions(+), 27 deletions(-) create mode 100644 src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD create mode 100644 src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/after_2_13_12/DepsTrackingReporter.java rename src/java/io/bazel/rulesscala/scalac/{reporter => deps_tracking_reporter/before_2_13_12}/DepsTrackingReporter.java (100%) diff --git a/README.md b/README.md index d6047a952..70a0d5d3a 100644 --- a/README.md +++ b/README.md @@ -145,13 +145,13 @@ Previous minor versions may work but are supported only on a best effort basis. To configure Scala version you must call `scala_config(scala_version = "2.xx.xx")` and configure dependencies by declaring [scala_toolchain](docs/scala_toolchain.md). For a quick start you can use `scala_repositories()` and `scala_register_toolchains()`, which have -dependency providers configured for `2.11.12`, `2.12.18` and `2.13.11` versions. +dependency providers configured for `2.11.12`, `2.12.18` and `2.13.12` versions. ```starlark # WORKSPACE load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config") -scala_config(scala_version = "2.13.11") +scala_config(scala_version = "2.13.12") load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains") rules_proto_dependencies() diff --git a/dt_patches/dt_patch_test.sh b/dt_patches/dt_patch_test.sh index ef32abde4..b0cc017df 100755 --- a/dt_patches/dt_patch_test.sh +++ b/dt_patches/dt_patch_test.sh @@ -109,6 +109,7 @@ run_test_local test_compiler_patch 2.13.7 run_test_local test_compiler_patch 2.13.8 run_test_local test_compiler_patch 2.13.10 run_test_local test_compiler_patch 2.13.11 +run_test_local test_compiler_patch 2.13.12 run_test_local test_compiler_srcjar_error 2.12.11 run_test_local test_compiler_srcjar_error 2.12.12 @@ -120,4 +121,7 @@ run_test_local test_compiler_srcjar 2.12.14 run_test_local test_compiler_srcjar 2.12.15 run_test_local test_compiler_srcjar 2.12.16 run_test_local test_compiler_srcjar_nonhermetic 2.12.17 -run_test_local test_compiler_srcjar_nonhermetic 2.12.18 \ No newline at end of file +run_test_local test_compiler_srcjar_nonhermetic 2.12.18 + +run_test_local test_compiler_srcjar_nonhermetic 2.13.11 +run_test_local test_compiler_srcjar_nonhermetic 2.13.12 \ No newline at end of file diff --git a/dt_patches/test_dt_patches_user_srcjar/WORKSPACE b/dt_patches/test_dt_patches_user_srcjar/WORKSPACE index 59dffe3d3..0ba7a41ce 100644 --- a/dt_patches/test_dt_patches_user_srcjar/WORKSPACE +++ b/dt_patches/test_dt_patches_user_srcjar/WORKSPACE @@ -91,6 +91,12 @@ srcjars_by_version = { "2.12.18": { "url": "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.12.18/scala-compiler-2.12.18-sources.jar?foo", }, + "2.13.11": { + "url": "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.11/scala-compiler-2.13.11-sources.jar?foo", + }, + "2.13.12": { + "url": "https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.12/scala-compiler-2.13.12-sources.jar?foo", + }, } rules_scala_setup(scala_compiler_srcjar = srcjars_by_version[SCALA_VERSION]) diff --git a/examples/semanticdb/WORKSPACE b/examples/semanticdb/WORKSPACE index d3c2ff783..d569fcf4c 100644 --- a/examples/semanticdb/WORKSPACE +++ b/examples/semanticdb/WORKSPACE @@ -21,7 +21,7 @@ local_repository( load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config") -scala_config(scala_version = "2.13.11") +scala_config(scala_version = "2.13.12") load( "@io_bazel_rules_scala//scala:scala.bzl", diff --git a/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD new file mode 100644 index 000000000..87c33e88c --- /dev/null +++ b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/BUILD @@ -0,0 +1,11 @@ +load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION", "SCALA_MINOR_VERSION") + +filegroup( + name = "deps_tracking_reporter", + srcs = [ + "before_2_13_12/DepsTrackingReporter.java", + ] if SCALA_MAJOR_VERSION.startswith("2.11") or SCALA_MAJOR_VERSION.startswith("2.12") or (SCALA_MAJOR_VERSION.startswith("2.13") and int(SCALA_MINOR_VERSION) < 12) else [ + "after_2_13_12/DepsTrackingReporter.java", + ], + visibility = ["//visibility:public"], +) diff --git a/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/after_2_13_12/DepsTrackingReporter.java b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/after_2_13_12/DepsTrackingReporter.java new file mode 100644 index 000000000..3ac3251ae --- /dev/null +++ b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/after_2_13_12/DepsTrackingReporter.java @@ -0,0 +1,320 @@ +package io.bazel.rulesscala.scalac.reporter; + +import io.bazel.rulesscala.deps.proto.ScalaDeps; +import io.bazel.rulesscala.deps.proto.ScalaDeps.Dependency; +import io.bazel.rulesscala.deps.proto.ScalaDeps.Dependency.Kind; +import io.bazel.rulesscala.scalac.compileoptions.CompileOptions; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.jar.JarFile; +import java.util.stream.Collectors; +import scala.collection.immutable.List$; +import scala.reflect.internal.util.CodeAction; +import scala.reflect.internal.util.NoPosition$; +import scala.reflect.internal.util.Position; +import scala.tools.nsc.Settings; +import scala.tools.nsc.reporters.ConsoleReporter; +import scala.tools.nsc.reporters.Reporter; + +import javax.print.attribute.standard.Severity; + +public class DepsTrackingReporter extends ConsoleReporter { + + private static final String HJAR_JAR_SUFFIX = "-hjar.jar"; + private static final String IJAR_JAR_SUFFIX = "-ijar.jar"; + private final Set usedJars = new HashSet<>(); + + private final Map jarToTarget = new HashMap<>(); + private final Map indirectJarToTarget = new HashMap<>(); + + private final Set ignoredTargets; + private final Set directTargets; + + private final CompileOptions ops; + public final Reporter delegateReporter; + private Set astUsedJars = new HashSet<>(); + + public DepsTrackingReporter(Settings settings, CompileOptions ops, Reporter delegate) { + super(settings); + this.ops = ops; + this.delegateReporter = delegate; + + if (ops.directJars.length == ops.directTargets.length) { + for (int i = 0; i < ops.directJars.length; i++) { + jarToTarget.put(ops.directJars[i], ops.directTargets[i]); + } + } else { + throw new IllegalArgumentException( + "mismatched size: directJars " + ops.directJars.length + " vs directTargets" + + ops.directTargets.length); + } + + if (ops.indirectJars.length == ops.indirectTargets.length) { + for (int i = 0; i < ops.indirectJars.length; i++) { + indirectJarToTarget.put(ops.indirectJars[i], ops.indirectTargets[i]); + } + } else { + throw new IllegalArgumentException( + "mismatched size: indirectJars " + ops.directJars.length + " vs indirectTargets " + + ops.directTargets.length); + } + + ignoredTargets = Arrays.stream(ops.unusedDepsIgnoredTargets).collect(Collectors.toSet()); + directTargets = Arrays.stream(ops.directTargets).collect(Collectors.toSet()); + } + + private boolean isDependencyTrackingOn() { + return "ast-plus".equals(ops.dependencyTrackingMethod) + && (!"off".equals(ops.strictDepsMode) || !"off".equals(ops.unusedDependencyCheckerMode)); + } + + @Override + public void doReport(Position pos, String msg, Severity severity, scala.collection.immutable.List actions) { + if (msg.startsWith("DT:")) { + if (isDependencyTrackingOn()) { + parseOpenedJar(msg); + } + } else { + if (delegateReporter != null) { + delegateReporter.doReport(pos, msg, severity, List$.MODULE$.empty()); + } else { + super.doReport(pos, msg, severity, List$.MODULE$.empty()); + } + } + } + + private void parseOpenedJar(String msg) { + String jar = msg.split(":")[1]; + + //normalize path separators (scalac passes os-specific path separators.) + jar = jar.replace("\\", "/"); + + // track only jars from dependency targets + // this should exclude things like rt.jar which come from JDK + if (jarToTarget.containsKey(jar) || indirectJarToTarget.containsKey(jar)) { + usedJars.add(jar); + } + } + + public void prepareReport() throws IOException { + Set usedTargets = new HashSet<>(); + Set usedDeps = new HashSet<>(); + + for (String jar : usedJars) { + String target = jarToTarget.get(jar); + + if (target == null) { + target = indirectJarToTarget.get(jar); + } + + if (target.startsWith("Unknown")) { + target = jarLabel(jar); + } + + if (target == null) { + // probably a bug if we get here + continue; + } + + Dependency dep = buildDependency( + jar, + target, + astUsedJars.contains(jar) ? Kind.EXPLICIT : Kind.IMPLICIT, + ignoredTargets.contains(target) + ); + + usedTargets.add(target); + usedDeps.add(dep); + } + + Set unusedDeps = new HashSet<>(); + for (int i = 0; i < ops.directTargets.length; i++) { + String directTarget = ops.directTargets[i]; + if (usedTargets.contains(directTarget)) { + continue; + } + + unusedDeps.add( + buildDependency( + ops.directJars[i], + directTarget, + Kind.UNUSED, + ignoredTargets.contains(directTarget) || "off".equals(ops.unusedDependencyCheckerMode) + ) + ); + } + + writeSdepsFile(usedDeps, unusedDeps); + + Reporter reporter = this.delegateReporter != null ? this.delegateReporter : this; + reportDeps(usedDeps, unusedDeps, reporter); + } + + private Dependency buildDependency(String jar, String target, Kind kind, boolean ignored) { + ScalaDeps.Dependency.Builder dependecyBuilder = ScalaDeps.Dependency.newBuilder(); + + dependecyBuilder.setKind(kind); + dependecyBuilder.setLabel(target); + dependecyBuilder.setIjarPath(jar); + dependecyBuilder.setPath(guessFullJarPath(jar)); + dependecyBuilder.setIgnored(ignored); + + return dependecyBuilder.build(); + } + + private void writeSdepsFile(Collection usedDeps, Collection unusedDeps) + throws IOException { + + ScalaDeps.Dependencies.Builder builder = ScalaDeps.Dependencies.newBuilder(); + builder.setRuleLabel(ops.currentTarget); + builder.setDependencyTrackingMethod(ops.dependencyTrackingMethod); + builder.addAllDependency(usedDeps); + builder.addAllDependency(unusedDeps); + + try (OutputStream outputStream = new BufferedOutputStream( + Files.newOutputStream(Paths.get(ops.scalaDepsFile)))) { + outputStream.write(builder.build().toByteArray()); + } + } + + private void reportDeps(Collection usedDeps, Collection unusedDeps, + Reporter reporter) { + if (ops.dependencyTrackingMethod.equals("ast-plus")) { + + if (!ops.strictDepsMode.equals("off")) { + boolean isWarning = ops.strictDepsMode.equals("warn"); + StringBuilder strictDepsReport = new StringBuilder("Missing strict dependencies:\n"); + StringBuilder compilerDepsReport = new StringBuilder("Missing compiler dependencies:\n"); + int strictDepsCount = 0; + int compilerDepsCount = 0; + for (Dependency dep : usedDeps) { + String depReport = addDepMessage(dep); + if (dep.getIgnored()) { + continue; + } + + if (directTargets.contains(dep.getLabel())) { + continue; + } + + if (dep.getKind() == Kind.EXPLICIT) { + strictDepsCount++; + strictDepsReport + .append(isWarning ? "warning: " : "error: ") + .append(depReport); + } else { + compilerDepsCount++; + compilerDepsReport + .append(isWarning ? "warning: " : "error: ") + .append(depReport); + } + } + + if (strictDepsCount > 0) { + if (ops.strictDepsMode.equals("warn")) { + reporter.warning(NoPosition$.MODULE$, strictDepsReport.toString(), List$.MODULE$.empty()); + } else { + reporter.error(NoPosition$.MODULE$, strictDepsReport.toString(), List$.MODULE$.empty()); + } + } + + if (!ops.compilerDepsMode.equals("off") && compilerDepsCount > 0) { + if (ops.compilerDepsMode.equals("warn")) { + reporter.warning(NoPosition$.MODULE$, compilerDepsReport.toString(), List$.MODULE$.empty()); + } else { + reporter.error(NoPosition$.MODULE$, compilerDepsReport.toString(), List$.MODULE$.empty()); + } + } + } + + if (!ops.unusedDependencyCheckerMode.equals("off")) { + boolean isWarning = ops.unusedDependencyCheckerMode.equals("warn"); + StringBuilder unusedDepsReport = new StringBuilder("Unused dependencies:\n"); + int count = 0; + for (Dependency dep : unusedDeps) { + if (dep.getIgnored()) { + continue; + } + count++; + unusedDepsReport + .append(isWarning ? "warning: " : "error: ") + .append(removeDepMessage(dep)); + } + if (count > 0) { + if (isWarning) { + reporter.warning(NoPosition$.MODULE$, unusedDepsReport.toString(), List$.MODULE$.empty()); + } else if (ops.unusedDependencyCheckerMode.equals("error")) { + reporter.error(NoPosition$.MODULE$, unusedDepsReport.toString(), List$.MODULE$.empty()); + } + } + } + } + } + + private String addDepMessage(Dependency dep) { + String target = dep.getLabel(); + String jar = dep.getPath(); + + String message = "Target '" + target + "' (via jar: ' " + jar + " ') " + + "is being used by " + ops.currentTarget + + " but is is not specified as a dependency, please add it to the deps.\n" + + "You can use the following buildozer command:\n"; + String command = "buildozer 'add deps " + target + "' " + ops.currentTarget + "\n"; + return message + command; + } + + private String removeDepMessage(Dependency dep) { + String target = dep.getLabel(); + String jar = dep.getPath(); + + String message = "Target '" + target + "' (via jar: ' " + jar + " ') " + + "is specified as a dependency to " + ops.currentTarget + + " but isn't used, please remove it from the deps.\n" + + "You can use the following buildozer command:\n"; + String command = "buildozer 'remove deps " + target + "' " + ops.currentTarget + "\n"; + + return message + command; + } + + private String guessFullJarPath(String jar) { + if (jar.endsWith(IJAR_JAR_SUFFIX)) { + return stripIjarSuffix(jar, IJAR_JAR_SUFFIX); + } else if (jar.endsWith(HJAR_JAR_SUFFIX)) { + return stripIjarSuffix(jar, HJAR_JAR_SUFFIX); + } else { + return jar; + } + } + + private static String stripIjarSuffix(String jar, String suffix) { + return jar.substring(0, jar.length() - suffix.length()) + ".jar"; + } + + private String jarLabel(String path) throws IOException { + try (JarFile jar = new JarFile(path)) { + return jar.getManifest().getMainAttributes().getValue("Target-Label"); + } + } + + public void registerAstUsedJars(Set jars) { + astUsedJars = jars; + } + + public void writeDiagnostics(String diagnosticsFile) throws IOException { + if (delegateReporter == null) { + return; + } + + ProtoReporter protoReporter = (ProtoReporter) delegateReporter; + protoReporter.writeTo(Paths.get(diagnosticsFile)); + } +} diff --git a/src/java/io/bazel/rulesscala/scalac/reporter/DepsTrackingReporter.java b/src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/before_2_13_12/DepsTrackingReporter.java similarity index 100% rename from src/java/io/bazel/rulesscala/scalac/reporter/DepsTrackingReporter.java rename to src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter/before_2_13_12/DepsTrackingReporter.java diff --git a/src/java/io/bazel/rulesscala/scalac/reporter/BUILD b/src/java/io/bazel/rulesscala/scalac/reporter/BUILD index 4ec785972..b9c7f2a4f 100644 --- a/src/java/io/bazel/rulesscala/scalac/reporter/BUILD +++ b/src/java/io/bazel/rulesscala/scalac/reporter/BUILD @@ -5,7 +5,7 @@ load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION") java_library( name = "reporter", srcs = [ - "DepsTrackingReporter.java", + "//src/java/io/bazel/rulesscala/scalac/deps_tracking_reporter", "ProtoReporter.java", ] if SCALA_MAJOR_VERSION.startswith("2") else ["PlaceholderForEmptyScala3Lib.java"], visibility = ["//visibility:public"], diff --git a/test/shell/test_scala_config.sh b/test/shell/test_scala_config.sh index 9f4158b6d..88870f8ea 100755 --- a/test/shell/test_scala_config.sh +++ b/test/shell/test_scala_config.sh @@ -12,7 +12,7 @@ test_classpath_contains_2_12() { test_classpath_contains_2_13() { bazel aquery 'mnemonic("Javac", //src/java/io/bazel/rulesscala/scalac:scalac)' \ - --repo_env=SCALA_VERSION=2.13.11 \ + --repo_env=SCALA_VERSION=2.13.12 \ | grep scala-library-2.13 } diff --git a/test_version.sh b/test_version.sh index 2e5d053bc..ec0fa4a84 100755 --- a/test_version.sh +++ b/test_version.sh @@ -4,7 +4,7 @@ set -e scala_2_11_version="2.11.12" scala_2_12_version="2.12.18" -scala_2_13_version="2.13.11" +scala_2_13_version="2.13.12" SCALA_VERSION_DEFAULT=$scala_2_11_version diff --git a/third_party/repositories/scala_2_13.bzl b/third_party/repositories/scala_2_13.bzl index fef875417..c5743ad87 100644 --- a/third_party/repositories/scala_2_13.bzl +++ b/third_party/repositories/scala_2_13.bzl @@ -1,17 +1,17 @@ -scala_version = "2.13.11" +scala_version = "2.13.12" artifacts = { "io_bazel_rules_scala_scala_library": { "artifact": "org.scala-lang:scala-library:%s" % scala_version, - "sha256": "71853291f61bda32786a866533361cae474344f5b2772a379179b02112444ed3", + "sha256": "c6a879e4973a60f6162668542a33eaccc2bb565d1c934fb061c5844259131dd1", }, "io_bazel_rules_scala_scala_compiler": { "artifact": "org.scala-lang:scala-compiler:%s" % scala_version, - "sha256": "c5a14770370e73a69367b131da1533890200b1e2aa70643b73f9ff31ef2e69ec", + "sha256": "583adb1ffa7b29fdbfdd6f4c97a396af06a8a91625d059823bba1b7172242d6a", }, "io_bazel_rules_scala_scala_reflect": { "artifact": "org.scala-lang:scala-reflect:%s" % scala_version, - "sha256": "6a46ed9b333857e8b5ea668bb254ed8e47dacd1116bf53ade9467aa4ae8f1818", + "sha256": "c648ceb93a9fcbd22603e0be3d6a156723ae661f516c772a550a088bb3cbca7a", }, "io_bazel_rules_scala_scala_parallel_collections": { "artifact": "org.scala-lang.modules:scala-parallel-collections_2.13:0.2.0", @@ -83,7 +83,7 @@ artifacts = { }, "org_scalameta_semanticdb_scalac": { "artifact": "org.scalameta:semanticdb-scalac_%s:4.8.4" % scala_version, - "sha256": "7edcf57254f4361085f3fb0e604c9be0bf8037dbdc63cca7f26e2425fa1b1a9b", + "sha256": "119657e06e82d9337ce643f1cfd2633ce1be001157b82555f67859a784745967", "deps": [ "@io_bazel_rules_scala_scala_library", ], @@ -164,8 +164,8 @@ artifacts = { "sha256": "b5f1d6071f1548d05be82f59f9039c7d37a1787bd8e3c677e31ee275af4a4621", }, "org_scala_lang_scalap": { - "artifact": "org.scala-lang:scalap:2.13.11", - "sha256": "ac358699f40002fb4f32ad77531765fce23425d0e83c51854d1635118ab285ea", + "artifact": "org.scala-lang:scalap:%s" % scala_version, + "sha256": "ba4152ca85f42f04d76d903e006f9848f4e7d0629791d016953f05a5a04954c8", "deps": [ "@io_bazel_rules_scala_scala_compiler", ], @@ -519,6 +519,6 @@ artifacts = { "org_typelevel_kind_projector": { "testonly": True, "artifact": "org.typelevel:kind-projector_%s:0.13.2" % scala_version, - "sha256": "c5c49245a962206d708b7c9368d9f1dd77c773250c0f7bdde9c78e994889cb19", + "sha256": "4bd985e53ac950a1f130981f7ec9a2c5dffe4c2f588fc695180c6105f4a9557f", }, } diff --git a/third_party/repositories/scala_3_1.bzl b/third_party/repositories/scala_3_1.bzl index e90613f19..71a7a5be5 100644 --- a/third_party/repositories/scala_3_1.bzl +++ b/third_party/repositories/scala_3_1.bzl @@ -173,8 +173,8 @@ artifacts = { "sha256": "b5f1d6071f1548d05be82f59f9039c7d37a1787bd8e3c677e31ee275af4a4621", }, "org_scala_lang_scalap": { - "artifact": "org.scala-lang:scalap:2.13.11", - "sha256": "ac358699f40002fb4f32ad77531765fce23425d0e83c51854d1635118ab285ea", + "artifact": "org.scala-lang:scalap:2.13.12", + "sha256": "ba4152ca85f42f04d76d903e006f9848f4e7d0629791d016953f05a5a04954c8", "deps": [ "@io_bazel_rules_scala_scala_compiler", ], @@ -527,7 +527,7 @@ artifacts = { }, "org_typelevel_kind_projector": { "testonly": True, - "artifact": "org.typelevel:kind-projector_2.13.11:0.13.2", - "sha256": "c5c49245a962206d708b7c9368d9f1dd77c773250c0f7bdde9c78e994889cb19", + "artifact": "org.typelevel:kind-projector_2.13.12:0.13.2", + "sha256": "4bd985e53ac950a1f130981f7ec9a2c5dffe4c2f588fc695180c6105f4a9557f", }, } diff --git a/third_party/repositories/scala_3_2.bzl b/third_party/repositories/scala_3_2.bzl index 46237386d..c4a9101d7 100644 --- a/third_party/repositories/scala_3_2.bzl +++ b/third_party/repositories/scala_3_2.bzl @@ -173,8 +173,8 @@ artifacts = { "sha256": "b5f1d6071f1548d05be82f59f9039c7d37a1787bd8e3c677e31ee275af4a4621", }, "org_scala_lang_scalap": { - "artifact": "org.scala-lang:scalap:2.13.11", - "sha256": "ac358699f40002fb4f32ad77531765fce23425d0e83c51854d1635118ab285ea", + "artifact": "org.scala-lang:scalap:2.13.12", + "sha256": "ba4152ca85f42f04d76d903e006f9848f4e7d0629791d016953f05a5a04954c8", "deps": [ "@io_bazel_rules_scala_scala_compiler", ], @@ -527,7 +527,7 @@ artifacts = { }, "org_typelevel_kind_projector": { "testonly": True, - "artifact": "org.typelevel:kind-projector_2.13.11:0.13.2", - "sha256": "c5c49245a962206d708b7c9368d9f1dd77c773250c0f7bdde9c78e994889cb19", + "artifact": "org.typelevel:kind-projector_2.13.12:0.13.2", + "sha256": "4bd985e53ac950a1f130981f7ec9a2c5dffe4c2f588fc695180c6105f4a9557f", }, } diff --git a/third_party/repositories/scala_3_3.bzl b/third_party/repositories/scala_3_3.bzl index 244637416..551a83e5f 100644 --- a/third_party/repositories/scala_3_3.bzl +++ b/third_party/repositories/scala_3_3.bzl @@ -171,8 +171,8 @@ artifacts = { "sha256": "b5f1d6071f1548d05be82f59f9039c7d37a1787bd8e3c677e31ee275af4a4621", }, "org_scala_lang_scalap": { - "artifact": "org.scala-lang:scalap:2.13.11", - "sha256": "ac358699f40002fb4f32ad77531765fce23425d0e83c51854d1635118ab285ea", + "artifact": "org.scala-lang:scalap:2.13.12", + "sha256": "ba4152ca85f42f04d76d903e006f9848f4e7d0629791d016953f05a5a04954c8", "deps": [ "@io_bazel_rules_scala_scala_compiler", ], @@ -525,7 +525,7 @@ artifacts = { }, "org_typelevel_kind_projector": { "testonly": True, - "artifact": "org.typelevel:kind-projector_2.13.11:0.13.2", - "sha256": "c5c49245a962206d708b7c9368d9f1dd77c773250c0f7bdde9c78e994889cb19", + "artifact": "org.typelevel:kind-projector_2.13.12:0.13.2", + "sha256": "4bd985e53ac950a1f130981f7ec9a2c5dffe4c2f588fc695180c6105f4a9557f", }, }