我遇到了似乎是一个标记为固定的eclipse Bug 380313的实例。我的语法如下:
grammar org.xtext.example.hyrule.HyRule with org.eclipse.xtext.common.Terminals
// with org.eclipse.xtext.xbase.Xbase
generate hyRule "http://www.xtext.org/example/hyrule/HyRule"
Start:
rules+=Rule*;
Rule:
'FOR' 'PAYLOAD' PAYLOAD 'ELEMENTS' elements+=ID+ 'CONSTRAINED''BY'name=ID '!';
PAYLOAD:
"sse"| "stacons"
;
哪个工作正常,哪个代码生成编辑器等都可以正常工作。但是,一旦我改变
with org.eclipse.xtext.common.Terminals
到
with org.eclipse.xtext.xbase.Xbase
启动生成的IDE我在错误的380313中完全按照分支目标错误获得了Inconsistent stackmap帧,因此代码生成和自动完成不再有效。
如果我将编译器合规性级别更改为1.6,则分支目标错误处的不一致堆栈映射帧消失,并且自动完成工作正常,但代码生成仍然无效(src-gen中不生成代码)。 / p>
我正在使用从头开始安装的Xtext 2.3和java 7。 xtext项目的构建路径未经修改,我已将org.eclipse.xtext.xbase.lib_2.3.0.v201206120633.jar添加到DSL项目的构建路径中 (即在运行时启动的eclipse实例中的那个)。
任何帮助都会非常感激,我一直绞尽脑汁试图找到问题。
更新: 在上面的例子中,我使用generator.xtend来生成代码。 如果我使用JvmModelInferrer,然后将合规性设置为1.7我仍然得到上面提到的错误,并且自动完成完全被破坏,但代码生成实际上是有效的。当然,在这种情况下,将合规级别设置为1.6一切正常。 但我当然应该能够使用生成器而不是JvmModelInferrer,而不必设置编译器合规级别为1.6?
答案 0 :(得分:1)
Sebastian Zarnekow:Eclipse的Java编译器中的错误已在Eclipse 3.8中修复。我担心你必须将你的发行版升级到Juno版本或坚持使用Java 1.6。