This document discusses scoping in Xtext, including local versus global scoping, how scopes are created, and some best practices when working with scopes. Key points include:
- Scopes describe the reachable elements in a given context and map names to EObjects.
- Local scopes are created by language developers while the global scope (index) tracks elements across resources.
- Language builders override getScope() to define scoping logic. Avoid cyclic references when collecting elements.
- The global index tracks exported elements from resource descriptions to enable cross-file references.
- Best practices include using user data instead of resolving proxies, validating instead of tight scoping, and avoiding direct resource loading.