@@ -9,6 +9,13 @@ abstract class ElementTypeRenderer<T extends ElementType> {
99 String renderLinkedName (T elementType);
1010
1111 String renderNameWithGenerics (T elementType) => '' ;
12+
13+ String wrapNullabilityParens (T elementType, String inner) =>
14+ elementType.nullabilitySuffix.isEmpty
15+ ? inner
16+ : '($inner ${elementType .nullabilitySuffix })' ;
17+ String wrapNullability (T elementType, String inner) =>
18+ '$inner ${elementType .nullabilitySuffix }' ;
1219}
1320
1421// Html implementations
@@ -24,7 +31,7 @@ class FunctionTypeElementTypeRendererHtml
2431 buf.write (
2532 ParameterRendererHtml ().renderLinkedParams (elementType.parameters));
2633 buf.write (')</span>' );
27- return buf.toString ();
34+ return wrapNullabilityParens (elementType, buf.toString () );
2835 }
2936
3037 @override
@@ -39,7 +46,7 @@ class FunctionTypeElementTypeRendererHtml
3946 buf.write ('</span>>' );
4047 }
4148 }
42- return buf.toString ();
49+ return wrapNullability (elementType, buf.toString () );
4350 }
4451}
4552
@@ -58,7 +65,7 @@ class ParameterizedElementTypeRendererHtml
5865 buf.write ('</span>>' );
5966 buf.write ('</span>' );
6067 }
61- return buf.toString ();
68+ return wrapNullability (elementType, buf.toString () );
6269 }
6370
6471 @override
@@ -72,7 +79,8 @@ class ParameterizedElementTypeRendererHtml
7279 '</span>, <span class="type-parameter">' );
7380 buf.write ('</span>>' );
7481 }
75- return buf.toString ();
82+ buf.write (elementType.nullabilitySuffix);
83+ return wrapNullability (elementType, buf.toString ());
7684 }
7785}
7886
@@ -92,7 +100,7 @@ class CallableElementTypeRendererHtml
92100 .trim ());
93101 buf.write (') → ' );
94102 buf.write (elementType.returnType.linkedName);
95- return buf.toString ();
103+ return wrapNullabilityParens (elementType, buf.toString () );
96104 }
97105}
98106
@@ -108,7 +116,7 @@ class FunctionTypeElementTypeRendererMd
108116 buf.write ('(' );
109117 buf.write (ParameterRendererMd ().renderLinkedParams (elementType.parameters));
110118 buf.write (')' );
111- return buf.toString ();
119+ return wrapNullabilityParens (elementType, buf.toString () );
112120 }
113121
114122 @override
@@ -122,7 +130,7 @@ class FunctionTypeElementTypeRendererMd
122130 buf.write ('>' );
123131 }
124132 }
125- return buf.toString ();
133+ return wrapNullabilityParens (elementType, buf.toString () );
126134 }
127135}
128136
@@ -138,7 +146,7 @@ class ParameterizedElementTypeRendererMd
138146 buf.writeAll (elementType.typeArguments.map ((t) => t.linkedName), ', ' );
139147 buf.write ('>' );
140148 }
141- return buf.toString ();
149+ return wrapNullability (elementType, buf.toString () );
142150 }
143151
144152 @override
@@ -152,7 +160,8 @@ class ParameterizedElementTypeRendererMd
152160 elementType.typeArguments.map ((t) => t.nameWithGenerics), ', ' );
153161 buf.write ('>' );
154162 }
155- return buf.toString ();
163+ buf.write (elementType.nullabilitySuffix);
164+ return wrapNullability (elementType, buf.toString ());
156165 }
157166}
158167
@@ -172,6 +181,6 @@ class CallableElementTypeRendererMd
172181 .trim ());
173182 buf.write (') → ' );
174183 buf.write (elementType.returnType.linkedName);
175- return buf.toString ();
184+ return wrapNullabilityParens (elementType, buf.toString () );
176185 }
177186}
0 commit comments