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

Unified Diff: pkg/analyzer/lib/src/dart/element/type.dart

Issue 1795233002: Improve error messages containing named function types and clean up some duplicated code (issue 259… (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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 | « no previous file | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/dart/element/type.dart
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index b0851deffbb7c2dc7bc873217db49c7bd8c28cce..2d03cccbafe9901d83201db4f6bb52e5ba5b902b 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -270,66 +270,8 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
if (name == null || name.length == 0) {
// Function types have an empty name when they are defined implicitly by
// either a closure or as part of a parameter declaration.
- List<DartType> normalParameterTypes = this.normalParameterTypes;
- List<DartType> optionalParameterTypes = this.optionalParameterTypes;
- Map<String, DartType> namedParameterTypes = this.namedParameterTypes;
- DartType returnType = this.returnType;
StringBuffer buffer = new StringBuffer();
- buffer.write("(");
- bool needsComma = false;
- if (normalParameterTypes.length > 0) {
- for (DartType type in normalParameterTypes) {
- if (needsComma) {
- buffer.write(", ");
- } else {
- needsComma = true;
- }
- buffer.write(type.displayName);
- }
- }
- if (optionalParameterTypes.length > 0) {
- if (needsComma) {
- buffer.write(", ");
- needsComma = false;
- }
- buffer.write("[");
- for (DartType type in optionalParameterTypes) {
- if (needsComma) {
- buffer.write(", ");
- } else {
- needsComma = true;
- }
- buffer.write(type.displayName);
- }
- buffer.write("]");
- needsComma = true;
- }
- if (namedParameterTypes.length > 0) {
- if (needsComma) {
- buffer.write(", ");
- needsComma = false;
- }
- buffer.write("{");
- namedParameterTypes.forEach((String name, DartType type) {
- if (needsComma) {
- buffer.write(", ");
- } else {
- needsComma = true;
- }
- buffer.write(name);
- buffer.write(": ");
- buffer.write(type.displayName);
- });
- buffer.write("}");
- needsComma = true;
- }
- buffer.write(")");
- buffer.write(ElementImpl.RIGHT_ARROW);
- if (returnType == null) {
- buffer.write("null");
- } else {
- buffer.write(returnType.displayName);
- }
+ appendTo(buffer);
name = buffer.toString();
}
return name;
@@ -627,47 +569,44 @@ class FunctionTypeImpl extends TypeImpl implements FunctionType {
List<DartType> optionalParameterTypes = this.optionalParameterTypes;
Map<String, DartType> namedParameterTypes = this.namedParameterTypes;
DartType returnType = this.returnType;
- buffer.write("(");
+
bool needsComma = false;
- if (normalParameterTypes.isNotEmpty) {
- for (DartType type in normalParameterTypes) {
- if (needsComma) {
- buffer.write(", ");
- } else {
- needsComma = true;
- }
- (type as TypeImpl).appendTo(buffer);
+ void writeSeparator() {
+ if (needsComma) {
+ buffer.write(", ");
+ } else {
+ needsComma = true;
}
}
- if (optionalParameterTypes.isNotEmpty) {
+ void startOptionalParameters() {
if (needsComma) {
buffer.write(", ");
needsComma = false;
}
+ }
+
+ buffer.write("(");
+ if (normalParameterTypes.isNotEmpty) {
+ for (DartType type in normalParameterTypes) {
+ writeSeparator();
+ (type as TypeImpl).appendTo(buffer);
+ }
+ }
+ if (optionalParameterTypes.isNotEmpty) {
+ startOptionalParameters();
buffer.write("[");
for (DartType type in optionalParameterTypes) {
- if (needsComma) {
- buffer.write(", ");
- } else {
- needsComma = true;
- }
+ writeSeparator();
(type as TypeImpl).appendTo(buffer);
}
buffer.write("]");
needsComma = true;
}
if (namedParameterTypes.isNotEmpty) {
- if (needsComma) {
- buffer.write(", ");
- needsComma = false;
- }
+ startOptionalParameters();
buffer.write("{");
namedParameterTypes.forEach((String name, DartType type) {
- if (needsComma) {
- buffer.write(", ");
- } else {
- needsComma = true;
- }
+ writeSeparator();
buffer.write(name);
buffer.write(": ");
(type as TypeImpl).appendTo(buffer);
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698