是否可以定义可以静态编译的Eclipse Groovy DSLD (DSL定义)?
我尝试使用Eclipse提供的示例,所以我创建了TestDsl.dsld
contribute(currentType(subType('groovy.lang.GroovyObject'))) {
property (
name : 'newProp',
type : String,
provider : 'Sample DSL',
doc : 'This is a sample. You should see this in content assist for GroovyObjects: <pre>newProp</pre>')
}然后,我使用以前的属性编写了一个测试类。这个类应该静态编译。Eclipse将新属性显示为有效属性,但随后无法编译。


使用@CompileStatic和@TypeChecked也会产生相同的结果。
发布于 2017-07-31 18:47:04
DSLDs将新的方法和属性引入到内容辅助和类型推断中。这并不能保证方法或属性在编译或运行时可用。它们的作用更像暗示,而不是任何东西。
经常使用used来填补静态类型检查器和程序的动态执行状态之间的空白。如果您想要与@TypeChecked或@CompileStatic兼容的东西,您可能需要编写一个TypeChekingExtension,而不是DSLD贡献。
https://stackoverflow.com/questions/44908400
复制相似问题