问题标签 [scalameta]
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.
scala - 使用 scala meta 和 quasiquotes 定义隐式编码器
我正在尝试使用 Circe 创建一个隐式编码器。然而,这个编码器将使用注释创建,因此我使用的是 Scalameta。这是我的代码。但是,编译器抱怨在 quasiquotes 中有一个覆盖语句。
构建文件如下:
结果我仍然得到: 无法扩展宏注释(最常见的原因是您需要启用宏天堂插件;另一种可能性是您尝试在定义它的同一编译运行中使用宏注释)
scala - 新式(“内联”)宏需要 scala.meta
我刚刚更新到 scala meta 2.0.0-M1 和最新的 scala 2.12.3,现在宏不再编译。我所做的唯一更改是将元版本从 1.8.0 更改为 2.0.0-M1。
错误:新式(“内联”)宏需要 scala.meta
有人知道是否有快速解决此问题的方法吗?
我希望开始尝试一些语义改进。
scala - 使用代码生成(如 Scala Meta)来抓取样板文件
我使用 Shapeless 的标记类型来获得很好的类型安全原语来通过我的业务逻辑。定义这些类型从一个简单的开始:
但是我为此添加了一些很好的辅助逻辑,现在我的定义看起来更像:
因此,每个定义都有很多样板。我真的很希望能够通过执行以下操作来生成它:
有没有办法用 Scala Meta 或其他代码生成工具来做这样的事情?
scalameta - 解析一个方法定义字符串,不知道怎么解析成scala.meta.Decl.Def
我希望能够将字符串解析为 Decl.Def 但代码无法编译:
错误:(39, 52) 不知道如何解析成 scala.meta.Decl.Def
我需要做什么来解析它?使用 Scalameta 2.0.0
scala - 如何运行scalameta生成的Defn
我在玩 Scalameta。这是我的 build.sbt
在我的宏项目中。我有以下代码
现在在我的主要项目中我写
我希望我能够执行由我的宏生成的方法。
编辑:我也试过
scala - 用于仪器的 Scala-meta
我注意到 scala-meta 提供转换函数,但不提供插入附加代码的函数(例如,导入语句,或在函数的每个开始处调用方法)。
由于所有结构(scala.meta.Tree 及其子结构)都是不可变的,我不确定它是否可能以及如何实现这一点?
scala - How to match methods which return a Future and have multiple arguments or multiple arguments list (curried)?
I am playing with scalameta and I want to have a generic measurement annotation which sends measurements about how long the method execution took.
I used Qing Wei's cache annotation demo. https://www.cakesolutions.net/teamblogs/scalameta-tut-cache
It works for non async methods but my attribute doesn't match on methods which return Future due to the ExecutionContext argument list.
My annotation looks like this:
I use the annotation like this:
I would like to use it with async methods like this:
but I get the following error:
I assume the issue is MeasureMacroImpl matching but I am not sure how to match on multiple argument groups. Could you guys help me? Any ideas or sample code would be greatly appreciated. I am pretty new to scala and scala meta so apologies if I asked a trivial question.
scala - scala-meta:在类构造函数中解析可变参数
如何解析 Term 如下所示并提取解析到类应用方法的参数。类 apply 方法接受一个变量参数,因此不知道类构造函数中有多少个参数。
我需要解析并提取传递给TestClass
apply 方法的两个参数(数量将在运行时更改),该方法采用可变数量的参数(vararg)
scala - intellij 无法识别使用 scalameta 生成的代码
我正在尝试创建一个 scalameta 注释,它将在现有对象中定义一个新的案例类。
我的目标是改造:
进入:
为此,我创建了以下注释:
和这个主要的类来测试它:
当我编译并运行主类时,代码的行为符合预期。
在编译期间它打印:
并在运行代码后:
我的问题是当我尝试使用 intellij 使用此代码时。
代码从 intellij 编译和运行,但新类B
无法识别,因此代码完成和提示都不起作用
我正在使用最新的 intellij 和 scala 插件
我已将完整项目上传到 git: https ://github.com/lev112/scalameta_intellij/tree/master
这是我第一次尝试使用 scalameta,我试图了解它是否是 intellij 中的错误,或者我做错了什么
scala - 将参数传递给 scalameta 天堂宏
我正在尝试创建一个宏注释,但我需要传递它的参数。
用作
上面代码的问题是,注释已经Entity
被剥离了 - 因此我无法从那里获取参数。此外,由于内联,该方法也无法访问and字段。apply
defn
param1
param2
apply
您能否指出使用 scala meta 克服此问题的最简单方法?我考虑过使用两个注释
但那是hacky和丑陋的。
非常感谢