如何在XText 2.9中关闭全局范围?

时间:2016-04-20 17:37:49

标签: import scope xtext

有人知道如何在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版本。

1 个答案:

答案 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);

    }

}