有人知道如何在XText 2.9中关闭全局范围?我想关闭全局范围,以便只能访问我导入的文件的元素。例如:
file1.mydsl:
element A(C){
;
}
subelement C{
;
}
file2.mydsl:
element B(C){
;
}
这应该在file2.mydsl中返回错误,因为我没有导入“file1.mydsl”。我应该添加行 - 导入“file1.mydsl” - 以避免错误。我怎么能在Xtext 2.9中做到这一点?我有一个可以执行我想要的工作代码但代码使用Xtext 2.8并且不适用于2.9版本。
答案 0 :(得分:1)
嗨,你仍然可以切换到基于importURI的范围
https://bugs.eclipse.org/bugs/show_bug.cgi?id=491110
fragment = org.eclipse.xtext.generator.adapter.FragmentAdapter { fragment = org.eclipse.xtext.generator.scoping.ImportURIScopingFragment {} }
或只是手动添加绑定
class MyDslRuntimeModule extends AbstractMyDslRuntimeModule {
override bindIGlobalScopeProvider() {
importuriglobalscopeprovider
}
override configureIScopeProviderDelegate(Binder binder) {
binder.bind(IScopeProvider).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
.to(SimpleLocalScopeProvider);
}
}