зеркало из https://github.com/github/codeql.git
documentation: weak and strong aliases in the specification
This commit is contained in:
Родитель
225aff47ed
Коммит
805e9d8910
|
@ -1763,7 +1763,7 @@ The grammar given in this section is disambiguated first by precedence, and seco
|
|||
Aliases
|
||||
-------
|
||||
|
||||
Aliases define new names for existing QL entities.
|
||||
Aliases define new names for existing QL bindings.
|
||||
|
||||
::
|
||||
|
||||
|
@ -1772,7 +1772,19 @@ Aliases define new names for existing QL entities.
|
|||
| qldoc? annotations "module" modulename "=" moduleExpr ";"
|
||||
|
||||
|
||||
An alias introduces a binding from the new name to the entity referred to by the right-hand side in the current module's declared predicate, type, or module environment respectively.
|
||||
An alias introduces a binding from the new name to the binding referred to by the right-hand side in the current module's declared predicate, type, or module environment respectively.
|
||||
|
||||
An alias is called *strong alias* if and only if it has the ``final`` annotation. Otherwise, it is called a *weak alias*.
|
||||
|
||||
Two bindings `A`, `B` are called *equal modulo weak aliasing* if and only if one of the following conditions are satisfied:
|
||||
|
||||
- `A` and `B` are the same binding or
|
||||
|
||||
- `A`` is introduced by a *weak alias* for `C`, where `B` and `C` are *equal modulo weak aliasing* (or vice versa) or
|
||||
|
||||
- `A` and `B` are introduced by the same strong alias and they are aliases for bindings that are *equal modulo weak aliasing*.
|
||||
|
||||
Note that the third condition is only relevant in :ref:`Parameterized modules`, where the binding introduced by the alias can depend on instantiation parameters.
|
||||
|
||||
Built-ins
|
||||
---------
|
||||
|
|
Загрузка…
Ссылка в новой задаче