[ DWDS ] Prepare for 25.1.0+1 (#2696)
* [DWDS] Don't send PauseInterrupted event during a hot reload (#2695)
Fixes https://github.com/dart-lang/sdk/issues/61560
We rely on a pause within a hot reload to pause execution so that we can reregister breakpoints. However, the existing pause mechanism always sends a PauseInterrupted event, which then triggers the client to think this is a normal pause event and not an internal detail. Instead, we should have the ChromeProxyService signal to the debugger that this is an "internal pause" and therefore it should not send a regular pause event and should use a completer to signal the pause is done.
Tests are refactored and updated to correctly check for the events when reregistering breakpoints. Specifically, it checks no other events besides the expected ones are sent.
* [ DWDS ] Expose `dtdUri` via `DebugConnection` (#2694)
This is needed to access the DTD instance spawned by DDS.
---------
Co-authored-by: Srujan Gaddam <58529443+srujzs@users.noreply.github.com>
diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index 7208f3e..0fd5b5e 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 25.1.0+1
+
+- Bump SDK constraint to ^3.10.0
+- Added 'scriptUri' parameter to compileExpressionToJs
+- Fix an issue in `reloadSources` where a `PauseInterrupted` event was sent. - [#61560](https://github.com/dart-lang/sdk/issues/61560)
+- Expose `dtdUri` via `DebugConnection`.
+
## 25.1.0
- Added `DartDevelopmentServiceConfiguration` to allow for configuring DDS behavior.
diff --git a/dwds/lib/src/connections/debug_connection.dart b/dwds/lib/src/connections/debug_connection.dart
index 6a84cef..9de1a79 100644
--- a/dwds/lib/src/connections/debug_connection.dart
+++ b/dwds/lib/src/connections/debug_connection.dart
@@ -41,6 +41,9 @@
/// The endpoint of the Dart DevTools instance.
String? get devToolsUri => _appDebugServices.devToolsUri?.toString();
+ /// The endpoint of the Dart Tooling Daemon (DTD).
+ String? get dtdUri => _appDebugServices.dtdUri?.toString();
+
/// A client of the Dart VM Service with DWDS specific extensions.
VmService get vmService => _appDebugServices.dwdsVmClient.client;
diff --git a/dwds/lib/src/debugging/debugger.dart b/dwds/lib/src/debugging/debugger.dart
index e68e5d3..3f6961e 100644
--- a/dwds/lib/src/debugging/debugger.dart
+++ b/dwds/lib/src/debugging/debugger.dart
@@ -97,15 +97,28 @@
bool _isStepping = false;
DartLocation? _previousSteppingLocation;
+ // If not null and not completed, the pause handler completes this instead of
+ // sending a `PauseInterrupted` event to the event stream.
+ //
+ // In some cases e.g. a hot reload, DWDS pauses the execution itself in order
+ // to handle debugging logic like breakpoints. In such cases, sending the
+ // event to the event stream may trigger the client to believe that the user
+ // sent the event. To avoid that and still signal that a pause is completed,
+ // this completer is used. See https://github.com/dart-lang/sdk/issues/61560
+ // for more details.
+ Completer<void>? _internalPauseCompleter;
+
void updateInspector(AppInspectorInterface appInspector) {
inspector = appInspector;
_breakpoints.inspector = appInspector;
}
- Future<Success> pause() async {
+ Future<Success> pause({bool internalPause = false}) async {
_isStepping = false;
+ if (internalPause) _internalPauseCompleter = Completer<void>();
final result = await _remoteDebugger.pause();
handleErrorIfPresent(result);
+ await _internalPauseCompleter?.future;
return Success();
}
@@ -635,7 +648,14 @@
// DevTools is showing an overlay. Both cannot be shown at the same time.
// _showPausedOverlay();
isolate.pauseEvent = event;
- _streamNotify('Debug', event);
+ final internalPauseCompleter = _internalPauseCompleter;
+ if (event.kind == EventKind.kPauseInterrupted &&
+ internalPauseCompleter != null &&
+ !internalPauseCompleter.isCompleted) {
+ internalPauseCompleter.complete();
+ } else {
+ _streamNotify('Debug', event);
+ }
}
/// Handles resume events coming from the Chrome connection.
diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart
index ec669f4..84f4a07 100644
--- a/dwds/lib/src/handlers/dev_handler.dart
+++ b/dwds/lib/src/handlers/dev_handler.dart
@@ -869,6 +869,7 @@
dwdsStats,
dds?.wsUri,
dds?.devToolsUri,
+ dds?.dtdUri,
);
final encodedUri = await debugService.encodedUri;
_logger.info('Debug service listening on $encodedUri\n');
diff --git a/dwds/lib/src/injected/client.js b/dwds/lib/src/injected/client.js
index 4680e9b..daf6c2f 100644
--- a/dwds/lib/src/injected/client.js
+++ b/dwds/lib/src/injected/client.js
@@ -1,4 +1,4 @@
-// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.10.0-142.0.dev.
+// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.10.0-290.1.beta.
// The code supports the following hooks:
// dartPrint(message):
// if this function is defined it is called instead of the Dart [print]
@@ -640,7 +640,7 @@
for (i = left + 1, t1 = J.getInterceptor$asx(a); i <= right; ++i) {
el = t1.$index(a, i);
j = i;
- while (true) {
+ for (;;) {
if (j > left) {
t2 = compare.call$2(t1.$index(a, j - 1), el);
if (typeof t2 !== "number")
@@ -764,7 +764,7 @@
}
++less;
} else
- for (; true;) {
+ for (;;) {
comp = compare.call$2(t1.$index(a, great), el2);
if (comp > 0) {
--great;
@@ -798,7 +798,7 @@
}
++less;
} else if (compare.call$2(ak, el4) > 0)
- for (; true;)
+ for (;;)
if (compare.call$2(t1.$index(a, great), el4) > 0) {
--great;
if (great < k)
@@ -831,9 +831,9 @@
if (pivots_are_equal)
return;
if (less < index1 && great > index5) {
- for (; J.$eq$(compare.call$2(t1.$index(a, less), el2), 0);)
+ while (J.$eq$(compare.call$2(t1.$index(a, less), el2), 0))
++less;
- for (; J.$eq$(compare.call$2(t1.$index(a, great), el4), 0);)
+ while (J.$eq$(compare.call$2(t1.$index(a, great), el4), 0))
--great;
for (k = less; k <= great; ++k) {
ak = t1.$index(a, k);
@@ -844,7 +844,7 @@
}
++less;
} else if (compare.call$2(ak, el4) === 0)
- for (; true;)
+ for (;;)
if (compare.call$2(t1.$index(a, great), el4) === 0) {
--great;
if (great < k)
@@ -2996,7 +2996,7 @@
},
_Universe_findRule(universe, targetType) {
var rule = universe.tR[targetType];
- for (; typeof rule == "string";)
+ while (typeof rule == "string")
rule = universe.tR[rule];
return rule;
},
@@ -3696,7 +3696,7 @@
tNamedLength = tNamed.length;
for (sIndex = 0, tIndex = 0; tIndex < tNamedLength; tIndex += 3) {
tName = tNamed[tIndex];
- for (; true;) {
+ for (;;) {
if (sIndex >= sNamedLength)
return false;
sName = sNamed[sIndex];
@@ -3718,7 +3718,7 @@
break;
}
}
- for (; sIndex < sNamedLength;) {
+ while (sIndex < sNamedLength) {
if (sNamed[sIndex + 1])
return false;
sIndex += 3;
@@ -3729,7 +3729,7 @@
var rule, recipes, $length, supertypeArgs, i,
sName = s._primary,
tName = t._primary;
- for (; sName !== tName;) {
+ while (sName !== tName) {
rule = universe.tR[sName];
if (rule == null)
return false;
@@ -4099,7 +4099,7 @@
_Future__propagateToListeners(source, listeners) {
var t2, t3, _box_0, t4, t5, hasError, asyncError, nextListener, nextListener0, sourceResult, t6, zone, oldZone, result, current, _box_1 = {},
t1 = _box_1.source = source;
- for (t2 = type$.AsyncError, t3 = type$.nullable__FutureListener_dynamic_dynamic; true;) {
+ for (t2 = type$.AsyncError, t3 = type$.nullable__FutureListener_dynamic_dynamic;;) {
_box_0 = {};
t4 = t1._state;
t5 = (t4 & 16) === 0;
@@ -5485,7 +5485,7 @@
newEnd = end,
index = newEnd,
padding = 0;
- while (true) {
+ for (;;) {
if (!(index > start && padding < 2))
break;
c$0: {
@@ -5817,7 +5817,7 @@
_BigIntImpl__normalize(used, digits) {
var t2,
t1 = digits.length;
- while (true) {
+ for (;;) {
if (used > 0) {
t2 = used - 1;
if (!(t2 < t1))
@@ -6191,7 +6191,7 @@
while (iterator.moveNext$0());
} else {
string += A.S(iterator.get$current());
- for (; iterator.moveNext$0();)
+ while (iterator.moveNext$0())
string = string + separator + A.S(iterator.get$current());
}
return string;
@@ -6377,7 +6377,7 @@
var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,
it = J.get$iterator$ax(iterable),
$length = 0, count = 0;
- while (true) {
+ for (;;) {
if (!($length < 80 || count < 3))
break;
if (!it.moveNext$0())
@@ -6416,7 +6416,7 @@
ultimate0 = it.get$current();
++count;
if (count > 100) {
- while (true) {
+ for (;;) {
if (!($length > 75 && count > 3))
break;
if (0 >= parts.length)
@@ -6438,7 +6438,7 @@
elision = "...";
} else
elision = null;
- while (true) {
+ for (;;) {
if (!($length > 80 && parts.length > 3))
break;
if (0 >= parts.length)
@@ -6628,42 +6628,62 @@
A._asString(encodedComponent);
return A._Uri__uriDecode(encodedComponent, 0, encodedComponent.length, B.C_Utf8Codec, false);
},
- Uri__parseIPv4Address(host, start, end) {
- var t1, i, partStart, partIndex, char, part, partIndex0,
- _s43_ = "IPv4 address should contain exactly 4 parts",
- _s37_ = "each part must be in the range 0..255",
- error = new A.Uri__parseIPv4Address_error(host),
- result = new Uint8Array(4);
- for (t1 = host.length, i = start, partStart = i, partIndex = 0; i < end; ++i) {
- if (!(i >= 0 && i < t1))
- return A.ioore(host, i);
- char = host.charCodeAt(i);
- if (char !== 46) {
- if ((char ^ 48) > 9)
- error.call$2("invalid character", i);
- } else {
- if (partIndex === 3)
- error.call$2(_s43_, i);
- part = A.int_parse(B.JSString_methods.substring$2(host, partStart, i), null);
- if (part > 255)
- error.call$2(_s37_, partStart);
- partIndex0 = partIndex + 1;
- if (!(partIndex < 4))
- return A.ioore(result, partIndex);
- result[partIndex] = part;
- partStart = i + 1;
- partIndex = partIndex0;
+ Uri__ipv4FormatError(msg, source, position) {
+ throw A.wrapException(A.FormatException$("Illegal IPv4 address, " + msg, source, position));
+ },
+ Uri__parseIPv4Address(host, start, end, target, targetOffset) {
+ var t1, octetStart, cursor, octetIndex, octetValue, char, digit, octetIndex0, t2,
+ _s17_ = "invalid character";
+ for (t1 = host.length, octetStart = start, cursor = octetStart, octetIndex = 0, octetValue = 0;;) {
+ if (cursor >= end)
+ char = 0;
+ else {
+ if (!(cursor >= 0 && cursor < t1))
+ return A.ioore(host, cursor);
+ char = host.charCodeAt(cursor);
}
+ digit = char ^ 48;
+ if (digit <= 9) {
+ if (octetValue !== 0 || cursor === octetStart) {
+ octetValue = octetValue * 10 + digit;
+ if (octetValue <= 255) {
+ ++cursor;
+ continue;
+ }
+ A.Uri__ipv4FormatError("each part must be in the range 0..255", host, octetStart);
+ }
+ A.Uri__ipv4FormatError("parts must not have leading zeros", host, octetStart);
+ }
+ if (cursor === octetStart) {
+ if (cursor === end)
+ break;
+ A.Uri__ipv4FormatError(_s17_, host, cursor);
+ }
+ octetIndex0 = octetIndex + 1;
+ t2 = targetOffset + octetIndex;
+ target.$flags & 2 && A.throwUnsupportedOperation(target);
+ if (!(t2 < 16))
+ return A.ioore(target, t2);
+ target[t2] = octetValue;
+ if (char === 46) {
+ if (octetIndex0 < 4) {
+ ++cursor;
+ octetIndex = octetIndex0;
+ octetStart = cursor;
+ octetValue = 0;
+ continue;
+ }
+ break;
+ }
+ if (cursor === end) {
+ if (octetIndex0 === 4)
+ return;
+ break;
+ }
+ A.Uri__ipv4FormatError(_s17_, host, cursor);
+ octetIndex = octetIndex0;
}
- if (partIndex !== 3)
- error.call$2(_s43_, end);
- part = A.int_parse(B.JSString_methods.substring$2(host, partStart, end), null);
- if (part > 255)
- error.call$2(_s37_, partStart);
- if (!(partIndex < 4))
- return A.ioore(result, partIndex);
- result[partIndex] = part;
- return result;
+ A.Uri__ipv4FormatError("IPv4 address should contain exactly 4 parts", host, cursor);
},
Uri__validateIPvAddress(host, start, end) {
var error;
@@ -6685,7 +6705,7 @@
_s38_ = "Missing hex-digit in IPvFuture address",
_s128_ = string$.x00_____;
++start;
- for (t1 = host.length, cursor = start; true; cursor = cursor0) {
+ for (t1 = host.length, cursor = start;; cursor = cursor0) {
if (cursor < end) {
cursor0 = cursor + 1;
if (!(cursor >= 0 && cursor < t1))
@@ -6710,7 +6730,7 @@
}
if (cursor === end)
return new A.FormatException("Missing address in IPvFuture address, host, cursor", null, null);
- for (; true;) {
+ for (;;) {
if (!(cursor >= 0 && cursor < t1))
return A.ioore(host, cursor);
char = host.charCodeAt(cursor);
@@ -6726,83 +6746,128 @@
}
},
Uri_parseIPv6Address(host, start, end) {
- var parts, i, partStart, wildcardSeen, seenDot, char, atEnd, last, bytes, wildCardLength, index, value, j, t2, _null = null,
- error = new A.Uri_parseIPv6Address_error(host),
- parseHex = new A.Uri_parseIPv6Address_parseHex(error, host),
- t1 = host.length;
- if (t1 < 2)
- error.call$2("address is too short", _null);
- parts = A._setArrayType([], type$.JSArray_int);
- for (i = start, partStart = i, wildcardSeen = false, seenDot = false; i < end; ++i) {
- if (!(i >= 0 && i < t1))
- return A.ioore(host, i);
- char = host.charCodeAt(i);
- if (char === 58) {
- if (i === start) {
- ++i;
- if (!(i < t1))
- return A.ioore(host, i);
- if (host.charCodeAt(i) !== 58)
- error.call$2("invalid start colon.", i);
- partStart = i;
- }
- if (i === partStart) {
- if (wildcardSeen)
- error.call$2("only one wildcard `::` is allowed", i);
- B.JSArray_methods.add$1(parts, -1);
- wildcardSeen = true;
- } else
- B.JSArray_methods.add$1(parts, parseHex.call$2(partStart, i));
- partStart = i + 1;
- } else if (char === 46)
- seenDot = true;
- }
- if (parts.length === 0)
- error.call$2("too few parts", _null);
- atEnd = partStart === end;
- t1 = B.JSArray_methods.get$last(parts);
- if (atEnd && t1 !== -1)
- error.call$2("expected a part after last `:`", end);
- if (!atEnd)
- if (!seenDot)
- B.JSArray_methods.add$1(parts, parseHex.call$2(partStart, end));
- else {
- last = A.Uri__parseIPv4Address(host, partStart, end);
- B.JSArray_methods.add$1(parts, (last[0] << 8 | last[1]) >>> 0);
- B.JSArray_methods.add$1(parts, (last[2] << 8 | last[3]) >>> 0);
+ var result, t1, wildcardAt, partCount, t2, cursor, partStart, hexValue, decValue, char, _0_0, decValue0, hexDigit, _1_0, t3, partCount0, partAfterWildcard, partsAfterWildcard, positionAfterWildcard, newPositionAfterWildcard,
+ _s39_ = "an address must contain at most 8 parts",
+ error = new A.Uri_parseIPv6Address_error(host);
+ if (end - start < 2)
+ error.call$2("address is too short", null);
+ result = new Uint8Array(16);
+ t1 = host.length;
+ if (!(start >= 0 && start < t1))
+ return A.ioore(host, start);
+ wildcardAt = -1;
+ partCount = 0;
+ if (host.charCodeAt(start) === 58) {
+ t2 = start + 1;
+ if (!(t2 < t1))
+ return A.ioore(host, t2);
+ if (host.charCodeAt(t2) === 58) {
+ cursor = start + 2;
+ partStart = cursor;
+ wildcardAt = 0;
+ partCount = 1;
+ } else {
+ error.call$2("invalid start colon", start);
+ cursor = start;
+ partStart = cursor;
}
- if (wildcardSeen) {
- if (parts.length > 7)
- error.call$2("an address with a wildcard must have less than 7 parts", _null);
- } else if (parts.length !== 8)
- error.call$2("an address without a wildcard must contain exactly 8 parts", _null);
- bytes = new Uint8Array(16);
- for (t1 = parts.length, wildCardLength = 9 - t1, i = 0, index = 0; i < t1; ++i) {
- value = parts[i];
- if (value === -1)
- for (j = 0; j < wildCardLength; ++j) {
- if (!(index >= 0 && index < 16))
- return A.ioore(bytes, index);
- bytes[index] = 0;
- t2 = index + 1;
- if (!(t2 < 16))
- return A.ioore(bytes, t2);
- bytes[t2] = 0;
- index += 2;
- }
+ } else {
+ cursor = start;
+ partStart = cursor;
+ }
+ for (hexValue = 0, decValue = true;;) {
+ if (cursor >= end)
+ char = 0;
else {
- t2 = B.JSInt_methods._shrOtherPositive$1(value, 8);
- if (!(index >= 0 && index < 16))
- return A.ioore(bytes, index);
- bytes[index] = t2;
- t2 = index + 1;
+ if (!(cursor < t1))
+ return A.ioore(host, cursor);
+ char = host.charCodeAt(cursor);
+ }
+ $label0$0: {
+ _0_0 = char ^ 48;
+ decValue0 = false;
+ if (_0_0 <= 9)
+ hexDigit = _0_0;
+ else {
+ _1_0 = char | 32;
+ if (_1_0 >= 97 && _1_0 <= 102)
+ hexDigit = _1_0 - 87;
+ else
+ break $label0$0;
+ decValue = decValue0;
+ }
+ if (cursor < partStart + 4) {
+ hexValue = hexValue * 16 + hexDigit;
+ ++cursor;
+ continue;
+ }
+ error.call$2("an IPv6 part can contain a maximum of 4 hex digits", partStart);
+ }
+ if (cursor > partStart) {
+ if (char === 46) {
+ if (decValue) {
+ if (partCount <= 6) {
+ A.Uri__parseIPv4Address(host, partStart, end, result, partCount * 2);
+ partCount += 2;
+ cursor = end;
+ break;
+ }
+ error.call$2(_s39_, partStart);
+ }
+ break;
+ }
+ t2 = partCount * 2;
+ t3 = B.JSInt_methods._shrOtherPositive$1(hexValue, 8);
if (!(t2 < 16))
- return A.ioore(bytes, t2);
- bytes[t2] = value & 255;
- index += 2;
+ return A.ioore(result, t2);
+ result[t2] = t3;
+ ++t2;
+ if (!(t2 < 16))
+ return A.ioore(result, t2);
+ result[t2] = hexValue & 255;
+ ++partCount;
+ if (char === 58) {
+ if (partCount < 8) {
+ ++cursor;
+ partStart = cursor;
+ hexValue = 0;
+ decValue = true;
+ continue;
+ }
+ error.call$2(_s39_, cursor);
+ }
+ break;
+ }
+ if (char === 58) {
+ if (wildcardAt < 0) {
+ partCount0 = partCount + 1;
+ ++cursor;
+ wildcardAt = partCount;
+ partCount = partCount0;
+ partStart = cursor;
+ continue;
+ }
+ error.call$2("only one wildcard `::` is allowed", cursor);
+ }
+ if (wildcardAt !== partCount - 1)
+ error.call$2("missing part", cursor);
+ break;
+ }
+ if (cursor < end)
+ error.call$2("invalid character", cursor);
+ if (partCount < 8) {
+ if (wildcardAt < 0)
+ error.call$2("an address without a wildcard must contain exactly 8 parts", end);
+ partAfterWildcard = wildcardAt + 1;
+ partsAfterWildcard = partCount - partAfterWildcard;
+ if (partsAfterWildcard > 0) {
+ positionAfterWildcard = partAfterWildcard * 2;
+ newPositionAfterWildcard = 16 - partsAfterWildcard * 2;
+ B.NativeUint8List_methods.setRange$4(result, newPositionAfterWildcard, 16, result, positionAfterWildcard);
+ B.NativeUint8List_methods.fillRange$3(result, positionAfterWildcard, newPositionAfterWildcard, 0);
}
}
- return bytes;
+ return result;
},
_Uri$_internal(scheme, _userInfo, _host, _port, path, _query, _fragment) {
return new A._Uri(scheme, _userInfo, _host, _port, path, _query, _fragment);
@@ -7319,32 +7384,22 @@
for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
segment = t1[_i];
if (".." === segment) {
- appendSlash = output.length !== 0 && B.JSArray_methods.get$last(output) !== "..";
- if (appendSlash) {
+ if (output.length !== 0 && B.JSArray_methods.get$last(output) !== "..") {
if (0 >= output.length)
return A.ioore(output, -1);
output.pop();
} else
B.JSArray_methods.add$1(output, "..");
+ appendSlash = true;
} else {
appendSlash = "." === segment;
if (!appendSlash)
- B.JSArray_methods.add$1(output, segment);
+ B.JSArray_methods.add$1(output, segment.length === 0 && output.length === 0 ? "./" : segment);
}
}
- t1 = output.length;
- if (t1 !== 0)
- if (t1 === 1) {
- if (0 >= t1)
- return A.ioore(output, 0);
- t1 = output[0].length === 0;
- } else
- t1 = false;
- else
- t1 = true;
- if (t1)
+ if (output.length === 0)
return "./";
- if (appendSlash || B.JSArray_methods.get$last(output) === "..")
+ if (appendSlash)
B.JSArray_methods.add$1(output, "");
if (!allowScheme) {
if (0 >= output.length)
@@ -7401,7 +7456,7 @@
var simple, codeUnit, t2, bytes,
t1 = text.length,
i = start;
- while (true) {
+ for (;;) {
if (!(i < end)) {
simple = true;
break;
@@ -7465,7 +7520,7 @@
}
if (slashIndex < 0 && i > start)
throw A.wrapException(A.FormatException$(_s17_, text, i));
- for (; char !== 44;) {
+ while (char !== 44) {
B.JSArray_methods.add$1(indices, i);
++i;
for (equalsIndex = -1; i < t1; ++i) {
@@ -7647,16 +7702,9 @@
StringBuffer: function StringBuffer(t0) {
this._contents = t0;
},
- Uri__parseIPv4Address_error: function Uri__parseIPv4Address_error(t0) {
- this.host = t0;
- },
Uri_parseIPv6Address_error: function Uri_parseIPv6Address_error(t0) {
this.host = t0;
},
- Uri_parseIPv6Address_parseHex: function Uri_parseIPv6Address_parseHex(t0, t1) {
- this.error = t0;
- this.host = t1;
- },
_Uri: function _Uri(t0, t1, t2, t3, t4, t5, t6) {
var _ = this;
_.scheme = t0;
@@ -7718,6 +7766,9 @@
FutureOfVoidToJSPromise_get_toJS(_this) {
return A._asJSObject(new init.G.Promise(A._functionToJS2(new A.FutureOfVoidToJSPromise_get_toJS_closure(_this))));
},
+ NullRejectionException: function NullRejectionException(t0) {
+ this.isUndefined = t0;
+ },
FutureOfJSAnyToJSPromise_get_toJS_closure: function FutureOfJSAnyToJSPromise_get_toJS_closure(t0) {
this._this = t0;
},
@@ -7862,9 +7913,6 @@
dartify_convert: function dartify_convert(t0) {
this._convertedObjects = t0;
},
- NullRejectionException: function NullRejectionException(t0) {
- this.isUndefined = t0;
- },
max(a, b, $T) {
A.checkTypeBound($T, type$.num, "T", "max");
return Math.max($T._as(a), $T._as(b));
@@ -8417,7 +8465,7 @@
QueueList__nextPowerOf2(number) {
var nextNumber;
number = (number << 1 >>> 0) - 1;
- for (; true; number = nextNumber) {
+ for (;; number = nextNumber) {
nextNumber = (number & number - 1) >>> 0;
if (nextNumber === 0)
return number;
@@ -8845,7 +8893,7 @@
chunk1 = "";
chunk2 = "";
chunk3 = "";
- while (true) {
+ for (;;) {
if (!!(d4 === 0 && d3 === 0))
break;
q = B.JSInt_methods.$tdiv(d4, fatRadix);
@@ -9000,7 +9048,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -9164,7 +9212,7 @@
var $async$Response_fromStream = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -9862,7 +9910,7 @@
var $async$BrowserWebSocket_connect = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10038,7 +10086,7 @@
var $async$_authenticateUser = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10078,7 +10126,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10137,7 +10185,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10216,7 +10264,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10347,7 +10395,7 @@
var $async$_Debugger_maybeInvokeFlutterDisassemble = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10375,7 +10423,7 @@
var $async$_Debugger_maybeInvokeFlutterReassemble = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10428,7 +10476,7 @@
var $async$SdkDeveloperExtension_maybeInvokeFlutterDisassemble = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10458,7 +10506,7 @@
var $async$RequireRestarter_create = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -10726,7 +10774,7 @@
findLineStart(context, text, column) {
var beginningOfLine, index, lineStart;
if (text.length === 0)
- for (beginningOfLine = 0; true;) {
+ for (beginningOfLine = 0;;) {
index = B.JSString_methods.indexOf$2(context, "\n", beginningOfLine);
if (index === -1)
return context.length - beginningOfLine >= column ? beginningOfLine : null;
@@ -10735,7 +10783,7 @@
beginningOfLine = index + 1;
}
index = B.JSString_methods.indexOf$1(context, text);
- for (; index !== -1;) {
+ while (index !== -1) {
lineStart = index === 0 ? 0 : B.JSString_methods.lastIndexOf$2(context, "\n", index - 1) + 1;
if (column === index - lineStart)
return lineStart;
@@ -11568,7 +11616,7 @@
return receiver;
if (times !== times >>> 0)
throw A.wrapException(B.C_OutOfMemoryError);
- for (s = receiver, result = ""; true;) {
+ for (s = receiver, result = "";;) {
if ((times & 1) === 1)
result = s + result;
times = times >>> 1;
@@ -12699,7 +12747,7 @@
A._instanceType(_this)._eval$1("~(1,2)")._as(action);
cell = _this._first;
modifications = _this._modifications;
- for (; cell != null;) {
+ while (cell != null) {
action.call$2(cell.hashMapCellKey, cell.hashMapCellValue);
if (modifications !== _this._modifications)
throw A.wrapException(A.ConcurrentModificationError$(_this));
@@ -12922,7 +12970,7 @@
call$1(o) {
return this.getTag(o);
},
- $signature: 6
+ $signature: 5
};
A.initHooks_closure0.prototype = {
call$2(o, tag) {
@@ -12967,7 +13015,7 @@
_fieldKeys$0() {
var t1,
shapeTag = this.$shape;
- for (; $._Record__computedFieldKeys.length <= shapeTag;)
+ while ($._Record__computedFieldKeys.length <= shapeTag)
B.JSArray_methods.add$1($._Record__computedFieldKeys, null);
t1 = $._Record__computedFieldKeys[shapeTag];
if (t1 == null) {
@@ -13513,7 +13561,7 @@
t1.storedCallback = null;
f.call$0();
},
- $signature: 4
+ $signature: 6
};
A._AsyncRun__initializeScheduleImmediate_closure.prototype = {
call$1(callback) {
@@ -13658,7 +13706,7 @@
var errorCode = this.controller.cancelationFuture != null ? 2 : 0;
this.bodyFunction.call$2(errorCode, null);
},
- $signature: 4
+ $signature: 6
};
A._AsyncStarStreamController.prototype = {
_AsyncStarStreamController$1(body, $T) {
@@ -14119,7 +14167,7 @@
call$1(__wc0_formal) {
this.joinedResult._completeWithResultOf$1(this.originalSource);
},
- $signature: 4
+ $signature: 6
};
A._Future__propagateToListeners_handleWhenCompleteCallback_closure0.prototype = {
call$2(e, s) {
@@ -14127,7 +14175,7 @@
type$.StackTrace._as(s);
this.joinedResult._completeErrorObject$1(new A.AsyncError(e, s));
},
- $signature: 5
+ $signature: 4
};
A._Future__propagateToListeners_handleValueCallback.prototype = {
call$0() {
@@ -14227,7 +14275,7 @@
this._future._completeErrorObject$1(new A.AsyncError(e, s));
}
},
- $signature: 5
+ $signature: 4
};
A._AsyncCallbackEntry.prototype = {};
A.Stream.prototype = {
@@ -14580,7 +14628,7 @@
t1._addError$2(A._asObject(e), type$.StackTrace._as(s));
t1._close$0();
},
- $signature: 5
+ $signature: 4
};
A._AddStreamState_cancel_closure.prototype = {
call$0() {
@@ -14794,7 +14842,7 @@
_this._state = t1;
}
}
- for (; true; wasInputPaused = isInputPaused) {
+ for (;; wasInputPaused = isInputPaused) {
if ((t1 & 8) !== 0) {
_this._pending = null;
return;
@@ -14835,7 +14883,7 @@
else
t1._completeErrorObject$1(new A.AsyncError(error, stackTrace));
},
- $signature: 5
+ $signature: 4
};
A._BufferingStreamSubscription_asFuture__closure.prototype = {
call$0() {
@@ -15823,7 +15871,7 @@
call$1(v) {
return this.K._is(v);
},
- $signature: 12
+ $signature: 15
};
A._HashMapKeyIterable.prototype = {
get$length(_) {
@@ -15904,7 +15952,7 @@
call$1(v) {
return this.K._is(v);
},
- $signature: 12
+ $signature: 15
};
A._HashSet.prototype = {
get$iterator(_) {
@@ -16323,11 +16371,13 @@
return A.SubListIterable$(receiver, start, end, A.instanceType(receiver)._eval$1("ListBase.E"));
},
fillRange$3(receiver, start, end, fill) {
- var i;
- A.instanceType(receiver)._eval$1("ListBase.E")._as(fill);
+ var value, i,
+ t1 = A.instanceType(receiver);
+ t1._eval$1("ListBase.E?")._as(fill);
+ value = fill == null ? t1._eval$1("ListBase.E")._as(fill) : fill;
A.RangeError_checkValidRange(start, end, this.get$length(receiver));
for (i = start; i < end; ++i)
- this.$indexSet(receiver, i, fill);
+ this.$indexSet(receiver, i, value);
},
setRange$4(receiver, start, end, iterable, skipCount) {
var $length, otherStart, otherList, t1, i;
@@ -16686,7 +16736,7 @@
return -1;
}
compare = _this._compare;
- for (comparison = _null, current = root, newTreeLeft = comparison, left = newTreeLeft, newTreeRight = left, right = newTreeRight; true;) {
+ for (comparison = _null, current = root, newTreeLeft = comparison, left = newTreeLeft, newTreeRight = left, right = newTreeRight;;) {
comparison = compare.call$2(current.key, key);
if (comparison > 0) {
currentLeft = current._left;
@@ -16754,7 +16804,7 @@
_splayMin$1(node) {
var current, modified, left;
this.$ti._eval$1("_SplayTree.1")._as(node);
- for (current = node, modified = 0; true; current = left, modified = 1) {
+ for (current = node, modified = 0;; current = left, modified = 1) {
left = current._left;
if (left != null) {
current.set$_left(left._right);
@@ -16768,7 +16818,7 @@
_splayMax$1(node) {
var current, modified, right;
this.$ti._eval$1("_SplayTree.1")._as(node);
- for (current = node, modified = 0; true; current = right, modified = 1) {
+ for (current = node, modified = 0;; current = right, modified = 1) {
right = current._right;
if (right != null) {
current.set$_right(right._left);
@@ -16836,7 +16886,7 @@
node = B.JSArray_methods.get$last(t1);
next = node._right;
if (next != null) {
- for (; next != null;) {
+ while (next != null) {
B.JSArray_methods.add$1(t1, next);
next = next._left;
}
@@ -16845,7 +16895,7 @@
if (0 >= t1.length)
return A.ioore(t1, -1);
t1.pop();
- while (true) {
+ for (;;) {
if (!(t1.length !== 0 && B.JSArray_methods.get$last(t1)._right === node))
break;
if (0 >= t1.length)
@@ -17242,7 +17292,7 @@
endLength = B.JSInt_methods.$mod(t2 - 1, 4) + 1;
if (endLength === 1)
throw A.wrapException(A.FormatException$(_s31_, source, end));
- for (; endLength < 4;) {
+ while (endLength < 4) {
t1 += "=";
buffer._contents = t1;
++endLength;
@@ -17850,8 +17900,8 @@
return A.ioore(bytes, start);
byte = bytes[start];
$label0$0:
- for (t2 = _this.allowMalformed; true;) {
- for (; true; i = i0) {
+ for (t2 = _this.allowMalformed;;) {
+ for (;; i = i0) {
if (!(byte >= 0 && byte < 256))
return A.ioore(_s256_, byte);
type = _s256_.charCodeAt(byte) & 31;
@@ -17903,7 +17953,7 @@
return A.ioore(bytes, i);
byte = bytes[i];
if (byte < 128) {
- while (true) {
+ for (;;) {
if (!(i0 < end)) {
markEnd = end;
break;
@@ -18199,7 +18249,7 @@
if (resultDigits[i] < estimatedQuotientDigit) {
tmpUsed = A._BigIntImpl__dlShiftDigits(nyDigits, yUsed0, j, tmpDigits);
A._BigIntImpl__absSub(resultDigits, resultUsed1, tmpDigits, tmpUsed, resultDigits);
- for (; --estimatedQuotientDigit, resultDigits[i] < estimatedQuotientDigit;)
+ while (--estimatedQuotientDigit, resultDigits[i] < estimatedQuotientDigit)
A._BigIntImpl__absSub(resultDigits, resultUsed1, tmpDigits, tmpUsed, resultDigits);
}
--i;
@@ -18252,7 +18302,7 @@
decimalDigitChunks = A._setArrayType([], type$.JSArray_String);
t1 = _this._isNegative;
rest = t1 ? _this.$negate(0) : _this;
- for (; rest._used > 1;) {
+ while (rest._used > 1) {
t2 = $.$get$_BigIntImpl__bigInt10000();
if (t2._used === 0)
A.throwExpression(B.C_IntegerDivisionByZeroException);
@@ -18284,7 +18334,7 @@
hash = hash + ((hash & 524287) << 10) & 536870911;
return hash ^ hash >>> 6;
},
- $signature: 27
+ $signature: 54
};
A._BigIntImpl_hashCode_finish.prototype = {
call$1(hash) {
@@ -18292,7 +18342,7 @@
hash ^= hash >>> 11;
return hash + ((hash & 16383) << 15) & 536870911;
},
- $signature: 53
+ $signature: 52
};
A.DateTime.prototype = {
$eq(_, other) {
@@ -18706,29 +18756,11 @@
},
$isStringSink: 1
};
- A.Uri__parseIPv4Address_error.prototype = {
- call$2(msg, position) {
- throw A.wrapException(A.FormatException$("Illegal IPv4 address, " + msg, this.host, position));
- },
- $signature: 44
- };
A.Uri_parseIPv6Address_error.prototype = {
call$2(msg, position) {
throw A.wrapException(A.FormatException$("Illegal IPv6 address, " + msg, this.host, position));
},
- $signature: 40
- };
- A.Uri_parseIPv6Address_parseHex.prototype = {
- call$2(start, end) {
- var value;
- if (end - start > 4)
- this.error.call$2("an IPv6 part can only contain a maximum of 4 hex digits", start);
- value = A.int_parse(B.JSString_methods.substring$2(this.host, start, end), 16);
- if (value < 0 || value > 65535)
- this.error.call$2("each part must be in the range of `0x0..0xFFFF`", start);
- return value;
- },
- $signature: 27
+ $signature: 43
};
A._Uri.prototype = {
get$_text() {
@@ -18870,7 +18902,7 @@
}
baseEnd = B.JSString_methods.lastIndexOf$1(base, "/");
t1 = base.length;
- while (true) {
+ for (;;) {
if (!(baseEnd > 0 && backCount > 0))
break;
newEnd = B.JSString_methods.lastIndexOf$2(base, "/", baseEnd - 1);
@@ -19257,7 +19289,7 @@
baseStart = base._pathStart;
baseEnd = base._queryStart;
if (baseStart === baseEnd && base._hostStart > 0) {
- for (; B.JSString_methods.startsWith$2(t2, "../", refStart);)
+ while (B.JSString_methods.startsWith$2(t2, "../", refStart))
refStart += 3;
delta = baseStart - refStart + 1;
return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, baseStart) + "/" + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
@@ -19270,7 +19302,7 @@
for (baseStart0 = baseStart; B.JSString_methods.startsWith$2(baseUri, "../", baseStart0);)
baseStart0 += 3;
backCount = 0;
- while (true) {
+ for (;;) {
refStart0 = refStart + 3;
if (!(refStart0 <= t1 && B.JSString_methods.startsWith$2(t2, "../", refStart)))
break;
@@ -19349,6 +19381,12 @@
$isUri: 1
};
A._DataUri.prototype = {};
+ A.NullRejectionException.prototype = {
+ toString$0(_) {
+ return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
+ },
+ $isException: 1
+ };
A.FutureOfJSAnyToJSPromise_get_toJS_closure.prototype = {
call$2(resolve, reject) {
var t1 = type$.JavaScriptFunction;
@@ -19411,7 +19449,7 @@
t1 = this.reject;
t1.call(t1, wrapper);
},
- $signature: 5
+ $signature: 4
};
A.jsify__convert.prototype = {
call$1(o) {
@@ -19471,7 +19509,7 @@
}
if (o instanceof RegExp)
throw A.wrapException(A.ArgumentError$("structured clone of RegExp", null));
- if (typeof Promise != "undefined" && o instanceof Promise)
+ if (o instanceof Promise)
return A.promiseToFuture(o, type$.nullable_Object);
proto = Object.getPrototypeOf(o);
if (proto === Object.prototype || proto === null) {
@@ -19505,12 +19543,6 @@
},
$signature: 11
};
- A.NullRejectionException.prototype = {
- toString$0(_) {
- return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
- },
- $isException: 1
- };
A._JSRandom.prototype = {
nextInt$1(max) {
if (max <= 0 || max > 4294967296)
@@ -19542,7 +19574,7 @@
t1.setUint32(0, 0, false);
start = 4 - byteCount;
randomLimit = A._asInt(Math.pow(256, byteCount));
- for (t2 = max - 1, t3 = (max & t2) >>> 0 === 0; true;) {
+ for (t2 = max - 1, t3 = (max & t2) >>> 0 === 0;;) {
crypto.getRandomValues(J.asUint8List$2$x(B.NativeByteData_methods.get$buffer(t1), start, byteCount));
random = t1.getUint32(0, false);
if (t3)
@@ -19660,7 +19692,7 @@
type$.StackTrace._as(stackTrace);
this.$this._addResult$1(new A.ErrorResult(error, stackTrace));
},
- $signature: 5
+ $signature: 4
};
A.StreamQueue__ensureListening_closure0.prototype = {
call$0() {
@@ -19924,7 +19956,7 @@
call$1(k) {
return this.multimap.$index(0, k);
},
- $signature: 6
+ $signature: 5
};
A.BuiltListMultimap_hashCode_closure.prototype = {
call$1(key) {
@@ -19960,7 +19992,7 @@
t1 = _this.__ListMultimapBuilder__builderMap_A;
t1 === $ && A.throwLateFieldNI("_builderMap");
t1 = new A.LinkedHashMapKeyIterator(t1, t1._modifications, t1._first, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterator<1>"));
- for (; t1.moveNext$0();) {
+ while (t1.moveNext$0()) {
key = t1.__js_helper$_current;
t2 = _this.__ListMultimapBuilder__builderMap_A.$index(0, key);
builtList = t2._listOwner;
@@ -20081,7 +20113,7 @@
call$1(k) {
return this.multimap.$index(0, k);
},
- $signature: 6
+ $signature: 5
};
A.BuiltMap.prototype = {
toBuilder$0() {
@@ -20148,7 +20180,7 @@
call$1(k) {
return this.map.$index(0, k);
},
- $signature: 6
+ $signature: 5
};
A.BuiltMap_hashCode_closure.prototype = {
call$1(key) {
@@ -20515,7 +20547,7 @@
t1 = _this.__SetMultimapBuilder__builderMap_A;
t1 === $ && A.throwLateFieldNI("_builderMap");
t1 = new A.LinkedHashMapKeyIterator(t1, t1._modifications, t1._first, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterator<1>"));
- for (; t1.moveNext$0();) {
+ while (t1.moveNext$0()) {
key = t1.__js_helper$_current;
t2 = _this.__SetMultimapBuilder__builderMap_A.$index(0, key);
builtSet = t2._setOwner;
@@ -20630,7 +20662,7 @@
call$1(k) {
return this.multimap.$index(0, k);
},
- $signature: 6
+ $signature: 5
};
A.EnumClass.prototype = {
toString$0(_) {
@@ -20783,27 +20815,27 @@
var t1 = type$.Object;
return A.ListMultimapBuilder_ListMultimapBuilder(t1, t1);
},
- $signature: 34
+ $signature: 33
};
A.Serializers_Serializers_closure1.prototype = {
call$0() {
var t1 = type$.Object;
return A.MapBuilder_MapBuilder(t1, t1);
},
- $signature: 35
+ $signature: 34
};
A.Serializers_Serializers_closure2.prototype = {
call$0() {
return A.SetBuilder_SetBuilder(type$.Object);
},
- $signature: 36
+ $signature: 35
};
A.Serializers_Serializers_closure3.prototype = {
call$0() {
var t1 = type$.Object;
return A.SetMultimapBuilder_SetMultimapBuilder(t1, t1);
},
- $signature: 92
+ $signature: 36
};
A.FullType.prototype = {
$eq(_, other) {
@@ -22202,7 +22234,7 @@
return true;
it1 = J.get$iterator$ax(elements1);
it2 = J.get$iterator$ax(elements2);
- for (t1 = this._elementEquality; true;) {
+ for (t1 = this._elementEquality;;) {
hasNext = it1.moveNext$0();
if (hasNext !== it2.moveNext$0())
return false;
@@ -22625,7 +22657,7 @@
var t1, value,
result = new A.ConnectRequestBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -22724,7 +22756,7 @@
var t1, value,
result = new A.DebugEventBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23025,7 +23057,7 @@
var t1, value,
result = new A.DebugInfoBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23197,7 +23229,7 @@
var t1, value,
result = new A.DevToolsRequestBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23268,7 +23300,7 @@
_s16_ = "DevToolsResponse",
result = new A.DevToolsResponseBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23415,7 +23447,7 @@
_s13_ = "ErrorResponse",
result = new A.ErrorResponseBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23522,7 +23554,7 @@
_s16_ = "ExtensionRequest",
result = new A.ExtensionRequestBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23582,7 +23614,7 @@
_s17_ = "ExtensionResponse",
result = new A.ExtensionResponseBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23641,7 +23673,7 @@
_s14_ = "ExtensionEvent",
result = new A.ExtensionEventBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -23949,7 +23981,7 @@
var t1, value, $$v, _$result,
result = new A.HotReloadRequestBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24036,7 +24068,7 @@
var t1, value,
result = new A.HotReloadResponseBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24136,7 +24168,7 @@
var t1, value, $$v, _$result,
result = new A.HotRestartRequestBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24223,7 +24255,7 @@
var t1, value,
result = new A.HotRestartResponseBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24416,7 +24448,7 @@
var t1, value, $$v,
result = new A.RegisterEventBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24544,13 +24576,13 @@
call$0() {
return A.ListBuilder_ListBuilder(B.List_empty0, type$.DebugEvent);
},
- $signature: 41
+ $signature: 40
};
A._$serializers_closure0.prototype = {
call$0() {
return A.ListBuilder_ListBuilder(B.List_empty0, type$.ExtensionEvent);
},
- $signature: 42
+ $signature: 41
};
A.ServiceExtensionRequest.prototype = {};
A._$ServiceExtensionRequestSerializer.prototype = {
@@ -24566,7 +24598,7 @@
_s23_ = "ServiceExtensionRequest",
result = new A.ServiceExtensionRequestBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24662,7 +24694,7 @@
b.get$_service_extension_response$_$this()._service_extension_response$_errorMessage = _this.errorMessage;
return b;
},
- $signature: 43
+ $signature: 42
};
A._$ServiceExtensionResponseSerializer.prototype = {
serialize$3$specifiedType(serializers, object, specifiedType) {
@@ -24693,7 +24725,7 @@
var t1, value,
result = new A.ServiceExtensionResponseBuilder(),
iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
- for (; iterator.moveNext$0();) {
+ while (iterator.moveNext$0()) {
t1 = iterator.get$current();
t1.toString;
A._asString(t1);
@@ -24803,7 +24835,7 @@
var $async$_batchAndSendEvents$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -24948,14 +24980,14 @@
call$1(o) {
return J.toString$0$(o);
},
- $signature: 45
+ $signature: 44
};
A.safeUnawaited_closure.prototype = {
call$2(error, stackTrace) {
type$.StackTrace._as(stackTrace);
return $.$get$_logger().log$4(B.Level_WARNING_900, "Error in unawaited Future:", error, stackTrace);
},
- $signature: 21
+ $signature: 22
};
A.Int32.prototype = {
_toInt$1(val) {
@@ -25088,7 +25120,7 @@
var $async$_sendUnstreamed$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -25125,13 +25157,13 @@
call$2(key1, key2) {
return A._asString(key1).toLowerCase() === A._asString(key2).toLowerCase();
},
- $signature: 46
+ $signature: 45
};
A.BaseRequest_closure0.prototype = {
call$1(key) {
return B.JSString_methods.get$hashCode(A._asString(key).toLowerCase());
},
- $signature: 47
+ $signature: 46
};
A.BaseResponse.prototype = {
BaseResponse$7$contentLength$headers$isRedirect$persistentConnection$reasonPhrase$request(statusCode, contentLength, headers, isRedirect, persistentConnection, reasonPhrase, request) {
@@ -25158,7 +25190,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -25290,20 +25322,20 @@
$defaultValues() {
return [null];
},
- $signature: 48
+ $signature: 47
};
A._readBody_closure.prototype = {
call$1(_) {
return null;
},
- $signature: 4
+ $signature: 6
};
A._readBody_closure0.prototype = {
call$1(_) {
A._asObject(_);
return this._box_0.isError;
},
- $signature: 49
+ $signature: 48
};
A.ByteStream.prototype = {
toBytes$0() {
@@ -25318,7 +25350,7 @@
call$1(bytes) {
return this.completer.complete$1(new Uint8Array(A._ensureNativeList(type$.List_int._as(bytes))));
},
- $signature: 50
+ $signature: 49
};
A.ClientException.prototype = {
toString$0(_) {
@@ -25364,7 +25396,7 @@
scanner.scan$1(t2);
t6 = type$.String;
parameters = A.LinkedHashMap_LinkedHashMap$_empty(t6, t6);
- while (true) {
+ for (;;) {
t6 = scanner._lastMatch = B.JSString_methods.matchAsPrefix$2(";", t1, scanner._string_scanner$_position);
t7 = scanner._lastMatchPosition = scanner._string_scanner$_position;
success = t6 != null;
@@ -25406,7 +25438,7 @@
scanner.expectDone$0();
return A.MediaType$(t4, t5, parameters);
},
- $signature: 51
+ $signature: 50
};
A.MediaType_toString_closure.prototype = {
call$2(attribute, value) {
@@ -25425,7 +25457,7 @@
} else
t1._contents = t3 + value;
},
- $signature: 52
+ $signature: 51
};
A.MediaType_toString__closure.prototype = {
call$1(match) {
@@ -25528,7 +25560,7 @@
$parent._children.$indexSet(0, thisName, t1);
return t1;
},
- $signature: 54
+ $signature: 53
};
A.Context.prototype = {
absolute$15(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15) {
@@ -25687,7 +25719,7 @@
t2 = false;
if (t2)
return pathParsed.toString$0(0);
- while (true) {
+ for (;;) {
t2 = fromParsed.parts;
t3 = t2.length;
t4 = false;
@@ -25762,20 +25794,20 @@
call$1(part) {
return A._asString(part) !== "";
},
- $signature: 22
+ $signature: 27
};
A.Context_split_closure.prototype = {
call$1(part) {
return A._asString(part).length !== 0;
},
- $signature: 22
+ $signature: 27
};
A._validateArgList_closure.prototype = {
call$1(arg) {
A._asStringQ(arg);
return arg == null ? "null" : '"' + arg + '"';
},
- $signature: 56
+ $signature: 92
};
A.InternalStyle.prototype = {
getRoot$1(path) {
@@ -25798,7 +25830,7 @@
A.ParsedPath.prototype = {
removeTrailingSeparators$0() {
var t1, t2, _this = this;
- while (true) {
+ for (;;) {
t1 = _this.parts;
if (!(t1.length !== 0 && B.JSArray_methods.get$last(t1) === ""))
break;
@@ -26140,7 +26172,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -26204,7 +26236,7 @@
},
_runOnRelease$1(onRelease) {
var t1, t2;
- A.Future_Future$sync(type$.dynamic_Function._as(onRelease), type$.dynamic).then$1$1(new A.Pool__runOnRelease_closure(this), type$.Null).catchError$1(new A.Pool__runOnRelease_closure0(this));
+ A.Future_Future$sync(type$.void_Function._as(onRelease), type$.void).then$1$1(new A.Pool__runOnRelease_closure(this), type$.Null).catchError$1(new A.Pool__runOnRelease_closure0(this));
t1 = new A._Future($.Zone__current, type$._Future_PoolResource);
t2 = this._onReleaseCompleters;
t2._collection$_add$1(t2.$ti._precomputed1._as(new A._SyncCompleter(t1, type$._SyncCompleter_PoolResource)));
@@ -26229,7 +26261,7 @@
var t1 = this.$this;
t1._onReleaseCompleters.removeFirst$0().complete$1(new A.PoolResource(t1));
},
- $signature: 4
+ $signature: 56
};
A.Pool__runOnRelease_closure0.prototype = {
call$2(error, stackTrace) {
@@ -26237,7 +26269,7 @@
type$.StackTrace._as(stackTrace);
this.$this._onReleaseCompleters.removeFirst$0().completeError$2(error, stackTrace);
},
- $signature: 5
+ $signature: 4
};
A.PoolResource.prototype = {};
A.SourceFile.prototype = {
@@ -26677,14 +26709,14 @@
t2 = A._arrayInstanceType(t1);
return new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.Highlighter$___closure()), t2._eval$1("WhereIterable<1>")).get$length(0);
},
- $signature: 33
+ $signature: 32
};
A.Highlighter$___closure.prototype = {
call$1(highlight) {
var t1 = type$._Highlight._as(highlight).span;
return t1.get$start().get$line() !== t1.get$end().get$line();
},
- $signature: 17
+ $signature: 12
};
A.Highlighter$__closure0.prototype = {
call$1(line) {
@@ -26753,14 +26785,14 @@
call$1(highlight) {
return type$._Highlight._as(highlight).span.get$end().get$line() < this.line.number;
},
- $signature: 17
+ $signature: 12
};
A.Highlighter_highlight_closure.prototype = {
call$1(highlight) {
type$._Highlight._as(highlight);
return true;
},
- $signature: 17
+ $signature: 12
};
A.Highlighter__writeFileStart_closure.prototype = {
call$0() {
@@ -26858,7 +26890,7 @@
t2._contents = t4;
return t4.length - t3.length;
},
- $signature: 23
+ $signature: 20
};
A.Highlighter__writeIndicator_closure0.prototype = {
call$0() {
@@ -26878,7 +26910,7 @@
t1._writeArrow$3$beginning(_this.line, Math.max(_this.highlight.span.get$end().get$column() - 1, 0), false);
return t2._contents.length - t3.length;
},
- $signature: 23
+ $signature: 20
};
A.Highlighter__writeSidebar_closure.prototype = {
call$0() {
@@ -27157,7 +27189,7 @@
var $async$_onOutgoingMessage$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -27218,7 +27250,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -27386,7 +27418,7 @@
A._GuaranteeSink__addError_closure.prototype = {
call$1(_) {
},
- $signature: 4
+ $signature: 6
};
A.StreamChannelController.prototype = {};
A.StreamChannelMixin.prototype = {$isStreamChannel: 1};
@@ -27672,7 +27704,7 @@
var $async$close$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -27919,7 +27951,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -27996,7 +28028,7 @@
var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28087,13 +28119,13 @@
path.toString;
return A.FutureOfJSAnyToJSPromise_get_toJS(this.manager._restarter.hotReloadStart$1(path), type$.JSArray_nullable_Object);
},
- $signature: 10
+ $signature: 9
};
A.main__closure0.prototype = {
call$0() {
return A.FutureOfVoidToJSPromise_get_toJS(this.manager.hotReloadEnd$0());
},
- $signature: 10
+ $signature: 9
};
A.main__closure1.prototype = {
call$2(runId, pauseIsolatesOnStart) {
@@ -28238,7 +28270,7 @@
var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28394,7 +28426,7 @@
A.main__closure8.prototype = {
call$1(error) {
},
- $signature: 4
+ $signature: 6
};
A.main__closure9.prototype = {
call$1(e) {
@@ -28413,7 +28445,7 @@
type$.StackTrace._as(stackTrace);
A.print("Unhandled error detected in the injected client.js script.\n\nYou can disable this script in webdev by passing --no-injected-client if it\nis preventing your app from loading, but note that this will also prevent\nall debugging and hot reload/restart functionality from working.\n\nThe original error is below, please file an issue at\nhttps://github.com/dart-lang/webdev/issues/new and attach this output:\n\n" + A.S(error) + "\n" + stackTrace.toString$0(0) + "\n");
},
- $signature: 9
+ $signature: 10
};
A._sendConnectRequest_closure.prototype = {
call$1(b) {
@@ -28481,7 +28513,7 @@
var $async$_runMainWhenReady$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28509,7 +28541,7 @@
var $async$_getSrcModuleLibraries$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28544,7 +28576,7 @@
var $async$restart$3$readyToRunMain$reloadedSourcesPath$runId = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28583,7 +28615,7 @@
var $async$hotReloadStart$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28627,7 +28659,7 @@
var $async$hotReloadEnd$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28650,7 +28682,7 @@
var $async$handleServiceExtension$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28725,13 +28757,13 @@
A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).config).capturedMainHandler = null;
A.safeUnawaited(this.$this._runMainWhenReady$2(this.readyToRunMain, runMain));
},
- $signature: 20
+ $signature: 23
};
A.DdcLibraryBundleRestarter_hotReloadStart_closure.prototype = {
call$1(hotReloadEndCallback) {
this.$this._capturedHotReloadEndCallback = type$.JavaScriptFunction._as(hotReloadEndCallback);
},
- $signature: 20
+ $signature: 23
};
A.DdcRestarter.prototype = {
restart$3$readyToRunMain$reloadedSourcesPath$runId(readyToRunMain, reloadedSourcesPath, runId) {
@@ -28741,7 +28773,7 @@
var $async$restart$3$readyToRunMain$reloadedSourcesPath$runId = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28799,7 +28831,7 @@
var $async$hotRestart$3$readyToRunMain$reloadedSourcesPath$runId = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28836,7 +28868,7 @@
var $async$hotReloadEnd$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28860,7 +28892,7 @@
var $async$handleServiceExtension$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -28913,7 +28945,7 @@
var $async$restart$3$readyToRunMain$reloadedSourcesPath$runId = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -29000,7 +29032,7 @@
var $async$_require_restarter$_runMainWhenReady$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -29028,7 +29060,7 @@
var $async$_getDigests$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -29056,7 +29088,7 @@
var $async$_initialize$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
if ($async$errorCode === 1)
return A._asyncRethrow($async$result, $async$completer);
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -29114,7 +29146,7 @@
$async$errorStack.push($async$result);
$async$goto = $async$handler;
}
- while (true)
+ for (;;)
switch ($async$goto) {
case 0:
// Function start
@@ -29310,7 +29342,7 @@
call$0() {
return A._asJSObject(A._asJSObject(init.G.document).createElement("script"));
},
- $signature: 10
+ $signature: 9
};
A._createScript__closure0.prototype = {
call$0() {
@@ -29318,7 +29350,7 @@
scriptElement.setAttribute("nonce", this.nonce);
return scriptElement;
},
- $signature: 10
+ $signature: 9
};
A.runMain_closure.prototype = {
call$0() {
@@ -29367,13 +29399,13 @@
_instance_1_i = hunkHelpers._instance_1i,
_instance_1_u = hunkHelpers._instance_1u,
_instance_0_u = hunkHelpers._instance_0u;
- _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 32);
+ _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 31);
_static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 13);
_static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 13);
_static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 13);
_static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
_static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 7);
- _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 9);
+ _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 10);
_static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
_static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 94, 0);
_static(A, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) {
@@ -29407,15 +29439,15 @@
_static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 107, 0);
_instance(A._Completer.prototype, "get$completeError", 0, 1, function() {
return [null];
- }, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 31, 0, 0);
- _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 9);
+ }, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 21, 0, 0);
+ _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 10);
var _;
_instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 8);
_instance(_, "get$addError", 0, 1, function() {
return [null];
- }, ["call$2", "call$1"], ["addError$2", "addError$1"], 31, 0, 0);
+ }, ["call$2", "call$1"], ["addError$2", "addError$1"], 21, 0, 0);
_instance_1_u(_, "get$_add", "_add$1", 8);
- _instance_2_u(_, "get$_addError", "_addError$2", 9);
+ _instance_2_u(_, "get$_addError", "_addError$2", 10);
_instance_0_u(_, "get$_close", "_close$0", 0);
_instance_0_u(_ = A._ControllerSubscription.prototype, "get$_onPause", "_onPause$0", 0);
_instance_0_u(_, "get$_onResume", "_onResume$0", 0);
@@ -29425,23 +29457,23 @@
_instance_0_u(_ = A._ForwardingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0);
_instance_0_u(_, "get$_onResume", "_onResume$0", 0);
_instance_1_u(_, "get$_handleData", "_handleData$1", 8);
- _instance_2_u(_, "get$_handleError", "_handleError$2", 21);
+ _instance_2_u(_, "get$_handleError", "_handleError$2", 22);
_instance_0_u(_, "get$_handleDone", "_handleDone$0", 0);
_static_2(A, "collection___defaultEquals$closure", "_defaultEquals0", 18);
- _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 15);
- _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 32);
- _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 6);
+ _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 17);
+ _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 31);
+ _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 5);
_instance_1_i(_ = A._ByteCallbackSink.prototype, "get$add", "add$1", 8);
_instance_0_u(_, "get$close", "close$0", 0);
- _static_1(A, "core__identityHashCode$closure", "identityHashCode", 15);
+ _static_1(A, "core__identityHashCode$closure", "identityHashCode", 17);
_static_2(A, "core__identical$closure", "identical", 18);
_static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 16);
_static(A, "math__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) {
return A.max(a, b, type$.num);
}], 108, 1);
_instance_2_u(_ = A.DeepCollectionEquality.prototype, "get$equals", "equals$2", 18);
- _instance_1_u(_, "get$hash", "hash$1", 15);
- _instance_1_u(_, "get$isValidKey", "isValidKey$1", 12);
+ _instance_1_u(_, "get$hash", "hash$1", 17);
+ _instance_1_u(_, "get$isValidKey", "isValidKey$1", 15);
_static(A, "hot_reload_response_HotReloadResponse___new_tearOff$closure", 0, null, ["call$1", "call$0"], ["HotReloadResponse___new_tearOff", function() {
return A.HotReloadResponse___new_tearOff(null);
}], 109, 0);
@@ -29474,7 +29506,7 @@
_inherit(A._EfficientLengthCastIterable, A.CastIterable);
_inherit(A._CastListBase, A.__CastListBase__CastIterableBase_ListMixin);
_inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._asyncStarHelper_closure0, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A._Future_timeout_closure0, A.Stream_length_closure, A.Stream_first_closure0, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._CustomHashMap_closure, A._LinkedCustomHashMap_closure, A._BigIntImpl_hashCode_finish, A._Uri__makePath_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure, A.FutureOfVoidToJSPromise_get_toJS__closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.StreamQueue__ensureListening_closure, A.BuiltListMultimap_BuiltListMultimap_closure, A.BuiltListMultimap_hashCode_closure, A.ListMultimapBuilder_replace_closure, A.BuiltMap_BuiltMap_closure, A.BuiltMap_hashCode_closure, A.BuiltSet_hashCode_closure, A.BuiltSetMultimap_hashCode_closure, A.SetMultimapBuilder_replace_closure, A.newBuiltValueToStringHelper_closure, A.BuiltListMultimapSerializer_serialize_closure, A.BuiltListMultimapSerializer_deserialize_closure, A.BuiltListSerializer_serialize_closure, A.BuiltListSerializer_deserialize_closure, A.BuiltSetMultimapSerializer_serialize_closure, A.BuiltSetMultimapSerializer_deserialize_closure, A.BuiltSetSerializer_serialize_closure, A.BuiltSetSerializer_deserialize_closure, A.ListSerializer_serialize_closure, A.SetSerializer_serialize_closure, A.CanonicalizedMap_keys_closure, A.ServiceExtensionResponse_ServiceExtensionResponse$fromResult_closure, A.WebSocketClient_stream_closure, A.BaseRequest_closure0, A.BrowserClient_send_closure, A._readBody_closure, A._readBody_closure0, A.ByteStream_toBytes_closure, A.MediaType_toString__closure, A.expectQuotedString_closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.Pool__runOnRelease_closure, A.Highlighter$__closure, A.Highlighter$___closure, A.Highlighter$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.SseClient_closure0, A.SseClient_closure1, A._GuaranteeSink__addError_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.BrowserWebSocket_connect_closure, A.BrowserWebSocket_connect_closure0, A.BrowserWebSocket_connect_closure1, A.BrowserWebSocket_connect_closure2, A.AdapterWebSocketChannel_closure, A.AdapterWebSocketChannel__closure, A.AdapterWebSocketChannel__closure0, A.AdapterWebSocketChannel_closure0, A.main__closure1, A.main__closure3, A.main___closure2, A.main___closure1, A.main__closure5, A.main___closure0, A.main___closure, A.main__closure7, A.main__closure8, A.main__closure9, A._sendConnectRequest_closure, A._launchCommunicationWithDebugExtension_closure, A._handleAuthRequest_closure, A._sendResponse_closure, A.DdcLibraryBundleRestarter_restart_closure, A.DdcLibraryBundleRestarter_hotReloadStart_closure, A.DdcRestarter_restart_closure0, A.DdcRestarter_restart_closure, A.RequireRestarter__reloadModule_closure0, A.JSArrayExtension_toDartIterable_closure]);
- _inheritMany(A.Closure2Args, [A._CastListBase_sort_closure, A.CastMap_forEach_closure, A.ConstantMap_map_closure, A.JsLinkedHashMap_addAll_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A._Future_timeout_closure1, A._AddStreamState_makeErrorHandler_closure, A._BufferingStreamSubscription_asFuture_closure0, A.LinkedHashMap_LinkedHashMap$from_closure, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A._BigIntImpl_hashCode_combine, A.Uri__parseIPv4Address_error, A.Uri_parseIPv6Address_error, A.Uri_parseIPv6Address_parseHex, A.FutureOfJSAnyToJSPromise_get_toJS_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure0, A.FutureOfVoidToJSPromise_get_toJS_closure, A.FutureOfVoidToJSPromise_get_toJS__closure0, A.StreamQueue__ensureListening_closure1, A.hashObjects_closure, A.MapBuilder_replace_closure, A.CanonicalizedMap_addAll_closure, A.CanonicalizedMap_forEach_closure, A.CanonicalizedMap_map_closure, A.safeUnawaited_closure, A.BaseRequest_closure, A.MediaType_toString_closure, A.Pool__runOnRelease_closure0, A.Highlighter__collateLines_closure0, A.main__closure4, A.main_closure0]);
+ _inheritMany(A.Closure2Args, [A._CastListBase_sort_closure, A.CastMap_forEach_closure, A.ConstantMap_map_closure, A.JsLinkedHashMap_addAll_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A._Future_timeout_closure1, A._AddStreamState_makeErrorHandler_closure, A._BufferingStreamSubscription_asFuture_closure0, A.LinkedHashMap_LinkedHashMap$from_closure, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A._BigIntImpl_hashCode_combine, A.Uri_parseIPv6Address_error, A.FutureOfJSAnyToJSPromise_get_toJS_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure0, A.FutureOfVoidToJSPromise_get_toJS_closure, A.FutureOfVoidToJSPromise_get_toJS__closure0, A.StreamQueue__ensureListening_closure1, A.hashObjects_closure, A.MapBuilder_replace_closure, A.CanonicalizedMap_addAll_closure, A.CanonicalizedMap_forEach_closure, A.CanonicalizedMap_map_closure, A.safeUnawaited_closure, A.BaseRequest_closure, A.MediaType_toString_closure, A.Pool__runOnRelease_closure0, A.Highlighter__collateLines_closure0, A.main__closure4, A.main_closure0]);
_inherit(A.CastList, A._CastListBase);
_inheritMany(A.MapBase, [A.CastMap, A.JsLinkedHashMap, A._HashMap, A._JsonMap]);
_inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError, A.BuiltValueNullFieldError, A.BuiltValueNestedFieldError, A.DeserializationError]);
@@ -29602,7 +29634,7 @@
typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},
mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List", Object: "Object", Map: "Map", JSObject: "JSObject"},
mangledNames: {},
- types: ["~()", "Null()", "~(JSObject)", "Object?(@)", "Null(@)", "Null(Object,StackTrace)", "@(@)", "~(@)", "~(Object?)", "~(Object,StackTrace)", "JSObject()", "Object?(Object?)", "bool(Object?)", "~(~())", "Null(JSObject)", "int(Object?)", "String(String)", "bool(_Highlight)", "bool(Object?,Object?)", "Future<~>()", "Null(JavaScriptFunction)", "~(@,StackTrace)", "bool(String)", "int()", "~(@,@)", "~(Object?,Object?)", "@()", "int(int,int)", "String(Match)", "bool()", "Null(JavaScriptFunction,JavaScriptFunction)", "~(Object[StackTrace?])", "int(@,@)", "int(_Line)", "ListMultimapBuilder<Object,Object>()", "MapBuilder<Object,Object>()", "SetBuilder<Object>()", "int(int,@)", "Object?(~)", "JSObject(Object,StackTrace)", "~(String,int?)", "ListBuilder<DebugEvent>()", "ListBuilder<ExtensionEvent>()", "~(ServiceExtensionResponseBuilder)", "~(String,int)", "String(@)", "bool(String,String)", "int(String)", "Null(String,String[Object?])", "bool(Object)", "~(List<int>)", "MediaType()", "~(String,String)", "int(int)", "Logger()", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "String(String?)", "String?()", "ListBuilder<Object>()", "_Future<@>?()", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry<Object,List<_Highlight>>)", "~(int,@)", "SourceSpanWithContext()", "Null(@,StackTrace)", "~(String?)", "Future<Null>()", "Null(~())", "Null(WebSocket)", "~(WebSocketEvent)", "Null(Object)", "HotRestartResponse([~(HotRestartResponseBuilder)])", "JSObject(String[bool?])", "~(List<DebugEvent>)", "ListBuilder<DebugEvent>(BatchedDebugEventsBuilder)", "Null(String,String)", "DebugEventBuilder(DebugEventBuilder)", "Null(String)", "RegisterEventBuilder(RegisterEventBuilder)", "DevToolsRequestBuilder(DevToolsRequestBuilder)", "Future<~>(String)", "ConnectRequestBuilder(ConnectRequestBuilder)", "IndentingBuiltValueToStringHelper(String)", "~(bool)", "@(String)", "bool(bool)", "List<String>(String)", "int(String,String)", "Null(JavaScriptObject)", "JSObject()()", "SetMultimapBuilder<Object,Object>()", "@(@,String)", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())<Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)<Object?,Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)<Object?,Object?,Object?>", "0^()(Zone,ZoneDelegate,Zone,0^())<Object?>", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?,Object?>", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?,Object?,Object?>", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map<Object?,Object?>?)", "0^(0^,0^)<num>", "HotReloadResponse([~(HotReloadResponseBuilder)])", "DebugInfoBuilder(DebugInfoBuilder)"],
+ types: ["~()", "Null()", "~(JSObject)", "Object?(@)", "Null(Object,StackTrace)", "@(@)", "Null(@)", "~(@)", "~(Object?)", "JSObject()", "~(Object,StackTrace)", "Object?(Object?)", "bool(_Highlight)", "~(~())", "Null(JSObject)", "bool(Object?)", "String(String)", "int(Object?)", "bool(Object?,Object?)", "Future<~>()", "int()", "~(Object[StackTrace?])", "~(@,StackTrace)", "Null(JavaScriptFunction)", "~(@,@)", "~(Object?,Object?)", "@()", "bool(String)", "String(Match)", "bool()", "Null(JavaScriptFunction,JavaScriptFunction)", "int(@,@)", "int(_Line)", "ListMultimapBuilder<Object,Object>()", "MapBuilder<Object,Object>()", "SetBuilder<Object>()", "SetMultimapBuilder<Object,Object>()", "int(int,@)", "Object?(~)", "JSObject(Object,StackTrace)", "ListBuilder<DebugEvent>()", "ListBuilder<ExtensionEvent>()", "~(ServiceExtensionResponseBuilder)", "0&(String,int?)", "String(@)", "bool(String,String)", "int(String)", "Null(String,String[Object?])", "bool(Object)", "~(List<int>)", "MediaType()", "~(String,String)", "int(int)", "Logger()", "int(int,int)", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "Null(~)", "String?()", "ListBuilder<Object>()", "_Future<@>?()", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry<Object,List<_Highlight>>)", "~(int,@)", "SourceSpanWithContext()", "Null(@,StackTrace)", "~(String?)", "Future<Null>()", "Null(~())", "Null(WebSocket)", "~(WebSocketEvent)", "Null(Object)", "HotRestartResponse([~(HotRestartResponseBuilder)])", "JSObject(String[bool?])", "~(List<DebugEvent>)", "ListBuilder<DebugEvent>(BatchedDebugEventsBuilder)", "Null(String,String)", "DebugEventBuilder(DebugEventBuilder)", "Null(String)", "RegisterEventBuilder(RegisterEventBuilder)", "DevToolsRequestBuilder(DevToolsRequestBuilder)", "Future<~>(String)", "ConnectRequestBuilder(ConnectRequestBuilder)", "IndentingBuiltValueToStringHelper(String)", "~(bool)", "@(String)", "bool(bool)", "List<String>(String)", "int(String,String)", "Null(JavaScriptObject)", "JSObject()()", "String(String?)", "@(@,String)", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())<Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)<Object?,Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)<Object?,Object?,Object?>", "0^()(Zone,ZoneDelegate,Zone,0^())<Object?>", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?,Object?>", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?,Object?,Object?>", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map<Object?,Object?>?)", "0^(0^,0^)<num>", "HotReloadResponse([~(HotReloadResponseBuilder)])", "DebugInfoBuilder(DebugInfoBuilder)"],
interceptorsByTag: null,
leafTags: null,
arrayRti: Symbol("$ti"),
@@ -30389,8 +30421,8 @@
t2 = A.ListQueue$(t1),
t3 = A.ListQueue$(type$.void_Function);
t1 = A.ListQueue$(t1);
- t4 = A.Completer_Completer(type$.dynamic);
- return new A.Pool(t2, t3, t1, 1000, new A.AsyncMemoizer(t4, A.findType("AsyncMemoizer<@>")));
+ t4 = A.Completer_Completer(type$.void);
+ return new A.Pool(t2, t3, t1, 1000, new A.AsyncMemoizer(t4, A.findType("AsyncMemoizer<~>")));
});
_lazy($, "V1State_random", "$get$V1State_random", () => new A.CryptoRNG());
_lazy($, "V4State_random", "$get$V4State_random", () => new A.CryptoRNG());
diff --git a/dwds/lib/src/services/app_debug_services.dart b/dwds/lib/src/services/app_debug_services.dart
index 474386f..fe3a2e0 100644
--- a/dwds/lib/src/services/app_debug_services.dart
+++ b/dwds/lib/src/services/app_debug_services.dart
@@ -14,6 +14,7 @@
DwdsStats? get dwdsStats;
Uri? get ddsUri;
Uri? get devToolsUri;
+ Uri? get dtdUri;
String? get connectedInstanceId;
set connectedInstanceId(String? id);
Future<void> close();
@@ -27,6 +28,7 @@
final DwdsStats _dwdsStats;
final Uri? _ddsUri;
final Uri? _devToolsUri;
+ final Uri? _dtdUri;
Future<void>? _closed;
String? _connectedInstanceId;
@@ -36,6 +38,7 @@
this._dwdsStats,
this._ddsUri,
this._devToolsUri,
+ this._dtdUri,
);
@override
@@ -54,6 +57,9 @@
Uri? get devToolsUri => _devToolsUri;
@override
+ Uri? get dtdUri => _dtdUri;
+
+ @override
String? get connectedInstanceId => _connectedInstanceId;
@override
@@ -86,13 +92,18 @@
// WebSocket-only service - Chrome/DDS features not available
@override
DwdsStats? get dwdsStats => null;
+
@override
// TODO(bkonyi): DDS should still start in WebSocket mode.
Uri? get ddsUri => null;
+
@override
Uri? get devToolsUri => null;
@override
+ Uri? get dtdUri => null;
+
+ @override
ProxyService get proxyService => _debugService.webSocketProxyService;
@override
diff --git a/dwds/lib/src/services/chrome_proxy_service.dart b/dwds/lib/src/services/chrome_proxy_service.dart
index e8bd6c8..5202102 100644
--- a/dwds/lib/src/services/chrome_proxy_service.dart
+++ b/dwds/lib/src/services/chrome_proxy_service.dart
@@ -1030,14 +1030,24 @@
}).stream;
}
+ /// If [internalPause] is true, indicates that this was a pause triggered
+ /// within DWDS, and therefore a `PauseInterrupted` event is never sent to the
+ /// VM service event stream. Instead, we just wait for the pause to be
+ /// completed.
@override
- Future<Success> pause(String isolateId) =>
- wrapInErrorHandlerAsync('pause', () => _pause(isolateId));
+ Future<Success> pause(String isolateId, {bool internalPause = false}) =>
+ wrapInErrorHandlerAsync(
+ 'pause',
+ () => _pause(isolateId, internalPause: internalPause),
+ );
- Future<Success> _pause(String isolateId) async {
+ Future<Success> _pause(
+ String isolateId, {
+ required bool internalPause,
+ }) async {
await isInitialized;
_checkIsolate('pause', isolateId);
- return (await debuggerFuture).pause();
+ return (await debuggerFuture).pause(internalPause: internalPause);
}
// Note: Ignore the optional local parameter, when it is set to `true` the
@@ -1181,9 +1191,7 @@
};
// Pause and wait for the pause to occur before managing breakpoints.
- final pausedEvent = _firstStreamEvent('Debug', EventKind.kPauseInterrupted);
- await pause(isolateId);
- await pausedEvent;
+ await pause(isolateId, internalPause: true);
await _reinitializeForHotReload(reloadedModulesToLibraries);
@@ -1514,11 +1522,6 @@
});
}
- Future<void> _firstStreamEvent(String streamId, String eventKind) {
- final controller = streamControllers[streamId]!;
- return controller.stream.firstWhere((event) => event.kind == eventKind);
- }
-
Future<void> _handleDeveloperLog(
IsolateRef isolateRef,
ConsoleAPIEvent event,
diff --git a/dwds/lib/src/version.dart b/dwds/lib/src/version.dart
index 5309029..e126210 100644
--- a/dwds/lib/src/version.dart
+++ b/dwds/lib/src/version.dart
@@ -1,2 +1,2 @@
// Generated code. Do not modify.
-const packageVersion = '25.1.0';
+const packageVersion = '25.1.0+1';
diff --git a/dwds/pubspec.yaml b/dwds/pubspec.yaml
index 7c2f9bc..73aca16 100644
--- a/dwds/pubspec.yaml
+++ b/dwds/pubspec.yaml
@@ -1,6 +1,6 @@
name: dwds
# Every time this changes you need to run `dart run build_runner build`.
-version: 25.1.0
+version: 25.1.0+1
description: >-
A service that proxies between the Chrome debug protocol and the Dart VM
diff --git a/dwds/test/dds_port_test.dart b/dwds/test/dds_port_test.dart
index 5d03b85..7484c86 100644
--- a/dwds/test/dds_port_test.dart
+++ b/dwds/test/dds_port_test.dart
@@ -42,6 +42,7 @@
),
);
expect(Uri.parse(context.debugConnection.ddsUri!).port, expectedPort);
+ expect(context.debugConnection.dtdUri, isNotNull);
});
test('DWDS starts DDS with a specified port', () async {
@@ -58,5 +59,6 @@
),
);
expect(Uri.parse(context.debugConnection.ddsUri!).port, expectedPort);
+ expect(context.debugConnection.dtdUri, isNotNull);
});
}
diff --git a/dwds/test/hot_reload_breakpoints_test.dart b/dwds/test/hot_reload_breakpoints_test.dart
index 7bcb781..75fe8cc 100644
--- a/dwds/test/hot_reload_breakpoints_test.dart
+++ b/dwds/test/hot_reload_breakpoints_test.dart
@@ -81,7 +81,7 @@
);
final breakpointAdded = expectLater(
stream,
- emitsThrough(_hasKind(EventKind.kBreakpointAdded)),
+ emits(_hasKind(EventKind.kBreakpointAdded)),
);
final breakpoint = await client.addBreakpointWithScriptUri(
isolateId,
@@ -97,7 +97,7 @@
final isolateId = vm.isolates!.first.id!;
final breakpointRemoved = expectLater(
stream,
- emitsThrough(_hasKind(EventKind.kBreakpointRemoved)),
+ emits(_hasKind(EventKind.kBreakpointRemoved)),
);
await client.removeBreakpoint(isolateId, bp.id!);
await breakpointRemoved;
@@ -136,9 +136,20 @@
List<({String file, String breakpointMarker, Breakpoint? bp})>
breakpoints,
) async {
+ final breakpointEvents = expectLater(
+ stream,
+ emitsInOrder([
+ _hasKind(EventKind.kPausePostRequest),
+ for (final (:bp, breakpointMarker: _, file: _) in breakpoints) ...[
+ if (bp != null) _hasKind(EventKind.kBreakpointRemoved),
+ _hasKind(EventKind.kBreakpointAdded),
+ ],
+ _hasKind(EventKind.kResume),
+ ]),
+ );
final waitForPausePost = expectLater(
stream,
- emitsThrough(_hasKind(EventKind.kPausePostRequest)),
+ emits(_hasKind(EventKind.kPausePostRequest)),
);
// Initiate the hot reload by loading the sources into the page.
@@ -162,6 +173,7 @@
}
// The resume should complete hot reload and resume the program.
await resume();
+ await breakpointEvents;
return newBreakpoints;
}
@@ -198,8 +210,13 @@
await subscription.cancel();
}
- Future<void> waitForBreakpoint() =>
- expectLater(stream, emitsThrough(_hasKind(EventKind.kPauseBreakpoint)));
+ Future<void> waitForBreakpoint({bool resumeFirst = false}) => expectLater(
+ stream,
+ emitsInOrder([
+ if (resumeFirst) _hasKind(EventKind.kResume),
+ _hasKind(EventKind.kPauseBreakpoint),
+ ]),
+ );
test('empty hot reload keeps breakpoints', () async {
final genString = 'main gen0';
@@ -384,7 +401,7 @@
// Should break at `callLog`.
await breakpointFuture;
- breakpointFuture = waitForBreakpoint();
+ breakpointFuture = waitForBreakpoint(resumeFirst: true);
await resume();
// Should break at `libValue`.
@@ -454,7 +471,7 @@
// Should break at `callLog`.
await breakpointFuture;
- breakpointFuture = waitForBreakpoint();
+ breakpointFuture = waitForBreakpoint(resumeFirst: true);
await resume();
// Should break at the breakpoint in the last file.
diff --git a/dwds/test/hot_restart_breakpoints_test.dart b/dwds/test/hot_restart_breakpoints_test.dart
index 1a83b5f..83e8722 100644
--- a/dwds/test/hot_restart_breakpoints_test.dart
+++ b/dwds/test/hot_restart_breakpoints_test.dart
@@ -93,7 +93,7 @@
);
final breakpointAdded = expectLater(
stream,
- emitsThrough(_hasKind(EventKind.kBreakpointAdded)),
+ emits(_hasKind(EventKind.kBreakpointAdded)),
);
final breakpoint = await client.addBreakpointWithScriptUri(
isolateId,
@@ -134,17 +134,29 @@
}
Future<void> hotRestartAndHandlePausePost(
- List<({String file, String breakpointMarker})> breakpoints,
+ List<({String file, String breakpointMarker, bool exists})> breakpoints,
) async {
- final eventsDone = expectLater(
+ final isolateEvents = expectLater(
client.onIsolateEvent,
- emitsThrough(
- emitsInOrder([
- _hasKind(EventKind.kIsolateExit),
- _hasKind(EventKind.kIsolateStart),
- _hasKind(EventKind.kIsolateRunnable),
- ]),
- ),
+ emitsInOrder([
+ _hasKind(EventKind.kIsolateExit),
+ _hasKind(EventKind.kIsolateStart),
+ _hasKind(EventKind.kIsolateRunnable),
+ ]),
+ );
+ final breakpointEvents = expectLater(
+ stream,
+ emitsInOrder([
+ for (final (:exists, breakpointMarker: _, file: _)
+ in breakpoints) ...[
+ if (exists) _hasKind(EventKind.kBreakpointRemoved),
+ ],
+ _hasKind(EventKind.kResume),
+ _hasKind(EventKind.kPausePostRequest),
+ for (final _ in breakpoints) ...[
+ _hasKind(EventKind.kBreakpointAdded),
+ ],
+ ]),
);
final waitForPausePost = expectLater(
@@ -158,7 +170,7 @@
const TypeMatcher<Success>(),
);
- await eventsDone;
+ await isolateEvents;
// DWDS defers running main after a hot restart until the client (e.g.
// DAP) resumes. Client should listen for this event, remove breakpoints
@@ -170,10 +182,11 @@
final vm = await client.getVM();
final isolate = await service.getIsolate(vm.isolates!.first.id!);
expect(isolate.breakpoints, isEmpty);
- for (final (:breakpointMarker, :file) in breakpoints) {
+ for (final (exists: _, :breakpointMarker, :file) in breakpoints) {
await addBreakpoint(file: file, breakpointMarker: breakpointMarker);
}
await resume();
+ await breakpointEvents;
}
Future<Event> waitForBreakpoint() =>
@@ -189,7 +202,7 @@
await context.recompile(fullRestart: false);
await hotRestartAndHandlePausePost([
- (file: mainFile, breakpointMarker: callLogMarker),
+ (exists: true, file: mainFile, breakpointMarker: callLogMarker),
]);
// Should break at `callLog`.
@@ -210,7 +223,7 @@
final breakpointFuture = waitForBreakpoint();
await hotRestartAndHandlePausePost([
- (file: mainFile, breakpointMarker: callLogMarker),
+ (exists: true, file: mainFile, breakpointMarker: callLogMarker),
]);
// Should break at `callLog`.
@@ -236,7 +249,7 @@
var breakpointFuture = waitForBreakpoint();
await hotRestartAndHandlePausePost([
- (file: mainFile, breakpointMarker: callLogMarker),
+ (exists: true, file: mainFile, breakpointMarker: callLogMarker),
]);
// Should break at `callLog`.
@@ -255,7 +268,7 @@
breakpointFuture = waitForBreakpoint();
await hotRestartAndHandlePausePost([
- (file: mainFile, breakpointMarker: callLogMarker),
+ (exists: true, file: mainFile, breakpointMarker: callLogMarker),
]);
// Should break at `callLog`.
@@ -298,8 +311,8 @@
var breakpointFuture = waitForBreakpoint();
await hotRestartAndHandlePausePost([
- (file: mainFile, breakpointMarker: callLogMarker),
- (file: libFile, breakpointMarker: libValueMarker),
+ (exists: true, file: mainFile, breakpointMarker: callLogMarker),
+ (exists: false, file: libFile, breakpointMarker: libValueMarker),
]);
// Should break at `callLog`.
@@ -353,8 +366,12 @@
var breakpointFuture = waitForBreakpoint();
await hotRestartAndHandlePausePost([
- (file: mainFile, breakpointMarker: callLogMarker),
- (file: 'library$numFiles.dart', breakpointMarker: 'libValue$numFiles'),
+ (exists: true, file: mainFile, breakpointMarker: callLogMarker),
+ (
+ exists: false,
+ file: 'library$numFiles.dart',
+ breakpointMarker: 'libValue$numFiles',
+ ),
]);
final newGenLog = 'library$numFiles gen1';