public IndexMemberExpression(AbstractMemberExpression indexedMemberExpression, AbstractExpression indexerExpression, bool isStrictMode) : base(isStrictMode) { this.indexedMemberExpression = indexedMemberExpression; this.indexerExpression = indexerExpression; }
public IfStatement(AbstractExpression conditionExpression, Statement trueStatement, bool isStrictMode) : base(isStrictMode) { hasElse = false; this.conditionExpression = conditionExpression; this.trueStatement = trueStatement; }
public ForInLetConstIterationStatement(ForDeclaration forDeclaration, AbstractExpression forInExpression, Statement doStatement, bool isStrictMode) : base(isStrictMode) { this.forDeclaration = forDeclaration; this.forInExpression = forInExpression; this.doStatement = doStatement; }
public SuperIndexMemberExpression(AbstractExpression superIndexerExpression, bool isStrictMode) : base(isStrictMode) { this.superIndexerExpression = superIndexerExpression; }
public ForInLHSIterationStatement(AbstractLeftHandSideExpression leftHandSideExpression, AbstractExpression inExpression, Statement doStatement, bool isStrictMode) : base(isStrictMode) { this.leftHandSideExpression = leftHandSideExpression; this.inExpression = inExpression; this.doStatement = doStatement; }
public ForInVarIterationStatement(ForBinding forVar, AbstractExpression forInExpression, Statement doStatement, bool isStrictMode) : base(isStrictMode) { this.forVar = forVar; this.forInExpression = forInExpression; this.doStatement = doStatement; }
public WhileIterationStatement(AbstractExpression whileExpression, Statement doStatement, bool isStrictMode) : base(isStrictMode) { this.doStatement = doStatement; this.whileExpression = whileExpression; }
public ForLexicalIterationStatement(LexicalDeclaration lexicalDeclaration, AbstractExpression leftExpression, AbstractExpression rightExpression, Statement doStatement, bool isStrictMode) : base(isStrictMode) { this.doStatement = doStatement; this.lexicalDeclaration = lexicalDeclaration; this.leftExpression = leftExpression; this.rightExpression = rightExpression; }
protected static CompletionOr <IteratorRecord?> ForInOfHeadEvaluation(IEnumerable <string> TDZNames, AbstractExpression expr, IterationKind iterationKind) { var oldEnv = Interpreter.Instance().RunningExecutionContext().LexicalEnvironment; if (TDZNames.Any()) { if (TDZNames.Distinct().Count() < TDZNames.Count()) { throw new InvalidOperationException("Spec 13.7.5.12 step 2a"); } var TDZ = oldEnv.NewDeclarativeEnvironment(); var TDZEnvRec = TDZ.EnvironmentRecord; foreach (var name in TDZNames) { TDZEnvRec.CreateMutableBinding(name, false); } Interpreter.Instance().RunningExecutionContext().LexicalEnvironment = TDZ; } var exprRef = expr.Evaluate(Interpreter.Instance()); Interpreter.Instance().RunningExecutionContext().LexicalEnvironment = oldEnv; var exprValue = exprRef.GetValue(); if (exprValue.IsAbrupt()) { return(exprValue.WithEmpty <IteratorRecord?>()); } if (iterationKind == IterationKind.Enumerate) { if (exprValue.value == UndefinedValue.Instance || exprValue.value == NullValue.Instance) { return(new Completion(CompletionType.Break, null, null).WithEmpty <IteratorRecord?>()); } var obj = exprValue.value !.ToObject().value as Object; return(obj !.EnumerateObjectProperties()); } else { return((exprValue.value !.ToObject().value as Object) !.GetIterator()); } }
public CaseClause(AbstractExpression matchExpression, StatementList statementList) { this.matchExpression = matchExpression; this.statementList = statementList; }
public SwitchStatement(AbstractExpression switchExpression, CaseBlock caseBlock, bool isStrictMode) : base(isStrictMode) { this.switchExpression = switchExpression; this.caseBlock = caseBlock; }
public ExpressionStatement(AbstractExpression expression, bool isStrictMode) : base(isStrictMode) { this.expression = expression; }
public ParenthesizedExpression(AbstractExpression expression, bool isStrictMode) : base(isStrictMode) { this.expression = expression; }