Index: pkg/analyzer/lib/src/generated/parser.dart |
diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart |
index e64f9bd11f09432a716038d0c3f5688a26aea518..bac76fa693b2a243d5946701515ebfc1fe534d98 100644 |
--- a/pkg/analyzer/lib/src/generated/parser.dart |
+++ b/pkg/analyzer/lib/src/generated/parser.dart |
@@ -2049,7 +2049,7 @@ class Parser { |
} |
/** |
- * Parse an expression that does not contain any cascades. |
+ * Parse an expression that might contain a cascade. |
* |
* <pre> |
* expression ::= |
@@ -3529,7 +3529,8 @@ class Parser { |
* |
* @param prefix the expression preceding the selector |
* @param optional `true` if the selector is optional |
- * @return the assignable selector that was parsed |
+ * @return the assignable selector that was parsed, or the original prefix if there was no |
+ * assignable selector |
*/ |
Expression _parseAssignableSelector(Expression prefix, bool optional) { |
if (_matches(TokenType.OPEN_SQUARE_BRACKET)) { |
@@ -3667,6 +3668,7 @@ class Parser { |
_reportErrorForToken(ParserErrorCode.MISSING_IDENTIFIER, _currentToken, [_currentToken.lexeme]); |
functionName = _createSyntheticIdentifier(); |
} |
+ assert((expression == null && functionName != null) || (expression != null && functionName == null)); |
if (_currentToken.type == TokenType.OPEN_PAREN) { |
while (_currentToken.type == TokenType.OPEN_PAREN) { |
if (functionName != null) { |
@@ -3684,6 +3686,7 @@ class Parser { |
expression = new PropertyAccess(expression, period, functionName); |
period = null; |
} |
+ assert(expression != null); |
bool progress = true; |
while (progress) { |
progress = false; |