Package-level declarations
Types
Scope of validity associated to a block of statements. Variables declared inside a block are not visible outside.
Represents scopes that can be interrupted by a BreakStatement.
Represents scopes that can be interrupted by a ContinueStatement.
Represents a scope that is only visible in the current file. This is usually used in programming languages for file-level imports.
This should ideally only be called once. It constructs a new global scope, which is not associated to any AST node. However, depending on the language, a language frontend can explicitly set the ast node using ScopeManager.resetToGlobal if the language needs a global scope that is restricted to a translation unit, i.e. C++ while still maintaining a unique list of global variables.
A scope which acts as a namespace with a certain name, which is prefixed to all local names declared in it. This could be a package or other structural elements, like a class. In the latter case, the derived RecordScope should be used.
Represents the scope of a record or class, most likely created by a RecordDeclaration.
Is a scope where local variables can be declared and independent of specific language constructs. Works for if, for, and extends to the block scope