Я разрабатываю DSL, который повторно использует типы, определенные в другом DSL. По сути, у меня есть два расширения файлов, скажем, .A и .B, некоторые объекты объявлены в .A, и мне нужно получить к ним доступ в .B. Я использую importURI, чтобы иметь доступ только к нужным мне ссылкам из домена .A.
Завершение кода работает отлично, оно дает мне сущности, которые объявлены в .A, но проблема в том, что я вижу сообщения об ошибках, говорящие о том, что ссылки не могут быть разрешены.
Я сделал то же самое, что было предложено в этом сообщении внешний файл xtext importURI, и вот мой фрагменты рабочего процесса:
// Java API to access grammar elements (required by several other fragments)
fragment = grammarAccess.GrammarAccessFragment auto-inject {}
// generates Java API for the generated EPackages
fragment = ecore.EMFGeneratorFragment auto-inject {}
// the old serialization component
// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}
// serializer 2.0
fragment = serializer.SerializerFragment auto-inject {
generateStub = false
}
// a custom ResourceFactory for use with EMF
fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
// The antlr parser generator fragment.
fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
// options = {
// backtrack = true
// }
}
// Xtend-based API for validation
fragment = validation.ValidatorFragment auto-inject {
composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
}
// old scoping and exporting API
fragment = scoping.ImportURIScopingFragment auto-inject {}
// fragment = exporting.SimpleNamesFragment auto-inject {}
// scoping and exporting API
fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
fragment = exporting.QualifiedNamesFragment auto-inject {}
//fragment = builder.BuilderIntegrationFragment auto-inject {}
// generator API
//fragment = generator.GeneratorFragment auto-inject {}
// formatter API
//fragment = formatting.FormatterFragment auto-inject {}
// labeling API
//fragment = labeling.LabelProviderFragment auto-inject {}
// outline API
//fragment = outline.OutlineTreeProviderFragment auto-inject {}
//fragment = outline.QuickOutlineFragment auto-inject {}
// quickfix API
fragment = quickfix.QuickfixProviderFragment auto-inject {}
// content assist API
fragment = contentAssist.ContentAssistFragment auto-inject {}
// generates a more lightweight Antlr parser and lexer tailored for content assist
fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {}
// generates junit test support classes into Generator#pathTestProject
//fragment = junit.Junit4Fragment auto-inject {}
// rename refactoring
//fragment = refactoring.RefactorElementNameFragment auto-inject {}
// provides the necessary bindings for java types integration
//fragment = types.TypesGeneratorFragment auto-inject {}
// generates the required bindings only if the grammar inherits from Xbase
//fragment = xbase.XbaseGeneratorFragment auto-inject {}
// provides a preference page for template proposals
//fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
// provides a compare view
//fragment = compare.CompareFragment auto-inject {}
Спасибо