Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1161)

Unified Diff: pkg/compiler/lib/src/tree/nodes.dart

Issue 1661853005: Introduce getPrefixEndToken to avoid too big context in messages. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | tests/compiler/dart2js/diagnostic_helper.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/tree/nodes.dart
diff --git a/pkg/compiler/lib/src/tree/nodes.dart b/pkg/compiler/lib/src/tree/nodes.dart
index 04d46f54c28a4c8ac003abe471bc0673d9572a1b..e95497b9c927740a37699a1427bf9265b61bffc6 100644
--- a/pkg/compiler/lib/src/tree/nodes.dart
+++ b/pkg/compiler/lib/src/tree/nodes.dart
@@ -147,6 +147,12 @@ abstract class Node extends NullTreeElementMixin implements Spannable {
Token getBeginToken();
+ /// Returns the token that ends the 'prefix' of this node.
+ ///
+ /// For instance the end of the parameters in a [FunctionExpression] or the
+ /// last token before the start of a class body for a [ClassNode].
+ Token getPrefixEndToken() => getEndToken();
+
Token getEndToken();
Assert asAssert() => null;
@@ -263,6 +269,25 @@ class ClassNode extends Node {
Token getBeginToken() => beginToken;
+ @override
+ Token getPrefixEndToken() {
+ Token token;
+ if (interfaces != null) {
+ token = interfaces.getEndToken();
+ }
+ if (token == null && superclass != null) {
+ token = superclass.getEndToken();
+ }
+ if (token == null && typeParameters != null) {
+ token == typeParameters.getEndToken();
+ }
+ if (token == null) {
+ token = name.getEndToken();
+ }
+ assert(invariant(beginToken, token != null));
+ return token;
+ }
+
Token getEndToken() => endToken;
}
@@ -738,6 +763,10 @@ class FunctionDeclaration extends Statement {
visitChildren(Visitor visitor) => function.accept(visitor);
Token getBeginToken() => function.getBeginToken();
+
+ @override
+ Token getPrefixEndToken() => function.getPrefixEndToken();
+
Token getEndToken() => function.getEndToken();
}
@@ -826,6 +855,11 @@ class FunctionExpression extends Expression with StoredTreeElementMixin {
return firstBeginToken(name, parameters);
}
+ @override
+ Token getPrefixEndToken() {
+ return parameters != null ? parameters.getEndToken() : name.getEndToken();
+ }
+
Token getEndToken() {
Token token = (body == null) ? null : body.getEndToken();
token = (token == null) ? parameters.getEndToken() : token;
@@ -1300,7 +1334,10 @@ class TypeAnnotation extends Node {
Token getBeginToken() => typeName.getBeginToken();
- Token getEndToken() => typeName.getEndToken();
+ Token getEndToken() {
+ if (typeArguments != null) return typeArguments.getEndToken();
+ return typeName.getEndToken();
+ }
}
class TypeVariable extends Node {
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | tests/compiler/dart2js/diagnostic_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698