问题标签 [scala-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
383 浏览

java - Scala TypeTag 到 java.lang.reflect.Type

我想知道 scala (2.10+) 中是否有一些预定义的函数可以将 scala TypeTag转换为java.lang.reflect.Type

请注意,我已经看到了这个问题,但我在运行时需要完整的泛型类型信息。

如果不是这种情况,我仍然可以实现我自己的映射,因为我已经有 java 类型的自定义实现。

0 投票
2 回答
4788 浏览

scala - Scala - 如何在运行时从外部文件编译代码?

我想设计一个 Scala 程序,它接受 Scala 文件作为可以自定义程序执行的参数。特别是,我想在运行时提供包含将由程序调用的方法实现的文件。如何正确依赖外部文件并在运行时动态调用它们的方法?理想情况下,我还希望这些文件能够依赖于我程序中的方法和类。

示例场景:我有一个包含 line 的函数val p: Plant = Greenhouse.getPlant(),并且Greenhouse具有该getPlant方法的类定义在将在运行时提供的文件之一中。在该文件中,该方法getPlant返回 a Rose,其中Rose <: PlantPlant在原始程序中定义。假设文件仅在运行时而不是在编译时加入,我如何实现(或近似)这种相互依赖性?

0 投票
1 回答
62 浏览

scala - 按类型划分的案例如何在 scala 中工作?

我知道案例类、模式匹配、取消应用和 PartialFunction,但我对下面的宏片段感到困惑。

MemberScope 的 Scaladoc http://www.scala-lang.org/api/2.10.4/#scala.reflect.api.Scopes $MemberScope

收集方法接受PartialFunction[Universe.Symbol, B] 我找不到unapply方法,MethodSymbol它也不是案例类的特征,所以在女巫代码编译器中转换

0 投票
1 回答
104 浏览

scala - scala tools nsc:在编译器设置中设置编译器标志

我有以下代码:

我想添加弃用、功能警告并显式打开隐式转换和宏。

0 投票
1 回答
52 浏览

java - `[ERROR] Nothing <: com.some.SomeType?` 是什么意思?

我有一个带有 scala 和 java 的项目。对于 scala 编译,使用了 scala-maven-plugin。

所以在构建过程中会有一些这样的消息:

这是什么意思?scala类的来源如下:

PS此外,对于其他 scala 类,还有其他此类消息对。

更新的 Maven 构建成功完成,但我在日志中有这些消息。

0 投票
1 回答
155 浏览

scala - 演示编译器:在具有多个参数的方法调用中键入完成

我使用askReload将源代码加载到编译器中,然后尝试在之后调用askTypeCompletion。(点)。在第一种情况下完成(具有 2 个参数的方法)不起作用,但在使用一个 arg 的方法调用中完成按预期工作。

有趣的是,如果我有代码:

点之后的完成不再起作用,但是如果我在点之后键入逗号,然后再次尝试在点之后完成,它可以工作:Option("").cata(x => x.<works!>,) 它是一些错误还是预期的行为?

0 投票
1 回答
234 浏览

scala - Scala 解析器剪切最后一个括号

结果是:

我期望:

}如果我使用 Tree 对象中的位置,则缺少最后一个括号(和行尾):text.substring(t.pos.start, t.pos.end)

任何建议如何从 scala.reflect.api.Trees#Tree 对象中提取所有文本?

更新

受影响的 Scala 版本:

  • 2.10.6 - sbt 0.13.x 需要
  • 2.11.8
  • 2.12.7

对于 scala 2.10.6/2.12.7 结果与上述输出相同。

将项目添加到 github

用于搜索解决方案的示例项目

0 投票
1 回答
114 浏览

scala - 如何用更大的元组编译 scala 2.11.2?

我尝试按照本指南构建具有更大元组(超过 22 个)的 scala 2.11.2:http: //blog.rogach.org/2013/02/scala-tuplicity-comes-to-210.html

我以前没有构建 scala 库和编译器以及 ant 构建工具的经验,所以我只是尝试在标签 v2.11.2 的新 git 克隆上运行脚本,并希望它能工作。它没有。

我在网上遇到了一个错误ant replacelocker

似乎 scala 2.11 的构建方式已经改变。我无法找到有关如何更换ant replacelocker线路的任何具体信息。

是否可以使用更大的元组构建 scala 2.11.2,就像 2.9 和 2.10 一样?有什么不同的做法?

0 投票
1 回答
590 浏览

scala - Scalac 挂在 RegexParser 的相位类型器上

我有一个 scala 程序,其中有一个解析器组合器。这是通过扩展来完成的scala.util.parsing.combinator.RegexParsers。我使用 Scala 2.10 开发了它,一切正常。

昨天我将系统升级到 Scala 2.11.4,以及 IntelliJ 14.02(没关系)。

但是,每当我现在尝试编译此程序时,都会scalac在此阶段挂起:

scalac: phase typer on MyParser.scala

我对这段代码完全没有改变,我不明白它为什么挂起或者我应该从哪里开始。IntelliJ 有一个关于解析器表达式的后缀运算符的警告,例如constants_def?or structure_def*,其中?and*跟在令牌之后,我添加了这一行,因为SIP:Language Modularization Features

import scala.language.postfixOps

它实际上没有任何效果,问题仍然是一样的。

如何解决正在发生的事情?我不知道从哪里开始理解为什么相位打字机只是无限期地挂起。

0 投票
2 回答
357 浏览

scala - 是否有 Scala 编译器标志在没有注释的情况下应用尾递归时发出警告?

当我没有用注释告诉它时,我希望编译器在将尾递归应用于我的一个函数时警告我。这可能吗?

动机:我很少写无限循环作为逻辑错误的问题,但我已经完成了拼写错误(是的,这是可能的)。通常递归无限循环只是告诉你堆栈溢出异常有什么问题,但如果它们被递归编译尾部,它只是挂起。

忘记new关键字与具有默认参数的案例类结合是一个很好的例子,我愚蠢地偶然发现了两次:

导致没有 SO 的无限循环,但def apply(a: Int): A = new A(a)不会