Проблема, когда я расширяю язык Xcore (и, следовательно, ECore)
Я пытаюсь расширить язык XCore. Для этого я создал новый проект XText в Eclipse Oxygen. Вот файл Xtext:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.emf.ecore.xcore.Xcore
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
pack=XExpression
;
В файле MANIFEST я добавляю зависимость к Xcore v.1.5.
Наконец, в файле MWE2 я добавляю следующую строку:
component = XtextGenerator {
[...]
language = StandardLanguage {
[...]
referencedResource = "platform:/resource/org.eclipse.emf.ecore.xcore/model/Xcore.genmodel"
[...]
}
}
Тем не менее, я получаю следующую ошибку при выполнении рабочего процесса MWE2:
[ERROR]: GeneratorException: (Element: -UNKNOWN-; Reported by: XtextGenerator)
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'org.eclipse.emf.ecore.impl.EReferenceImpl@5734eaa7 (name: null) (ordered: true, unique: true, lowerBound: 0, upperBound: 1) (changeable: true, volatile: false, transient: false, defaultValueLiteral: null, unsettable: false, derived: false) (containment: false, resolveProxies: true)' is not legal. (platform:/resource/org.xtext.example.mydsl/model/generated/MyDsl.genmodel, 10, 129)
Caused by: org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'org.eclipse.emf.ecore.impl.EReferenceImpl@5734eaa7 (name: null) (ordered: true, unique: true, lowerBound: 0, upperBound: 1) (changeable: true, volatile: false, transient: false, defaultValueLiteral: null, unsettable: false, derived: false) (containment: false, resolveProxies: true)' is not legal. (platform:/resource/org.xtext.example.mydsl/model/generated/MyDsl.genmodel, 10, 129)
Caused by: java.lang.ClassCastException: The value of type 'org.eclipse.emf.ecore.impl.EClassImpl@5abca1e0 (name: EReference) (instanceClassName: null) (abstract: false, interface: false)' must be of type 'org.eclipse.emf.ecore.impl.EClassImpl@5ecba515 (name: EStructuralFeature) (instanceClassName: null) (abstract: true, interface: false)'
Что я проверил:
- Я тестирую на другом компьютере, с другой установкой Eclipse, и проблема остается аналогичной
- Если я заменю XCore на XBase в определении языка, у меня не будет проблемы
- Добавление оператора импорта не решает проблему