ECMAScript | Содержания

8.4.1 SS: Contains
8.4.2 SS: ComputedPropertyContains

 

8.4.1 Статическая семантика: Contains

Синтаксически управляемая операция Contains (Содержит) принимает аргумент symbol.

Каждая альтернатива грамматики в этой спецификации, которая не указана ниже, неявно имеет следующее определение по умолчанию Contains:

1. Для каждого дочернего узла этого узла синтаксического анализа выполните
а. Если дочерний элемент является экземпляром символа, верните true.
b. Если дочерний элемент является экземпляром нетерминала, то
i. Пусть contains будет результатом дочернего символа Contains.
ii. Если содержится истина, вернуть истину.
2. Вернуть false.

FunctionDeclaration :function BindingIdentifier ( FormalParameters ) { FunctionBody }function ( FormalParameters ) { FunctionBody }FunctionExpression :function BindingIdentifieropt ( FormalParameters ) { FunctionBody }GeneratorDeclaration :function * BindingIdentifier ( FormalParameters ) { GeneratorBody }function * ( FormalParameters ) { GeneratorBody }GeneratorExpression :function * BindingIdentifieropt ( FormalParameters ) { GeneratorBody }AsyncGeneratorDeclaration :async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }async function * ( FormalParameters ) { AsyncGeneratorBody }AsyncGeneratorExpression :async function * BindingIdentifieropt ( FormalParameters ) { AsyncGeneratorBody }AsyncFunctionDeclaration :async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }async function ( FormalParameters ) { AsyncFunctionBody }AsyncFunctionExpression :async function BindingIdentifieropt ( FormalParameters ) { AsyncFunctionBody }

1. Вернуть false.

Примечание 1

Статические семантические правила, зависящие от подструктуры, обычно не учитывают определения функций.

ClassTail : ClassHeritageopt { ClassBody }

1. Если символ — ClassBody, верните true.
2. Если символ — ClassHeritage, то
а. Если ClassHeritage присутствует, вернуть true; в противном случае верните false.
3. Если ClassHeritage присутствует, то
а. Если символ ClassHeritage Contains — истина, вернуть истину.
4. Верните результат ComputedPropertyContains для ClassBody с символом аргумента.

Примечание 2

Статические семантические правила, которые зависят от подструктуры, обычно не смотрят в тела классов, за исключением PropertyNames.

ClassStaticBlock : static { ClassStaticBlockBody }

1. Вернуть false.

Примечание 3

Статические семантические правила, которые зависят от субструктуры, обычно не рассматривают статические блоки инициализации.

ArrowFunction : ArrowParameters => ConciseBody

1. Если символ не является одним из NewTarget, SuperProperty, SuperCall, super или this, вернуть false.
2. Если ArrowParameters Contains symbol — истина, вернуть истину.
3. Вернуть ConciseBody Содержит символ.

ArrowParameters : CoverParenthesizedExpressionAndArrowParameterList

1. Пусть формальные формы будут параметрами ArrowFormalParameters, которые покрываются CoverParenthesizedExpressionAndArrowParameterList.
2. Формы возврата. Содержит символ.

AsyncArrowFunction : async AsyncArrowBindingIdentifier => AsyncConciseBody

1. Если символ не является одним из NewTarget, SuperProperty, SuperCall, super или this, вернуть false.
2. Вернуть AsyncConciseBody Содержит символ.

AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody

1. Если символ не является одним из NewTarget, SuperProperty, SuperCall, super или this, вернуть false.
2. Пусть head будет AsyncArrowHead, который покрывается CoverCallExpressionAndAsyncArrowHead.
3. Если head Contains symbol верна, верните true.
4. Вернуть AsyncConciseBody Содержит символ.

Примечание 4

Contains используется для обнаружения использования new.target, this и super в ArrowFunction или AsyncArrowFunction.

PropertyDefinition : MethodDefinition

1. Если символ — MethodDefinition, верните true.
2. Верните результат ComputedPropertyContains для MethodDefinition с символом аргумента.

LiteralPropertyName : IdentifierName

1. Вернуть false.

MemberExpression : MemberExpression . IdentifierName

1. Если MemberExpression Contains symbol — истина, вернуть истину.
2. Вернуть false.

SuperProperty : super . IdentifierName

1. Если символ является суперзарезервированным словом ReservedWord, верните true.
2. Вернуть false.

CallExpression : CallExpression . IdentifierName

1. Если CallExpression Contains symbol — истина, вернуть истину.
2. Вернуть false.

OptionalChain : ?. IdentifierName

1. Вернуть false.

OptionalChain : OptionalChain . IdentifierName

1. Если OptionalChain Contains symbol — истина, верните истину.
2. Вернуть false.

 

8.4.2 Статическая семантика: ComputedPropertyContains

Операция ComputedPropertyContains (Содержит Вычисляемое Свойство), управляемая синтаксисом, принимает аргумент symbol. Она определяется кусочно по следующим производствам:

ClassElementName : PrivateIdentifierPropertyName : LiteralPropertyName

1. Вернуть false.

PropertyName : ComputedPropertyName

1. Вернуть результат ComputedPropertyName Contains symbol.

MethodDefinition :ClassElementName ( UniqueFormalParameters ) { FunctionBody }get ClassElementName ( ) { FunctionBody }set ClassElementName ( PropertySetParameterList ) { FunctionBody }

1. Верните результат ComputedPropertyContains для ClassElementName с символом аргумента.

GeneratorMethod : * ClassElementName ( UniqueFormalParameters ) { GeneratorBody }

1. Верните результат ComputedPropertyContains для ClassElementName с символом аргумента.

AsyncGeneratorMethod : async * ClassElementName ( UniqueFormalParameters ) { AsyncGeneratorBody }

1. Верните результат ComputedPropertyContains для ClassElementName с символом аргумента.

ClassElementList : ClassElementList ClassElement

1. Пусть inList будет ComputedPropertyContains из ClassElementList с символом аргумента.
2. Если inList истинно, вернуть истину.
3. Верните результат ComputedPropertyContains для ClassElement с символом аргумента.

ClassElement : ClassStaticBlock

1. Вернуть false.

ClassElement : ;

1. Вернуть false.

AsyncMethod : async ClassElementName ( UniqueFormalParameters ) { AsyncFunctionBody }

1. Верните результат ComputedPropertyContains для ClassElementName с символом аргумента.

FieldDefinition : ClassElementName Initializeropt

1. Верните результат ComputedPropertyContains для ClassElementName с символом аргумента.

 

Информационные ссылки

Стандарт ECMAScript — Раздел «8.4 Contains» — https://tc39.es/ecma262/#sec-syntax-directed-operations-contains

Поделись записью