From dd6a547c8aa12c40ed6e966126f3e706d214e693 Mon Sep 17 00:00:00 2001 From: Matthias Berndt Date: Sat, 12 Aug 2023 17:52:17 +0200 Subject: [PATCH] Scala: support Enums in dependency inference (#19588) Dependency inference for Scala does not currently detect Enum types. This PR fixes that. The newer Scalameta release also adds support for the `fewerBraces` Syntax in Scala 3.3.0. --------- Co-authored-by: Matthias Berndt --- 3rdparty/jvm/org/scalameta/BUILD | 2 +- .../dependency_inference/ScalaParser.scala | 34 +- .../dependency_inference/scala_parser.lock | 439 ++++++++---------- .../dependency_inference/scala_parser.py | 2 +- .../dependency_inference/scala_parser_test.py | 54 +++ 5 files changed, 266 insertions(+), 265 deletions(-) diff --git a/3rdparty/jvm/org/scalameta/BUILD b/3rdparty/jvm/org/scalameta/BUILD index a5ae31342fa..20dbab280f6 100644 --- a/3rdparty/jvm/org/scalameta/BUILD +++ b/3rdparty/jvm/org/scalameta/BUILD @@ -6,7 +6,7 @@ jvm_artifact( name="scalameta", group="org.scalameta", artifact="scalameta_2.13", - version="4.4.30", + version="4.8.7", packages=["scala.meta.**"], resolve="scala_parser_dev", ) diff --git a/src/python/pants/backend/scala/dependency_inference/ScalaParser.scala b/src/python/pants/backend/scala/dependency_inference/ScalaParser.scala index 04ddfc14816..08e96f5517b 100644 --- a/src/python/pants/backend/scala/dependency_inference/ScalaParser.scala +++ b/src/python/pants/backend/scala/dependency_inference/ScalaParser.scala @@ -10,6 +10,8 @@ import io.circe.syntax._ import scala.meta._ import scala.meta.transversers.Traverser +import scala.meta.Stat.{WithMods, WithCtor, WithTemplate} +import scala.meta.Tree.WithTParamClause import scala.collection.SortedSet import scala.collection.mutable.{ArrayBuffer, HashMap, HashSet} @@ -38,8 +40,6 @@ object Analysis { } case class ProvidedSymbol( - sawClass: Boolean, - sawTrait: Boolean, sawObject: Boolean, recursive: Boolean ) @@ -119,8 +119,6 @@ class SourceAnalysisTraverser extends Traverser { def recordProvidedName( symbolName: String, - sawClass: Boolean = false, - sawTrait: Boolean = false, sawObject: Boolean = false, recursive: Boolean = false ): Unit = { @@ -134,16 +132,12 @@ class SourceAnalysisTraverser extends Traverser { if (providedSymbols.contains(symbolName)) { val existingSymbol = providedSymbols(symbolName) val newSymbol = ProvidedSymbol( - sawClass = existingSymbol.sawClass || sawClass, - sawTrait = existingSymbol.sawTrait || sawTrait, sawObject = existingSymbol.sawObject || sawObject, recursive = existingSymbol.recursive || recursive ) providedSymbols(symbolName) = newSymbol } else { providedSymbols(symbolName) = ProvidedSymbol( - sawClass = sawClass, - sawTrait = sawTrait, sawObject = sawObject, recursive = recursive ) @@ -237,23 +231,19 @@ class SourceAnalysisTraverser extends Traverser { ) } - case Defn.Class(mods, nameNode, tparams, ctor, templ) => { - visitMods(mods) - val name = extractName(nameNode) - recordProvidedName(name, sawClass = true) - apply(tparams) - apply(ctor) - visitTemplate(templ, name) - } - - case Defn.Trait(mods, nameNode, tparams, ctor, templ) => { + case defn: Member.Type with WithMods with WithTParamClause with WithCtor with WithTemplate => // traits, enums and classes + visitMods(defn.mods) + val name = extractName(defn.name) + recordProvidedName(name) + apply(defn.tparamClause) + apply(defn.ctor) + visitTemplate(defn.templ, name) + case Defn.EnumCase.After_4_6_0(mods, nameNode, tparamClause, ctor, _) => visitMods(mods) val name = extractName(nameNode) - recordProvidedName(name, sawTrait = true) - apply(tparams) + recordProvidedName(name) + apply(tparamClause) apply(ctor) - visitTemplate(templ, name) - } case Defn.Object(mods, nameNode, templ) => { visitMods(mods) diff --git a/src/python/pants/backend/scala/dependency_inference/scala_parser.lock b/src/python/pants/backend/scala/dependency_inference/scala_parser.lock index e2514cc239c..ef4d7cc8539 100644 --- a/src/python/pants/backend/scala/dependency_inference/scala_parser.lock +++ b/src/python/pants/backend/scala/dependency_inference/scala_parser.lock @@ -1,6 +1,6 @@ # This lockfile was autogenerated by Pants. To regenerate, run: # -# ./pants generate-lockfiles +# pants generate-lockfiles # # --- BEGIN PANTS LOCKFILE METADATA: DO NOT EDIT OR REMOVE --- # { @@ -8,7 +8,7 @@ # "generated_with_requirements": [ # "io.circe:circe-generic_2.13:0.14.1,url=not_provided,jar=not_provided", # "org.scala-lang:scala-library:2.13.8,url=not_provided,jar=not_provided", -# "org.scalameta:scalameta_2.13:4.4.30,url=not_provided,jar=not_provided" +# "org.scalameta:scalameta_2.13:4.8.7,url=not_provided,jar=not_provided" # ] # } # --- END PANTS LOCKFILE METADATA --- @@ -18,13 +18,13 @@ file_name = "com.chuusai_shapeless_2.13_2.3.7.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" @@ -39,136 +39,133 @@ serialized_bytes_length = 3221281 [[entries]] directDependencies = [] dependencies = [] -file_name = "com.google.protobuf_protobuf-java_3.15.8.jar" +file_name = "com.google.protobuf_protobuf-java_3.19.6.jar" [entries.coord] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" +version = "3.19.6" packaging = "jar" [entries.file_digest] -fingerprint = "8d0e2f9834f4fc1a083a65239adc507ca83682c754a27f4c80e4f21990eff686" -serialized_bytes_length = 1674945 +fingerprint = "6a9a2dff91dcf71f85be71ae971f6164b5a631dcd34bff08f0618535ca44ad02" +serialized_bytes_length = 1664824 [[entries]] -directDependencies = [] -dependencies = [] -file_name = "com.lihaoyi_geny_2.13_0.6.5.jar" +file_name = "com.lihaoyi_sourcecode_2.13_0.3.0.jar" +[[entries.directDependencies]] +group = "org.scala-lang" +artifact = "scala-library" +version = "2.13.11" +packaging = "jar" -[entries.coord] -group = "com.lihaoyi" -artifact = "geny_2.13" -version = "0.6.5" +[[entries.dependencies]] +group = "org.scala-lang" +artifact = "scala-library" +version = "2.13.11" packaging = "jar" -[entries.file_digest] -fingerprint = "ca3857a3f95266e0d87e1a1f26c8592c53c12ac7203f911759415f6c8a43df7d" -serialized_bytes_length = 85365 -[[entries]] -directDependencies = [] -dependencies = [] -file_name = "com.lihaoyi_sourcecode_2.13_0.2.7.jar" + [entries.coord] group = "com.lihaoyi" artifact = "sourcecode_2.13" -version = "0.2.7" +version = "0.3.0" packaging = "jar" [entries.file_digest] -fingerprint = "a639a90e2d21bbafd8a5e213c65442aad200ee086951605cbda8835bc6ef11d3" -serialized_bytes_length = 118671 +fingerprint = "6e5b2d55e942b450a222bfd3ebc23e99ca03716e42da25af1b2c8cde038100f5" +serialized_bytes_length = 119136 [[entries]] -file_name = "com.thesamet.scalapb_lenses_2.13_0.11.4.jar" +file_name = "com.thesamet.scalapb_lenses_2.13_0.11.13.jar" [[entries.directDependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [entries.coord] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [entries.file_digest] -fingerprint = "18943a007752b150ae45f27e901c34f0e92009304f2f804ef156ab3056d79874" -serialized_bytes_length = 34801 +fingerprint = "74aa56d451c8faa5566b124c0de20ac7f6c3d9205d866d99a9fbe7e29662ad65" +serialized_bytes_length = 34951 [[entries]] -file_name = "com.thesamet.scalapb_scalapb-runtime_2.13_0.11.4.jar" +file_name = "com.thesamet.scalapb_scalapb-runtime_2.13_0.11.13.jar" [[entries.directDependencies]] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" +version = "3.19.6" packaging = "jar" [[entries.directDependencies]] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" +version = "3.19.6" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [entries.coord] group = "com.thesamet.scalapb" artifact = "scalapb-runtime_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [entries.file_digest] -fingerprint = "3be88effcb57ea136a2e5c377cdda3924d61b024afc2169f892c46662e266288" -serialized_bytes_length = 2421167 +fingerprint = "4d17f874f06a5d9171cb6c41347a2b2906f4448a60d48aa8df4153abef23022f" +serialized_bytes_length = 2405377 [[entries]] file_name = "io.circe_circe-core_2.13_0.14.1.jar" [[entries.directDependencies]] @@ -180,7 +177,7 @@ packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] @@ -198,7 +195,7 @@ packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] @@ -245,7 +242,7 @@ packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] @@ -269,7 +266,7 @@ packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] @@ -304,13 +301,13 @@ file_name = "io.circe_circe-numbers_2.13_0.14.1.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" @@ -325,591 +322,551 @@ serialized_bytes_length = 13018 [[entries]] directDependencies = [] dependencies = [] -file_name = "net.java.dev.jna_jna_5.8.0.jar" +file_name = "io.github.java-diff-utils_java-diff-utils_4.12.jar" + +[entries.coord] +group = "io.github.java-diff-utils" +artifact = "java-diff-utils" +version = "4.12" +packaging = "jar" +[entries.file_digest] +fingerprint = "9990a2039778f6b4cc94790141c2868864eacee0620c6c459451121a901cd5b5" +serialized_bytes_length = 72305 +[[entries]] +directDependencies = [] +dependencies = [] +file_name = "net.java.dev.jna_jna_5.13.0.jar" [entries.coord] group = "net.java.dev.jna" artifact = "jna" -version = "5.8.0" +version = "5.13.0" packaging = "jar" [entries.file_digest] -fingerprint = "930273cc1c492f25661ea62413a6da3fd7f6e01bf1c4dcc0817fc8696a7b07ac" -serialized_bytes_length = 1729586 +fingerprint = "66d4f819a062a51a1d5627bffc23fac55d1677f0e0a1feba144aabdd670a64bb" +serialized_bytes_length = 1879325 [[entries]] directDependencies = [] dependencies = [] -file_name = "org.jline_jline_3.20.0.jar" +file_name = "org.jline_jline_3.22.0.jar" [entries.coord] group = "org.jline" artifact = "jline" -version = "3.20.0" +version = "3.22.0" packaging = "jar" [entries.file_digest] -fingerprint = "e2ee4b0bd3a2248f9ec6cf33f7d5b97e34ae652aecd3f42e13bded91f0df6bb6" -serialized_bytes_length = 992903 +fingerprint = "7c3ec8d2c5815188bbaefa4c7c42bc9b8ec172382ca026a4b4f3d113c0b5c3e3" +serialized_bytes_length = 1060013 [[entries]] -file_name = "org.scala-lang.modules_scala-collection-compat_2.13_2.4.4.jar" +file_name = "org.scala-lang.modules_scala-collection-compat_2.13_2.9.0.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [entries.coord] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [entries.file_digest] -fingerprint = "f17aec79f7588c60c028d879affe1bbbb92b3d2475cf8fa44b0afb9d3da2861f" -serialized_bytes_length = 5609 +fingerprint = "eb7494e25e62cd272223f5013cfcc31228f01aa23526df70ea6008190de1ae0d" +serialized_bytes_length = 5596 [[entries]] -file_name = "org.scala-lang_scala-compiler_2.13.7.jar" +file_name = "org.scala-lang_scala-compiler_2.13.11.jar" +[[entries.directDependencies]] +group = "io.github.java-diff-utils" +artifact = "java-diff-utils" +version = "4.12" +packaging = "jar" + [[entries.directDependencies]] group = "net.java.dev.jna" artifact = "jna" -version = "5.8.0" +version = "5.13.0" packaging = "jar" [[entries.directDependencies]] group = "org.jline" artifact = "jline" -version = "3.20.0" +version = "3.22.0" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-reflect" -version = "2.13.7" +version = "2.13.11" +packaging = "jar" + +[[entries.dependencies]] +group = "io.github.java-diff-utils" +artifact = "java-diff-utils" +version = "4.12" packaging = "jar" [[entries.dependencies]] group = "net.java.dev.jna" artifact = "jna" -version = "5.8.0" +version = "5.13.0" packaging = "jar" [[entries.dependencies]] group = "org.jline" artifact = "jline" -version = "3.20.0" +version = "3.22.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-reflect" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [entries.coord] group = "org.scala-lang" artifact = "scala-compiler" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [entries.file_digest] -fingerprint = "a450602f03a4686919e60d1aeced549559f1eaffbaf30ffa7987c8d97e3e79a9" -serialized_bytes_length = 12092802 +fingerprint = "c5a14770370e73a69367b131da1533890200b1e2aa70643b73f9ff31ef2e69ec" +serialized_bytes_length = 12137574 [[entries]] directDependencies = [] dependencies = [] -file_name = "org.scala-lang_scala-library_2.13.8.jar" +file_name = "org.scala-lang_scala-library_2.13.11.jar" [entries.coord] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [entries.file_digest] -fingerprint = "a0882b82514190c2bac7d1a459872a75f005fc0f3e88b2bc0390367146e35db7" -serialized_bytes_length = 6003601 +fingerprint = "71853291f61bda32786a866533361cae474344f5b2772a379179b02112444ed3" +serialized_bytes_length = 5966754 [[entries]] -file_name = "org.scala-lang_scala-reflect_2.13.7.jar" +file_name = "org.scala-lang_scala-reflect_2.13.11.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [entries.coord] group = "org.scala-lang" artifact = "scala-reflect" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [entries.file_digest] -fingerprint = "a7bc4eca6970083d426a8d081aec313c7b7207d5f83b6724995e34078edc5cbb" -serialized_bytes_length = 3771937 +fingerprint = "6a46ed9b333857e8b5ea668bb254ed8e47dacd1116bf53ade9467aa4ae8f1818" +serialized_bytes_length = 3760106 [[entries]] -file_name = "org.scala-lang_scalap_2.13.7.jar" +file_name = "org.scala-lang_scalap_2.13.11.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-compiler" -version = "2.13.7" +version = "2.13.11" +packaging = "jar" + +[[entries.dependencies]] +group = "io.github.java-diff-utils" +artifact = "java-diff-utils" +version = "4.12" packaging = "jar" [[entries.dependencies]] group = "net.java.dev.jna" artifact = "jna" -version = "5.8.0" +version = "5.13.0" packaging = "jar" [[entries.dependencies]] group = "org.jline" artifact = "jline" -version = "3.20.0" +version = "3.22.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-compiler" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-reflect" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [entries.coord] group = "org.scala-lang" artifact = "scalap" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [entries.file_digest] -fingerprint = "f6fb1c7f4ff257edb900d66e02d6ee1c8b5b4d7f7084b2d1710120cd36c524cc" -serialized_bytes_length = 530688 +fingerprint = "ac358699f40002fb4f32ad77531765fce23425d0e83c51854d1635118ab285ea" +serialized_bytes_length = 527352 [[entries]] -file_name = "org.scalameta_common_2.13_4.4.30.jar" +file_name = "org.scalameta_common_2.13_4.8.7.jar" [[entries.directDependencies]] group = "com.lihaoyi" artifact = "sourcecode_2.13" -version = "0.2.7" +version = "0.3.0" packaging = "jar" [[entries.directDependencies]] group = "com.thesamet.scalapb" artifact = "scalapb-runtime_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" +version = "3.19.6" packaging = "jar" [[entries.dependencies]] group = "com.lihaoyi" artifact = "sourcecode_2.13" -version = "0.2.7" +version = "0.3.0" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "scalapb-runtime_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [entries.coord] group = "org.scalameta" artifact = "common_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [entries.file_digest] -fingerprint = "faec8003d08e27971b292062f79e16a4a428491f50736d140b8a1de38cd5c6b1" -serialized_bytes_length = 2344659 +fingerprint = "1f4ff54f40e9513b9100595547808af8146888940d74b957875cb418cbb89ba8" +serialized_bytes_length = 2462814 [[entries]] -file_name = "org.scalameta_fastparse-v2_2.13_2.3.1.jar" -[[entries.directDependencies]] -group = "com.lihaoyi" -artifact = "geny_2.13" -version = "0.6.5" -packaging = "jar" - -[[entries.directDependencies]] -group = "com.lihaoyi" -artifact = "sourcecode_2.13" -version = "0.2.7" -packaging = "jar" - -[[entries.dependencies]] -group = "com.lihaoyi" -artifact = "geny_2.13" -version = "0.6.5" -packaging = "jar" - -[[entries.dependencies]] -group = "com.lihaoyi" -artifact = "sourcecode_2.13" -version = "0.2.7" -packaging = "jar" - - -[entries.coord] -group = "org.scalameta" -artifact = "fastparse-v2_2.13" -version = "2.3.1" -packaging = "jar" -[entries.file_digest] -fingerprint = "8fca8597ad6d7c13c48009ee13bbe80c176b08ab12e68af54a50f7f69d8447c5" -serialized_bytes_length = 320855 -[[entries]] -file_name = "org.scalameta_parsers_2.13_4.4.30.jar" +file_name = "org.scalameta_parsers_2.13_4.8.7.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] group = "org.scalameta" artifact = "trees_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [[entries.dependencies]] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" -packaging = "jar" - -[[entries.dependencies]] -group = "com.lihaoyi" -artifact = "geny_2.13" -version = "0.6.5" +version = "3.19.6" packaging = "jar" [[entries.dependencies]] group = "com.lihaoyi" artifact = "sourcecode_2.13" -version = "0.2.7" +version = "0.3.0" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "scalapb-runtime_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scalameta" artifact = "common_2.13" -version = "4.4.30" -packaging = "jar" - -[[entries.dependencies]] -group = "org.scalameta" -artifact = "fastparse-v2_2.13" -version = "2.3.1" +version = "4.8.7" packaging = "jar" [[entries.dependencies]] group = "org.scalameta" artifact = "trees_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [entries.coord] group = "org.scalameta" artifact = "parsers_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [entries.file_digest] -fingerprint = "66c78cdb5ed6c6345089603eee8e1b41392245252019d1268bd87fd97a7d8bcc" -serialized_bytes_length = 1364598 +fingerprint = "e35b8e60f887a18c843924d492e5702983b2ecbeed691a6a1751f97cd1fd014a" +serialized_bytes_length = 1262792 [[entries]] -file_name = "org.scalameta_scalameta_2.13_4.4.30.jar" +file_name = "org.scalameta_scalameta_2.13_4.8.7.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scalap" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] group = "org.scalameta" artifact = "parsers_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [[entries.dependencies]] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" -packaging = "jar" - -[[entries.dependencies]] -group = "com.lihaoyi" -artifact = "geny_2.13" -version = "0.6.5" +version = "3.19.6" packaging = "jar" [[entries.dependencies]] group = "com.lihaoyi" artifact = "sourcecode_2.13" -version = "0.2.7" +version = "0.3.0" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "scalapb-runtime_2.13" -version = "0.11.4" +version = "0.11.13" +packaging = "jar" + +[[entries.dependencies]] +group = "io.github.java-diff-utils" +artifact = "java-diff-utils" +version = "4.12" packaging = "jar" [[entries.dependencies]] group = "net.java.dev.jna" artifact = "jna" -version = "5.8.0" +version = "5.13.0" packaging = "jar" [[entries.dependencies]] group = "org.jline" artifact = "jline" -version = "3.20.0" +version = "3.22.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-compiler" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-reflect" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scalap" -version = "2.13.7" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scalameta" artifact = "common_2.13" -version = "4.4.30" -packaging = "jar" - -[[entries.dependencies]] -group = "org.scalameta" -artifact = "fastparse-v2_2.13" -version = "2.3.1" +version = "4.8.7" packaging = "jar" [[entries.dependencies]] group = "org.scalameta" artifact = "parsers_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [[entries.dependencies]] group = "org.scalameta" artifact = "trees_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [entries.coord] group = "org.scalameta" artifact = "scalameta_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [entries.file_digest] -fingerprint = "2ee7a9b93baa8ca2213f516ed3ced26990fe34e3df4ddb149ee58aa5d46d6160" -serialized_bytes_length = 791746 +fingerprint = "35f1da67619fefe5092a3ad89120ca8f4384aad5fe29eb2f5956dacd6e37e94d" +serialized_bytes_length = 809757 [[entries]] -file_name = "org.scalameta_trees_2.13_4.4.30.jar" +file_name = "org.scalameta_trees_2.13_4.8.7.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] group = "org.scalameta" artifact = "common_2.13" -version = "4.4.30" -packaging = "jar" - -[[entries.directDependencies]] -group = "org.scalameta" -artifact = "fastparse-v2_2.13" -version = "2.3.1" +version = "4.8.7" packaging = "jar" [[entries.dependencies]] group = "com.google.protobuf" artifact = "protobuf-java" -version = "3.15.8" -packaging = "jar" - -[[entries.dependencies]] -group = "com.lihaoyi" -artifact = "geny_2.13" -version = "0.6.5" +version = "3.19.6" packaging = "jar" [[entries.dependencies]] group = "com.lihaoyi" artifact = "sourcecode_2.13" -version = "0.2.7" +version = "0.3.0" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "lenses_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "com.thesamet.scalapb" artifact = "scalapb-runtime_2.13" -version = "0.11.4" +version = "0.11.13" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang.modules" artifact = "scala-collection-compat_2.13" -version = "2.4.4" +version = "2.9.0" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scalameta" artifact = "common_2.13" -version = "4.4.30" -packaging = "jar" - -[[entries.dependencies]] -group = "org.scalameta" -artifact = "fastparse-v2_2.13" -version = "2.3.1" +version = "4.8.7" packaging = "jar" [entries.coord] group = "org.scalameta" artifact = "trees_2.13" -version = "4.4.30" +version = "4.8.7" packaging = "jar" [entries.file_digest] -fingerprint = "79fdf691ff0f75265c99422f31db519ee044e88f52a32bbc39d30c16f6781315" -serialized_bytes_length = 4274882 +fingerprint = "90989bd72fc55ddb119eba2cca0b5869df8a8c3c6c9c54d9f70fc268c81e313e" +serialized_bytes_length = 6359786 [[entries]] file_name = "org.typelevel_cats-core_2.13_2.6.1.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.directDependencies]] @@ -927,7 +884,7 @@ packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] @@ -956,13 +913,13 @@ file_name = "org.typelevel_cats-kernel_2.13_2.6.1.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" @@ -979,13 +936,13 @@ file_name = "org.typelevel_simulacrum-scalafix-annotations_2.13_0.5.4.jar" [[entries.directDependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" [[entries.dependencies]] group = "org.scala-lang" artifact = "scala-library" -version = "2.13.8" +version = "2.13.11" packaging = "jar" diff --git a/src/python/pants/backend/scala/dependency_inference/scala_parser.py b/src/python/pants/backend/scala/dependency_inference/scala_parser.py index 4cad198ed8b..7f89d5513e4 100644 --- a/src/python/pants/backend/scala/dependency_inference/scala_parser.py +++ b/src/python/pants/backend/scala/dependency_inference/scala_parser.py @@ -409,7 +409,7 @@ def generate_scala_parser_lockfile_request( return GenerateJvmLockfileFromTool( artifact_inputs=FrozenOrderedSet( { - f"org.scalameta:scalameta_{_PARSER_SCALA_BINARY_VERSION}:4.4.30", + f"org.scalameta:scalameta_{_PARSER_SCALA_BINARY_VERSION}:4.8.7", f"io.circe:circe-generic_{_PARSER_SCALA_BINARY_VERSION}:0.14.1", f"org.scala-lang:scala-library:{_PARSER_SCALA_VERSION}", } diff --git a/src/python/pants/backend/scala/dependency_inference/scala_parser_test.py b/src/python/pants/backend/scala/dependency_inference/scala_parser_test.py index 639cb9a97ad..071521309e8 100644 --- a/src/python/pants/backend/scala/dependency_inference/scala_parser_test.py +++ b/src/python/pants/backend/scala/dependency_inference/scala_parser_test.py @@ -595,6 +595,60 @@ def test_package_object_extends_trait(rule_runner: RuleRunner) -> None: assert sorted(analysis.fully_qualified_consumed_symbols()) == ["foo.Trait", "foo.bar.Trait"] +def test_enum(rule_runner: RuleRunner) -> None: + rule_runner.set_options( + args=[ + "-ldebug", + "--scala-version-for-resolve={'jvm-default':'3.3.0'}", + ], + env_inherit=PYTHON_BOOTSTRAP_ENV, + ) + + analysis = _analyze( + rule_runner, + textwrap.dedent( + """ + package foo + enum Spam { + case Ham + case Eggs + } + """ + ), + ) + + expected_symbols = [ + ScalaProvidedSymbol("foo.Spam", False), + ScalaProvidedSymbol("foo.Spam.Eggs", False), + ScalaProvidedSymbol("foo.Spam.Ham", False), + ] + + assert sorted(analysis.provided_symbols, key=lambda x: x.name) == expected_symbols + + +def test_enum_use(rule_runner: RuleRunner) -> None: + rule_runner.set_options( + args=[ + "-ldebug", + "--scala-version-for-resolve={'jvm-default':'3.3.0'}", + ], + env_inherit=PYTHON_BOOTSTRAP_ENV, + ) + + analysis = _analyze( + rule_runner, + textwrap.dedent( + """ + package foo + enum Spam { + case Ham(x: Eggs) + } + """ + ), + ) + assert sorted(analysis.fully_qualified_consumed_symbols()) == ["foo.Eggs"] + + def test_types_at_toplevel_package(rule_runner: RuleRunner) -> None: analysis = _analyze( rule_runner,