From 32d7caf7af9acacfb73be45c2e19c85f6cd3f7d9 Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Mon, 13 Jul 2026 20:00:41 +0900 Subject: [PATCH] Support more Trees in build.sbt --- .../sbt/internal/EvaluateConfigurations.scala | 5 ++- .../build-sbt-more-trees/build.sbt | 33 +++++++++++++++++++ .../project-load/build-sbt-more-trees/test | 1 + 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 sbt-app/src/sbt-test/project-load/build-sbt-more-trees/build.sbt create mode 100644 sbt-app/src/sbt-test/project-load/build-sbt-more-trees/test diff --git a/buildfile/src/main/scala/sbt/internal/EvaluateConfigurations.scala b/buildfile/src/main/scala/sbt/internal/EvaluateConfigurations.scala index 6fa7cebea..e11781390 100644 --- a/buildfile/src/main/scala/sbt/internal/EvaluateConfigurations.scala +++ b/buildfile/src/main/scala/sbt/internal/EvaluateConfigurations.scala @@ -22,7 +22,7 @@ import scala.jdk.CollectionConverters.* import xsbti.PathBasedFile import xsbti.VirtualFile import xsbti.VirtualFileRef -import dotty.tools.dotc.ast.untpd.{ Annotated, ValOrDefDef, Tree } +import dotty.tools.dotc.ast.untpd.{ Annotated, ExtMethods, ModuleDef, ValOrDefDef, Tree, TypeDef } /** * This file is responsible for compiling the .sbt files used to configure sbt builds. @@ -312,6 +312,9 @@ private[sbt] object EvaluateConfigurations { tree match { case Annotated(arg, annot) => isDefinition(arg) case _: ValOrDefDef => true + case _: ExtMethods => true + case _: TypeDef => true + case _: ModuleDef => true case _ => false } } diff --git a/sbt-app/src/sbt-test/project-load/build-sbt-more-trees/build.sbt b/sbt-app/src/sbt-test/project-load/build-sbt-more-trees/build.sbt new file mode 100644 index 000000000..fc46ad61d --- /dev/null +++ b/sbt-app/src/sbt-test/project-load/build-sbt-more-trees/build.sbt @@ -0,0 +1,33 @@ +extension (a: Int) { + infix def x1(b: Int): Int = a + b +} + +class A(x: Int) extends B { + def y: Int = x + 1 +} + +trait B + +type MyId[A] = A + +type MatchTypeExample[A] = A match { + case Int => String + case _ => Int +} + +enum Enum1 { + case A1, A2 +} + +object C { + val x = 2 +} + +InputKey[Unit]("check") := { + val f: MyId[Int] = 8 + val a = new A(2) + assert(a.y == 3) + assert(C.x == 2) + assert(Enum1.A2.ordinal == 1) + assert((2 x1 3) == 5) +} diff --git a/sbt-app/src/sbt-test/project-load/build-sbt-more-trees/test b/sbt-app/src/sbt-test/project-load/build-sbt-more-trees/test new file mode 100644 index 000000000..15675b169 --- /dev/null +++ b/sbt-app/src/sbt-test/project-load/build-sbt-more-trees/test @@ -0,0 +1 @@ +> check