Beispiel #1
0
 public IndexMemberExpression(AbstractMemberExpression indexedMemberExpression, AbstractExpression indexerExpression, bool isStrictMode) : base(isStrictMode)
 {
     this.indexedMemberExpression = indexedMemberExpression;
     this.indexerExpression       = indexerExpression;
 }
Beispiel #2
0
 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;
 }
Beispiel #4
0
 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());
            }
        }
Beispiel #10
0
 public CaseClause(AbstractExpression matchExpression, StatementList statementList)
 {
     this.matchExpression = matchExpression;
     this.statementList   = statementList;
 }
Beispiel #11
0
 public SwitchStatement(AbstractExpression switchExpression, CaseBlock caseBlock, bool isStrictMode) : base(isStrictMode)
 {
     this.switchExpression = switchExpression;
     this.caseBlock        = caseBlock;
 }
Beispiel #12
0
 public ExpressionStatement(AbstractExpression expression, bool isStrictMode) : base(isStrictMode)
 {
     this.expression = expression;
 }
Beispiel #13
0
 public ParenthesizedExpression(AbstractExpression expression, bool isStrictMode) : base(isStrictMode)
 {
     this.expression = expression;
 }