Skip to content

Commit 073d521

Browse files
bwilkersoncommit-bot@chromium.org
authored andcommitted
Update DartType.displayName to display nullability when appropriate
Change-Id: I36dbda77e4a363a2265e4b94a87fbe6d842a5348 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109800 Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]>
1 parent fe1da36 commit 073d521

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

pkg/analyzer/lib/src/dart/element/type.dart

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -584,19 +584,20 @@ abstract class FunctionTypeImpl extends TypeImpl implements FunctionType {
584584

585585
@override
586586
String get displayName {
587-
String name = this.name;
588-
589-
// Function types have an empty name when they are defined implicitly by
590-
// either a closure or as part of a parameter declaration.
591587
if (name == null || name.isEmpty) {
588+
// Function types have an empty name when they are defined implicitly by
589+
// either a closure or as part of a parameter declaration.
592590
StringBuffer buffer = new StringBuffer();
593591
appendTo(buffer, new Set.identity());
592+
if (nullabilitySuffix == NullabilitySuffix.question) {
593+
buffer.write('?');
594+
}
594595
return buffer.toString();
595596
}
596597

597598
List<DartType> typeArguments = this.typeArguments;
598599

599-
bool areAllTypeArgumentsDynamic() {
600+
bool allTypeArgumentsAreDynamic() {
600601
for (DartType type in typeArguments) {
601602
if (type != null && !type.isDynamic) {
602603
return false;
@@ -605,10 +606,10 @@ abstract class FunctionTypeImpl extends TypeImpl implements FunctionType {
605606
return true;
606607
}
607608

609+
StringBuffer buffer = new StringBuffer();
610+
buffer.write(name);
608611
// If there is at least one non-dynamic type, then list them out.
609-
if (!areAllTypeArgumentsDynamic()) {
610-
StringBuffer buffer = new StringBuffer();
611-
buffer.write(name);
612+
if (!allTypeArgumentsAreDynamic()) {
612613
buffer.write("<");
613614
for (int i = 0; i < typeArguments.length; i++) {
614615
if (i != 0) {
@@ -618,10 +619,11 @@ abstract class FunctionTypeImpl extends TypeImpl implements FunctionType {
618619
buffer.write(typeArg.displayName);
619620
}
620621
buffer.write(">");
621-
name = buffer.toString();
622622
}
623-
624-
return name;
623+
if (nullabilitySuffix == NullabilitySuffix.question) {
624+
buffer.write('?');
625+
}
626+
return buffer.toString();
625627
}
626628

627629
@override
@@ -1403,11 +1405,9 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
14031405

14041406
@override
14051407
String get displayName {
1406-
String name = this.name;
1407-
14081408
List<DartType> typeArguments = this.typeArguments;
14091409

1410-
bool areAllTypeArgumentsDynamic() {
1410+
bool allTypeArgumentsAreDynamic() {
14111411
for (DartType type in typeArguments) {
14121412
if (type != null && !type.isDynamic) {
14131413
return false;
@@ -1416,10 +1416,10 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
14161416
return true;
14171417
}
14181418

1419+
StringBuffer buffer = new StringBuffer();
1420+
buffer.write(name);
14191421
// If there is at least one non-dynamic type, then list them out.
1420-
if (!areAllTypeArgumentsDynamic()) {
1421-
StringBuffer buffer = new StringBuffer();
1422-
buffer.write(name);
1422+
if (!allTypeArgumentsAreDynamic()) {
14231423
buffer.write("<");
14241424
for (int i = 0; i < typeArguments.length; i++) {
14251425
if (i != 0) {
@@ -1429,9 +1429,11 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
14291429
buffer.write(typeArg.displayName);
14301430
}
14311431
buffer.write(">");
1432-
name = buffer.toString();
14331432
}
1434-
return name;
1433+
if (nullabilitySuffix == NullabilitySuffix.question) {
1434+
buffer.write('?');
1435+
}
1436+
return buffer.toString();
14351437
}
14361438

14371439
@override

0 commit comments

Comments
 (0)