Skip to content

Commit 981160b

Browse files
fishythefishcommit-bot@chromium.org
authored andcommitted
[dart2js] Fix printing for various types in new RTI.
Change-Id: I95868e3f9d5145810bb3f1dedce3bc3031b99a9e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112273 Reviewed-by: Stephen Adams <[email protected]> Commit-Queue: Mayank Patke <[email protected]>
1 parent 08517e1 commit 981160b

File tree

1 file changed

+83
-44
lines changed
  • sdk/lib/_internal/js_runtime/lib

1 file changed

+83
-44
lines changed

sdk/lib/_internal/js_runtime/lib/rti.dart

Lines changed: 83 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,16 @@ class Rti {
193193
return JS('JSUnmodifiableArray', '#', _getRest(rti));
194194
}
195195

196+
static Rti _getStarArgument(Rti rti) {
197+
assert(_getKind(rti) == kindStar);
198+
return _castToRti(_getPrimary(rti));
199+
}
200+
201+
static Rti _getQuestionArgument(Rti rti) {
202+
assert(_getKind(rti) == kindQuestion);
203+
return _castToRti(_getPrimary(rti));
204+
}
205+
196206
static Rti _getFutureOrArgument(Rti rti) {
197207
assert(_getKind(rti) == kindFutureOr);
198208
return _castToRti(_getPrimary(rti));
@@ -741,10 +751,10 @@ String _functionRtiToString(Rti functionType, List<String> genericContext,
741751
sep = '';
742752
for (int i = 0; i < optionalNamedLength; i += 2) {
743753
argumentsText += sep +
744-
_Utils.asString(_Utils.arrayAt(optionalNamed, i)) +
745-
': ' +
746-
_rtiToString(
747-
_castToRti(_Utils.arrayAt(optionalNamed, i + 1)), genericContext);
754+
_rtiToString(_castToRti(_Utils.arrayAt(optionalNamed, i + 1)),
755+
genericContext) +
756+
' ' +
757+
_Utils.asString(_Utils.arrayAt(optionalNamed, i));
748758
sep = ', ';
749759
}
750760
argumentsText += '}';
@@ -770,6 +780,21 @@ String _rtiToString(Rti rti, List<String> genericContext) {
770780
if (kind == Rti.kindNever) return 'Never';
771781
if (kind == Rti.kindAny) return 'any';
772782

783+
if (kind == Rti.kindStar) {
784+
Rti starArgument = Rti._getStarArgument(rti);
785+
return '${_rtiToString(starArgument, genericContext)}*';
786+
}
787+
788+
if (kind == Rti.kindQuestion) {
789+
Rti questionArgument = Rti._getQuestionArgument(rti);
790+
return '${_rtiToString(questionArgument, genericContext)}?';
791+
}
792+
793+
if (kind == Rti.kindFutureOr) {
794+
Rti futureOrArgument = Rti._getFutureOrArgument(rti);
795+
return 'FutureOr<${_rtiToString(futureOrArgument, genericContext)}>';
796+
}
797+
773798
if (kind == Rti.kindInterface) {
774799
String name = Rti._getInterfaceName(rti);
775800
name = _unminifyOrTag(name);
@@ -814,61 +839,75 @@ String _rtiArrayToDebugString(Object array) {
814839
return s + ']';
815840
}
816841

817-
String _rtiToDebugString(Rti rti) {
818-
String functionParametersToString(_FunctionParameters parameters) {
819-
// TODO(fishythefish): Support required named parameters.
820-
String s = '(', sep = '';
821-
var requiredPositional =
822-
_FunctionParameters._getRequiredPositional(parameters);
823-
int requiredPositionalLength = _Utils.arrayLength(requiredPositional);
824-
var optionalPositional =
825-
_FunctionParameters._getOptionalPositional(parameters);
826-
int optionalPositionalLength = _Utils.arrayLength(optionalPositional);
827-
var optionalNamed = _FunctionParameters._getOptionalNamed(parameters);
828-
int optionalNamedLength = _Utils.arrayLength(optionalNamed);
829-
assert(optionalPositionalLength == 0 || optionalNamedLength == 0);
842+
String functionParametersToString(_FunctionParameters parameters) {
843+
// TODO(fishythefish): Support required named parameters.
844+
String s = '(', sep = '';
845+
var requiredPositional =
846+
_FunctionParameters._getRequiredPositional(parameters);
847+
int requiredPositionalLength = _Utils.arrayLength(requiredPositional);
848+
var optionalPositional =
849+
_FunctionParameters._getOptionalPositional(parameters);
850+
int optionalPositionalLength = _Utils.arrayLength(optionalPositional);
851+
var optionalNamed = _FunctionParameters._getOptionalNamed(parameters);
852+
int optionalNamedLength = _Utils.arrayLength(optionalNamed);
853+
assert(optionalPositionalLength == 0 || optionalNamedLength == 0);
854+
855+
for (int i = 0; i < requiredPositionalLength; i++) {
856+
s += sep +
857+
_rtiToDebugString(_castToRti(_Utils.arrayAt(requiredPositional, i)));
858+
sep = ', ';
859+
}
830860

831-
for (int i = 0; i < requiredPositionalLength; i++) {
861+
if (optionalPositionalLength > 0) {
862+
s += sep + '[';
863+
sep = '';
864+
for (int i = 0; i < optionalPositionalLength; i++) {
832865
s += sep +
833-
_rtiToDebugString(_castToRti(_Utils.arrayAt(requiredPositional, i)));
866+
_rtiToDebugString(_castToRti(_Utils.arrayAt(optionalPositional, i)));
834867
sep = ', ';
835868
}
869+
s += ']';
870+
}
836871

837-
if (optionalPositionalLength > 0) {
838-
s += sep + '[';
839-
sep = '';
840-
for (int i = 0; i < optionalPositionalLength; i++) {
841-
s += sep +
842-
_rtiToDebugString(
843-
_castToRti(_Utils.arrayAt(optionalPositional, i)));
844-
sep = ', ';
845-
}
846-
s += ']';
847-
}
848-
849-
if (optionalNamedLength > 0) {
850-
s += sep + '{';
851-
sep = '';
852-
for (int i = 0; i < optionalNamedLength; i += 2) {
853-
s += sep +
854-
_Utils.asString(_Utils.arrayAt(optionalNamed, i)) +
855-
': ' +
856-
_rtiToDebugString(_castToRti(_Utils.arrayAt(optionalNamed, i + 1)));
857-
sep = ', ';
858-
}
859-
s += '}';
872+
if (optionalNamedLength > 0) {
873+
s += sep + '{';
874+
sep = '';
875+
for (int i = 0; i < optionalNamedLength; i += 2) {
876+
s += sep +
877+
_rtiToDebugString(_castToRti(_Utils.arrayAt(optionalNamed, i + 1))) +
878+
' ' +
879+
_Utils.asString(_Utils.arrayAt(optionalNamed, i));
880+
sep = ', ';
860881
}
861-
862-
return s + ')';
882+
s += '}';
863883
}
864884

885+
return s + ')';
886+
}
887+
888+
String _rtiToDebugString(Rti rti) {
865889
int kind = Rti._getKind(rti);
866890

867891
if (kind == Rti.kindDynamic) return 'dynamic';
868892
if (kind == Rti.kindVoid) return 'void';
869893
if (kind == Rti.kindNever) return 'Never';
870894
if (kind == Rti.kindAny) return 'any';
871895

896+
if (kind == Rti.kindStar) {
897+
Rti starArgument = Rti._getStarArgument(rti);
898+
return 'star(${_rtiToDebugString(starArgument)})';
899+
}
900+
901+
if (kind == Rti.kindQuestion) {
902+
Rti questionArgument = Rti._getQuestionArgument(rti);
903+
return 'question(${_rtiToDebugString(questionArgument)})';
904+
}
905+
906+
if (kind == Rti.kindFutureOr) {
907+
Rti futureOrArgument = Rti._getFutureOrArgument(rti);
908+
return 'FutureOr(${_rtiToDebugString(futureOrArgument)})';
909+
}
910+
872911
if (kind == Rti.kindInterface) {
873912
String name = Rti._getInterfaceName(rti);
874913
var arguments = Rti._getInterfaceTypeArguments(rti);

0 commit comments

Comments
 (0)