Community
Participate
Working Groups
Currently an IJvmTypeProvider is instantiated and registered in the resource set by the first language that asks for it. So it depends on the module of that particular language what concrete implementations are used within that object tree. Some languages have subclassed certain types, e.g. Xcore has subclasses the WorkingCopyOwnerProvider, in order to adjust the bahvior. This doesn't work, as the type provider is shared between all languages, so we need to have one implementation that works for everyone, coming from some shared module.
This somewhat depends on bug #453047, as for Xtend the implementation is specialised such that when not in the editor the compiled Java version is loaded. We cannot make this strategy the default for any language, because other languages (e.g. Xcore) also need link against other non-JVM information.
The registration of the ITypeProvider could be centralized within Eclipse but it would require an additional central registry in standalone mode to mimic the shared state contributions. Currently we don't have a serious issue due to the demand-registration of the ITypeProvider. After an offline discussion, we decided to de-schedule this refactoring for 2.8 I generalized the last customization in Xtend to make it applicable for all Xtext languages: https://git.eclipse.org/r/38960