public override void AugmentAssign(AugmentedAssignStatement node, AnalysisUnit unit, IAnalysisSet value) {
            if (_original == null) {
                base.AugmentAssign(node, unit, value);
                return;
            }

            _original.AugmentAssign(node, unit, value);
        }
Exemple #2
0
 public override bool Walk(AugmentedAssignStatement node)
 {
     node.Left.Walk(_define);
     return(true);
 }
Exemple #3
0
        // expr_stmt: expression_list
        // expression_list: expression ( "," expression )* [","] 
        // assignment_stmt: (target_list "=")+ (expression_list | yield_expression) 
        // augmented_assignment_stmt ::= target augop (expression_list | yield_expression) 
        // augop: '+=' | '-=' | '*=' | '/=' | '%=' | '**=' | '>>=' | '<<=' | '&=' | '^=' | '|=' | '//='
        private Statement ParseExprStmt() {
            Expression ret = ParseTestListAsExpr();

            if (PeekToken(TokenKind.Assign)) {
                if (_langVersion >= PythonLanguageVersion.V30) {
                    SequenceExpression seq = ret as SequenceExpression;
                    bool hasStar = false;
                    if (seq != null) {
                        for (int i = 0; i < seq.Items.Count; i++) {
                            if (seq.Items[i] is StarredExpression) {
                                if (hasStar) {
                                    ReportSyntaxError(seq.Items[i].StartIndex, seq.Items[i].EndIndex, "two starred expressions in assignment");
                                }
                                hasStar = true;
                            }
                        }
                    }
                }

                return FinishAssignments(ret);
            } else {
                PythonOperator op = GetAssignOperator(PeekToken());
                if (op != PythonOperator.None) {
                    NextToken();
                    string whiteSpace = _tokenWhiteSpace;
                    Expression rhs;

                    if (_langVersion >= PythonLanguageVersion.V25 && PeekToken(TokenKind.KeywordYield)) {
                        if (!AllowYieldSyntax && AllowAsyncAwaitSyntax) {
                            ReportSyntaxError("'yield' inside async function");
                        }
                        Eat(TokenKind.KeywordYield);
                        rhs = ParseYieldExpression();
                    } else {
                        rhs = ParseTestListAsExpr();
                    }

                    string assignError = ret.CheckAugmentedAssign();
                    if (assignError != null) {
                        ReportSyntaxError(ret.StartIndex, ret.EndIndex, assignError);
                    }

                    AugmentedAssignStatement aug = new AugmentedAssignStatement(op, ret, rhs);
                    if (_verbatim) {
                        AddPreceedingWhiteSpace(aug, whiteSpace);
                    }
                    aug.SetLoc(ret.StartIndex, GetEnd());
                    return aug;
                } else {
                    Statement stmt = new ExpressionStatement(ret);
                    stmt.SetLoc(ret.IndexSpan);
                    return stmt;
                }
            }
        }
Exemple #4
0
 public override void AugmentAssign(AugmentedAssignStatement node, AnalysisUnit unit, IAnalysisSet value) {
     _builtinInfo.AugmentAssign(node, unit, value);
 }
Exemple #5
0
 public override bool Walk(AugmentedAssignStatement node) {
     node.Left.Walk(_define);
     return true;
 }
Exemple #6
0
 public override void AugmentAssign(AugmentedAssignStatement node, AnalysisUnit unit, IAnalysisSet value)
 {
     foreach (var member in _members) {
         member.AugmentAssign(node, unit, value);
     }
 }
Exemple #7
0
 public override bool Walk(AugmentedAssignStatement node) {
     UpdateChildRanges(node);
     return base.Walk(node);
 }
Exemple #8
0
 public override void PostWalk(AugmentedAssignStatement node) { PostWalkWorker(node); }
Exemple #9
0
 public override void PostWalk(AugmentedAssignStatement node) {
     node.Left.Walk(_fdef);
 }
Exemple #10
0
 public override bool Walk(AugmentedAssignStatement node) {
     DefineExpr(node.Left);
     node.Right.Walk(this);
     return false;
 }
Exemple #11
0
 // AugAssignStmt
 public override bool Walk(AugmentedAssignStatement node) { return true; }
Exemple #12
0
 public override void PostWalk(AugmentedAssignStatement node)
 {
     node.Left.Walk(_fdef);
 }
Exemple #13
0
 // AugAssignStmt
 public override bool Walk(AugmentedAssignStatement node)
 {
     return(true);
 }
 public override bool Walk(AugmentedAssignStatement node) {
     CanComplete = IsActualExpression(node.Right);
     CommitByDefault = true;
     return base.Walk(node);
 }
Exemple #15
0
        public override bool Walk(AugmentedAssignStatement node) {
            UpdateLineInfo(node);

            return base.Walk(node);
        }
 /// <summary>
 /// Performs an augmented assignment propagating the value into the
 /// object.
 /// </summary>
 public static void AugmentAssign(this IAnalysisSet self, AugmentedAssignStatement node, AnalysisUnit unit, IAnalysisSet value) {
     foreach (var ns in self) {
         ns.AugmentAssign(node, unit, value);
     }
 }
Exemple #17
0
 // AugmentedAssignStatement
 public override bool Walk(AugmentedAssignStatement node) { return ShouldWalkWorker(node); }