问题标签 [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 回答
973 浏览

scala - Scalac 挂在相位打字机

我对 2.10.3 和 Slick (Codegen) 生成的代码有疑问。它似乎非常相似

Scalac 挂在 RegexParser 的相位类型器上

Codegen 生成的其他文件可以工作,但这个文件永远挂在“scalac:phase typer Foo.scala”中

我能看到的唯一区别是表中的列数导致大量的 val 和像这样的大型 cons'ed 列表

当我注释掉大部分字段并将列表减少到像这样小的东西时,编译器完成

然而,这并不是一个理想的编码方式。任何帮助将不胜感激!

非常感谢彼得

0 投票
4 回答
13021 浏览

scala - 未找到编译器镜像中的对象 scala - 以编程方式运行 Scala 编译器

运行一个带有 Java 7 的简单 SBT 项目(详情如下)并sbt run在命令行调用(没有 IntelliJ 或任何东西)

来源

错误

构建.sbt

爪哇

0 投票
1 回答
79 浏览

scala - 在 Scala 中查找所有非综合方法/函数的类型签名

我正在尝试找到一种方法来获取 Scala 编译器的符号表 (?) 并将所有类型信息转储到特定 SBT 项目中的方法/函数中。我目前的方向是编译器插件,在typer阶段之后立即连接到它。

闲逛了一下,我正在看着根镜并检查info.decls它的场,大致如下:

它转储了很多东西,但是..我仍然得到了很多奇怪的输出,比如class anonfun$reduceUnordered$1 extends ;

想知道我是否朝着正确的方向前进,如果是这样,我应该更多地关注什么才能获得项目中方法的类型签名?

0 投票
1 回答
2375 浏览

java - What is a ScalaSignature?

When decompiling Scala files to Java code, one often comes across classes that are annotated with the ScalaSignatures. These seem to only have one annotation value, a somewhat encoded String. Why does the Scala Compiler create such an odd construct, instead of using custom Attributes in the class file?

0 投票
1 回答
81 浏览

scala - scala nsc中的主要方法调用

我试图通过 nsc(新的 scala 编译器)的代码。我有点困惑Main.scala。它的实现如下:

我的第一个问题是,Main编译器进程如何调用?当我按照以下方式称呼某些东西时:

在某个地方,newCompiler并且doCompile正在被调用,有人可以帮助我跟踪它是如何被调用的以及编译器是如何被初始化的吗?

任何指针将不胜感激。

谢谢

0 投票
3 回答
1835 浏览

scala - 提取 Scala 项目的完整调用图(困难的一个)

我想从给定的 Scala 项目中提取所有方法的调用图,这些方法是项目自身源代码的一部分。

据我了解,演示编译器并没有启用它,它需要一直向下到实际的编译器(或编译器插件?)。

您能否建议完整的代码,它可以安全地适用于大多数 scala 项目,但那些使用最古怪的动态语言功能的项目?对于调用图,我的意思是一个有向(可能是循环的)图,包括class/trait + method顶点,其中边 A -> B 表示 A 可以调用 B。

应避免调用/从库调用或“标记”为项目自身源之外的调用。

编辑:

请参阅我的宏天堂衍生原型解决方案,基于@dk14 的领导,作为下面的答案。托管在https://github.com/matanster/sbt-example-paradise的 github 上。

0 投票
2 回答
168 浏览

scala - 获取案例类自动生成方法的来源

如何获得一个案例类的所有自动生成的方法的代码,以便在重构为常规(非案例)类时干净地保留它们中的任何一个?是否有一些编译标志可以揭示案例类的自动生成方法,或者其他方式,最终将其减少为剪切和粘贴?

我的印象是有编译标志来显示自动扩展的定义......

0 投票
2 回答
5642 浏览

scala - IntelliJ Idea Maven 项目中 Scala 模块的 Scala 签名错误

免责声明:我是 Scala 的新手,并尝试在 IntelliJ IDEA 中使用简单的 scala archtype 创建一个示例 Scala Maven 项目。IntelliJ 版本为 14.1.2

下面是我的 pom 文件,我确实将 Scala 版本从原型默认生成的 2.7 更改为 2.11.6。

在运行 Maven 测试时,我不断收到以下错误 -

我不知道如何解决这个问题?

0 投票
0 回答
81 浏览

java - 使用 Scala Compiler API 提取在 scala 源文件中定义的所有符号

我正在尝试使用 Scala Compiler API 从 Java 应用程序中提取在 scala 源文件中定义的所有(但我最感兴趣的是类/对象)符号。

我可以使用 scala.tools.nsc.Global.Run.compileSources 编译源文件,但是如何提取那里定义的所有符号?

Run、CompilationUnit 和 Global 都没有提供用于检索所有符号的 API。

我是否试图用错误的方式解决问题?:)

0 投票
0 回答
455 浏览

scala - 未找到编译器镜像中的对象 scala - 以编程方式运行 Scala 编译器 [无 sbt - 无 IDE]

[编辑:添加评论中要求的精​​度]

我正在尝试以编程方式运行编译器并得到“缺少依赖项'编译器镜像中的对象 scala'”错误。我在编译器镜像中找不到这个帖子对象 scala - 以编程方式运行 Scala 编译器(但它只解释了如果我们从 sbt 而不是从外部启动程序时如何解决问题)。

所以我在这里复制/粘贴示例:

以及从 SBT 启动时使其工作的解决方案:

我正在尝试通过将来自 sbt 的 fullClassPath 值作为类路径传递来直接从终端启动这两个版本:

java -version 在哪里给出

每次我收到以下错误:

所以我的问题是双重的:

  • 有人可以向我解释上述帖子中显示的“魔术”是如何工作的吗?(我没有得到 embeddedDefaults 方法的注释)

  • 有人可以给出一个同样神奇的技巧来从终端运行操场吗?