0

我遇到了似乎是标记为已修复的 Eclipse 错误 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,我得到了 Inconsistent stackmap frames at branch target 错误,与错误 380313 中的详细信息完全相同,因此代码生成和自动完成不再起作用。

如果我将编译器合规级别更改为 1.6,分支目标错误处的堆栈图帧不一致就会消失,并且自动完成工作,但代码生成仍然不起作用(在 src-gen 中没有生成代码)。

我正在使用从头开始安装的 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,并且不必将编译器合规级别设置为 t 1.6?

4

1 回答 1

1

Sebastian Zarnekow:Eclipse 的 Java 编译器中的错误已在 Eclipse 3.8 中得到修复。恐怕您必须将您的发行版升级到 Juno 版本或坚持使用 Java 1.6。

于 2012-07-05T08:10:35.400 回答