Exemple #1
0
        // Parse a list of variable declarations.
        void ParseVar(ref StructList <AstVarDef> declarations, bool isFor, VariableKind kind)
        {
            for (;;)
            {
                var     startLocation = Start;
                var     id            = ParseVarId(kind);
                AstNode init          = null;
                if (Eat(TokenType.Eq))
                {
                    init = ParseMaybeAssign(isFor);
                }
                else if (kind == VariableKind.Const &&
                         !(Type == TokenType.In || Options.EcmaVersion >= 6 && IsContextual("of")))
                {
                    Raise(Start, "Unexpected token");
                }
                else if (!(id is AstSymbol) && !(isFor && (Type == TokenType.In || IsContextual("of"))))
                {
                    Raise(_lastTokEnd, "Complex binding patterns require an initialization value");
                }

                var decl = new AstVarDef(this, startLocation, _lastTokEnd, id, init);
                declarations.Add(decl);
                if (!Eat(TokenType.Comma))
                {
                    break;
                }
            }
        }
Exemple #2
0
 public VariableDefinition(AstBlock parentBlock, AstNode parent, AstVar astVar, AstVarDef astVarDef, bool canMoveInitialization, int originalIndexInVar)
 {
     ParentBlock           = parentBlock;
     Parent                = parent;
     AstVar                = astVar;
     CanMoveInitialization = canMoveInitialization;
     OriginalIndexInVar    = originalIndexInVar;
     AstVarDef             = astVarDef;
 }