Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
|
Brian Wilkerson
2012/07/12 15:35:11
nit: copyright year
| |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package com.google.dart.compiler.parser; | 5 package com.google.dart.compiler.parser; |
| 6 | 6 |
| 7 import com.google.dart.compiler.common.HasSourceInfo; | 7 import com.google.dart.compiler.common.HasSourceInfo; |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * This class exists to enforce constraints on begin calls so code | 10 * This class exists to enforce constraints on begin calls so code |
| 11 * completion works. | 11 * completion works. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 private int minPositionRange = Integer.MAX_VALUE; | 48 private int minPositionRange = Integer.MAX_VALUE; |
| 49 private int threshold = THRESHOLD; | 49 private int threshold = THRESHOLD; |
| 50 | 50 |
| 51 /* | 51 /* |
| 52 * Guard against parser termination bugs. Called from begin(). | 52 * Guard against parser termination bugs. Called from begin(). |
| 53 * If the parser does not consume tokens it is an indication that it is not | 53 * If the parser does not consume tokens it is an indication that it is not |
| 54 * making progress. Look at the stack in the exception for hints of | 54 * making progress. Look at the stack in the exception for hints of |
| 55 * productions at fault. Called from begin() | 55 * productions at fault. Called from begin() |
| 56 */ | 56 */ |
| 57 public boolean assertProgress() { | 57 public boolean assertProgress() { |
| 58 int currentPosition = position().getPos(); | 58 int currentPosition = position(); |
| 59 if (currentPosition > maxPositionRange) { | 59 if (currentPosition > maxPositionRange) { |
| 60 minPositionRange = maxPositionRange; | 60 minPositionRange = maxPositionRange; |
| 61 maxPositionRange = currentPosition; | 61 maxPositionRange = currentPosition; |
| 62 threshold = THRESHOLD; | 62 threshold = THRESHOLD; |
| 63 } else if (currentPosition < minPositionRange) { | 63 } else if (currentPosition < minPositionRange) { |
| 64 minPositionRange = currentPosition; | 64 minPositionRange = currentPosition; |
| 65 threshold = THRESHOLD; | 65 threshold = THRESHOLD; |
| 66 } | 66 } |
| 67 if (threshold-- <= 0) { | 67 if (threshold-- <= 0) { |
| 68 StringBuilder sb = new StringBuilder(); | 68 StringBuilder sb = new StringBuilder(); |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 449 * Begin a grammatical structure, saving the current location to later set in | 449 * Begin a grammatical structure, saving the current location to later set in |
| 450 * an AST node. This may be followed by zero or more | 450 * an AST node. This may be followed by zero or more |
| 451 * {@link #doneWithoutConsuming(Object)} calls, and is terminated by exactly | 451 * {@link #doneWithoutConsuming(Object)} calls, and is terminated by exactly |
| 452 * one {@link #done(Object)} or {@link #rollback()} call. | 452 * one {@link #done(Object)} or {@link #rollback()} call. |
| 453 */ | 453 */ |
| 454 private void begin() { | 454 private void begin() { |
| 455 assert guard.assertProgress(); | 455 assert guard.assertProgress(); |
| 456 ctx.begin(); | 456 ctx.begin(); |
| 457 } | 457 } |
| 458 } | 458 } |
| OLD | NEW |