Почему при использовании макроса scala трассировка стека ошибки компиляции выглядит такой бессвязной?

Я хотел бы поэкспериментировать с scala на каком-нибудь ненадежном макросе. Поэтому я имитирую простую ошибку в бесформенном вызове:

import shapeless.Witness

    val v = Witness(Random.nextInt())

Затем я компилирую его с помощью gradle build --info --stacktrace, ожидая найти исключение, начинающееся с «shapeless.Witness» или что-то подобное. Вместо этого я получил это:


> Task :common:compileTestScala
[Error] /home/peng/git-spike/scalaspike/common/src/test/scala/com/tribbloids/spike/shapeless_spike/RefinedType/Creation.scala:12: Expression scala.util.Random.nextInt() does not evaluate to a constant or a stable reference value
one error found

> Task :common:compileTestScala FAILED
5 actionable tasks: 1 executed, 4 up-to-date

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':common:compileTestScala'.
> Compilation failed

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':common:compileTestScala'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:205)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:203)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed
    at org.gradle.api.internal.tasks.scala.ZincScalaCompiler.execute(ZincScalaCompiler.java:151)
    at org.gradle.api.internal.tasks.scala.ZincScalaCompilerFacade.execute(ZincScalaCompilerFacade.java:47)
    at org.gradle.api.internal.tasks.scala.ZincScalaCompilerFacade.execute(ZincScalaCompilerFacade.java:32)
    at org.gradle.api.internal.tasks.compile.daemon.AbstractDaemonCompiler$CompilerWorkAction.execute(AbstractDaemonCompiler.java:135)
    at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
    at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:47)
    at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:41)
    at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)
    at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:41)
    at org.gradle.workers.internal.IsolatedClassloaderWorker.execute(IsolatedClassloaderWorker.java:49)
    at org.gradle.workers.internal.WorkerDaemonServer.execute(WorkerDaemonServer.java:84)
    at org.gradle.process.internal.worker.request.WorkerAction$1.call(WorkerAction.java:129)
    at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41)
    at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:126)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)
    ... 3 more
Caused by: Compilation failed
    at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:253)
    at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:122)
    at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:95)
    at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:91)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
    at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:186)
    at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
    at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3$adapted(MixedAnalyzingCompiler.scala:77)
    at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:215)
    at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:77)
    at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:146)
    at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:343)
    at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:343)
    at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:120)
    at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:100)
    at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:180)
    at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:98)
    at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:102)
    at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:155)
    at sbt.internal.inc.Incremental$.compile(Incremental.scala:92)
    at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:75)
    at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:348)
    at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:301)
    at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:168)
    at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:248)
    at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:74)
    at org.gradle.api.internal.tasks.scala.ZincScalaCompiler.execute(ZincScalaCompiler.java:147)
    ... 21 more

Как это должно мне помочь? Я вижу только код shapeless.Witness, а не весь sbt.internal.inc.AnalyzingCompiler. Что я должен сделать, чтобы увидеть ошибку, которая может быть связана с макросом, который фактически сообщил об ошибке?

ОБНОВЛЕНИЕ 1. От имени Дмитрия Митина я хотел бы также приложить свои конфигурации сборки:

allprojects {

    apply(plugin = "java")
    apply(plugin = "java-library")
    apply(plugin = "scala")

...

    dependencies {

        implementation("org.scala-lang:scala-compiler:${vs.scalaV}")
        implementation("org.scala-lang:scala-library:${vs.scalaV}")
        implementation("org.scala-lang:scala-reflect:${vs.scalaV}")
<vs.scalaV=2.12.11>
... 
<witness is introduced in s submodule>
    }

    tasks {

        val jvmTarget = JavaVersion.VERSION_1_8.toString()

        withType<ScalaCompile> {

            targetCompatibility = jvmTarget

            scalaCompileOptions.loggingLevel = "debug"

            scalaCompileOptions.additionalParameters = listOf(
                    "-encoding", "utf8",
                    "-unchecked",
                    "-deprecation",
                    "-feature",
                    "-Xfatal-warnings",
                    "-Xlog-implicits",
                    "-Yissue-debug"
            )
        }
    }
}

ОБНОВЛЕНИЕ 2 на maven:

[ERROR] /home/peng/git-dev/scala-2.11/datapassports/spookystuff/core/src/test/scala/com/tribbloids/spookystuff/utils/WitnessSpike.scala:11: Expression scala.util.Random.nextInt() does not evaluate to a constant or a stable reference value
[ERROR]   Witness(Random.nextInt())
[ERROR]          ^

...

[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.4.6:testCompile (scala-test-compile-first) on project spookystuff-core: Execution scala-test-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.4.6:testCompile failed.: CompileFailed -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.4.6:testCompile (scala-test-compile-first) on project spookystuff-core: Execution scala-test-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.4.6:testCompile failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:190)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:186)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
    at java.lang.Thread.run (Thread.java:748)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution scala-test-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.4.6:testCompile failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:190)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:186)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
    at java.lang.Thread.run (Thread.java:748)
Caused by: sbt.compiler.CompileFailed
    at sbt.compiler.AnalyzingCompiler.call (AnalyzingCompiler.scala:111)
    at sbt.compiler.AnalyzingCompiler.compile (AnalyzingCompiler.scala:53)
    at sbt.compiler.AnalyzingCompiler.compile (AnalyzingCompiler.scala:47)
    at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply$mcV$sp (AggressiveCompile.scala:95)
    at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply (AggressiveCompile.scala:95)
    at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply (AggressiveCompile.scala:95)
    at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed (AggressiveCompile.scala:168)
    at sbt.compiler.AggressiveCompile$$anonfun$3.compileScala$1 (AggressiveCompile.scala:94)
    at sbt.compiler.AggressiveCompile$$anonfun$3.apply (AggressiveCompile.scala:142)
    at sbt.compiler.AggressiveCompile$$anonfun$3.apply (AggressiveCompile.scala:84)
    at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply (Compile.scala:66)
    at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply (Compile.scala:64)
    at sbt.inc.IncrementalCommon.cycle (IncrementalCommon.scala:32)
    at sbt.inc.Incremental$$anonfun$1.apply (Incremental.scala:72)
    at sbt.inc.Incremental$$anonfun$1.apply (Incremental.scala:71)
    at sbt.inc.Incremental$.manageClassfiles (Incremental.scala:99)
    at sbt.inc.Incremental$.compile (Incremental.scala:71)
    at sbt.inc.IncrementalCompile$.apply (Compile.scala:54)
    at sbt.compiler.AggressiveCompile.compile2 (AggressiveCompile.scala:159)
    at sbt.compiler.AggressiveCompile.compile1 (AggressiveCompile.scala:68)
    at com.typesafe.zinc.Compiler.compile (Compiler.scala:207)
    at com.typesafe.zinc.Compiler.compile (Compiler.scala:189)
    at com.typesafe.zinc.Compiler.compile (Compiler.scala:180)
    at com.typesafe.zinc.Compiler.compile (Compiler.scala:171)
    at sbt_inc.SbtIncrementalCompiler.compile (SbtIncrementalCompiler.java:94)
    at scala_maven.ScalaCompilerSupport.incrementalCompile (ScalaCompilerSupport.java:320)
    at scala_maven.ScalaCompilerSupport.compile (ScalaCompilerSupport.java:136)
    at scala_maven.ScalaCompilerSupport.doExecute (ScalaCompilerSupport.java:116)
    at scala_maven.ScalaMojoSupport.execute (ScalaMojoSupport.java:574)
    at scala_maven.ScalaTestCompileMojo.execute (ScalaTestCompileMojo.java:50)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:190)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:186)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
    at java.lang.Thread.run (Thread.java:748)

Ой, одинаково бесполезно. Не могу поверить, что возлагал на это большие надежды. Конфигурация плагина сборки Relevenat выглядит так:

      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>3.4.6</version>
        <executions>

          <execution>
            <id>scala-compile-first</id>
            <phase>process-resources</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
          <execution>
            <id>scala-test-compile-first</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
          <!--required for publishing to maven central-->
          <execution>
            <id>add-source</id>
            <goals>
              <goal>add-source</goal>
            </goals>
          </execution>
          <execution>
            <id>attach-scaladocs</id>
            <goals>
              <goal>doc-jar</goal>
            </goals>
            <configuration>
              <args>
<!--                see https://github.com/dmlc/xgboost/issues/4000-->
                <arg>-nobootcp</arg>
              </args>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
          <scalaCompatVersion>${scala.binary.version}</scalaCompatVersion>
          <recompileMode>incremental</recompileMode>
          <!--https://tpolecat.github.io/2017/04/25/scalac-flags.html-->
          <args>
            <arg>-target:jvm-${java.version}</arg>
            <arg>-unchecked</arg>
            <arg>-deprecation</arg>
            <arg>-feature</arg>
            <arg>-g:vars</arg>

            <arg>-encoding</arg>
            <arg>UTF-8</arg>

            <arg>-Xlint</arg>
          </args>
          <javacArgs>
            <javacArg>-source</javacArg>
            <javacArg>${java.version}</javacArg>
            <javacArg>-target</javacArg>
            <javacArg>${java.version}</javacArg>
          </javacArgs>
          <excludes>
            <exclude>**/.ipynb_checkpoints/*</exclude>
          </excludes>
        </configuration>
      </plugin>

ОБНОВЛЕНИЕ 3 Я, наконец, попробовал на sbt, но, по-видимому, параметр трассировки стека макроса не может быть включен. Это конфигурация scalac в файле сборки sbt:

scalacOptions ++= Seq(
  "-unchecked",
  "-deprecation",
  "-feature",
  //                            "-Xfatal-warnings",
  "-Xlint:poly-implicit-overload",
  "-Xlint:option-implicit",
//  "-Xlog-implicits",
//  "-Xlog-implicit-conversions",
  "-Yissue-debug"
)
scalacOptions in (Compile, doc) ++= Seq("-groups")

/** Enable for debugging */
testOptions in Test += Tests.Argument("-oF")

Тогда он показывает еще меньше информации, чем maven & gradle:

> run
[warn] Credentials file /home/peng/.bintray/.credentials does not exist
[warn] Credentials file /home/peng/.ivy2/.sbtcredentials does not exist
[info] Compiling 235 Scala sources and 30 Java sources to /home/peng/git-release/spark-nlp/target/scala-2.11/classes...
[error] /home/peng/git-release/spark-nlp/src/main/scala/com/johnsnowlabs/collections/SearchTrie.scala:86: Expression scala.util.Random.nextInt() does not evaluate to a constant or a stable reference value
[error]   Witness(Random.nextInt())
[error]          ^
[warn] /home/peng/git-release/spark-nlp/src/main/scala/com/johnsnowlabs/ml/tensorflow/TensorflowSpell.scala:134: inferred existential type (org.tensorflow.Tensor[?0], org.tensorflow.Tensor[?0], org.tensorflow.Tensor[?0]) forSome { type ?0; type ?0; type ?0 }, which cannot be expressed by wildcards,  should be enabled
... (skipping irrelevant warnings)
[warn] 9 warnings found
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 5 s, completed 28-Jul-2020 12:44:30 AM
> 
> 
> 
> last run
> 
> 

Я что-то пропустил в любой из этих систем сборки?


person tribbloid    schedule 28.06.2020    source источник
comment
Очевидно, это какая-то проблема gradle (проблема с тем, как вы запускаете компиляцию своего кода, запускает ли gradle sbt?), поскольку с sbt или просто ошибкой компиляции scalac является выражение scala.util.Random.nextInt(), которое не оценивается как константа или стабильное ссылочное значение scastie.scala-lang.org/rHSBWDpXSlyN0ezKui3G4w Если вы используете какой-либо инструмент сборки, вы должны знать, как его правильно настроить.   -  person Dmytro Mitin    schedule 28.06.2020
comment
Я хорошо знаю бесформенную ошибку (я читал исходный код) и тот факт, что gradle использует sbt. Это просто простой пример, чтобы показать проблему. Я столкнулся с очень сложными ошибками макросов в singleton-ops, и я никак не могу понять.   -  person tribbloid    schedule 29.06.2020
comment
Мне любопытно, какой инструмент сборки вы используете? Люди редко используют scalac напрямую, это может быть maven, mill, sbt или gradle (что технически также является sbt), я не пробовал mill, но вскоре опубликую трассировку стека на maven. сомневаюсь, что лучше   -  person tribbloid    schedule 29.06.2020
comment
Как я писал в своем комментарии, я попробовал sbt (sbt compile, инструмент сборки по умолчанию) и на всякий случай scalac (scalac -classpath ~/.ivy2/cache/com.chuusai/shapeless_2.13/bundles/shapeless_2.13-2.4.0-M1.jar src/main/scala/App.scala). Мне просто любопытно, в чем причина запуска компиляции с запуском sbt gradle, в то время как вы можете запускать sbt напрямую. Попробуйте очистить проект перед компиляцией.   -  person Dmytro Mitin    schedule 29.06.2020
comment
И я не уверен, какой ответ вы ожидаете, публикуя исключение, а не публикуя даже файл сборки, используемые версии и т. д.   -  person Dmytro Mitin    schedule 29.06.2020
comment
Я вижу, опубликую соответствующую часть в плагинах scala gradle/maven/sbt   -  person tribbloid    schedule 29.06.2020
comment
Можете ли вы использовать sbt, а не maven или gradle?   -  person Dmytro Mitin    schedule 29.06.2020
comment
Кстати, вы можете сообщать об ошибках/пожеланиях в плагинах Maven и Gradle Scala здесь: github.com/davidB/scala-maven-plugin/issues и github. com/gradle/gradle/issues?q=scala   -  person Dmytro Mitin    schedule 30.06.2020
comment
Я видел github.com/tribbloid/shapesafe Возможно, вы используете gradle для кросс-сборки Scala и Kotlin. . Для sbt есть плагин для сборки Kotlin github.com/pfn/kotlin-plugin   -  person Dmytro Mitin    schedule 01.07.2020
comment
только что запустил sbt, но вместо того, чтобы показывать неправильную трассировку стека, он ее не показывает. Не могли бы вы поделиться со мной своим проектом и командой sbt, которую вы использовали?   -  person tribbloid    schedule 28.07.2020
comment
Хорошо, я сделаю. Тем временем вы можете посмотреть scala-sbt.org/1.x /docs/Macro-Projects.html   -  person Dmytro Mitin    schedule 28.07.2020
comment
Простите за поздний ответ. Удалось ли вам поработать с sbt или вам все еще нужен пример проекта?   -  person Dmytro Mitin    schedule 03.08.2020
comment
Я думаю, вы не включили опцию "-Ymacro-debug-lite" scalac.   -  person Dmytro Mitin    schedule 05.08.2020


Ответы (1)


Дают ли другие ошибки компилятора полезные трассировки стека?

Трассировки стека в основном относятся к среде выполнения: единственная трассировка стека, которую вы можете иметь во время компиляции, - это трассировка стека внутри компилятора (например, пакет sbt.compiler в трассировках стека в вопросе).

Как правило, для отладки проблем с макросами, в зависимости от проблемы, вы можете:

  • Запустите компилятор Scala в отладчике (есть инструкции), если рассматриваемый макрос не расширяется
  • Сброс сгенерированного кода с опцией компилятора -Ymacro-debug-lite, которая даст вам сгенерированный код Scala и представление абстрактного синтаксического дерева; это было бы полезно только в том случае, если макрос расширяется, но либо сам не компилируется, либо демонстрирует ошибку времени выполнения.
person Levi Ramsey    schedule 29.06.2020