mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 10:49:00 +00:00
[cfe] Implement matchMapType for the shared analysis of patterns
Part of https://github.com/dart-lang/sdk/issues/49749 Closes https://github.com/dart-lang/sdk/issues/51523 Change-Id: I4875020510246761878e71b969698cbd1baa0de0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/286822 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
parent
cb7366482c
commit
874e7ee056
35 changed files with 251 additions and 64 deletions
|
@ -9000,11 +9000,12 @@ class InferenceVisitorImpl extends InferenceVisitorBase
|
|||
int? stackBase;
|
||||
assert(checkStackBase(node, stackBase = stackHeight));
|
||||
|
||||
// TODO(cstefantsova): Support late variables.
|
||||
analyzePatternVariableDeclaration(node, node.pattern, node.initializer,
|
||||
isFinal: node.isFinal, isLate: false);
|
||||
|
||||
Pattern pattern = node.pattern;
|
||||
Expression initializer = node.initializer;
|
||||
|
||||
// TODO(cstefantsova): Support late variables.
|
||||
analyzePatternVariableDeclaration(node, pattern, initializer,
|
||||
isFinal: node.isFinal, isLate: false);
|
||||
|
||||
assert(checkStack(node, stackBase, [
|
||||
/* pattern = */ ValueKinds.Pattern,
|
||||
|
@ -9016,12 +9017,6 @@ class InferenceVisitorImpl extends InferenceVisitorBase
|
|||
pattern = rewrite as Pattern;
|
||||
}
|
||||
|
||||
Expression initializer = node.initializer;
|
||||
|
||||
assert(checkStack(node, stackBase, [
|
||||
/* initializer = */ ValueKinds.Expression,
|
||||
]));
|
||||
|
||||
rewrite = popRewrite();
|
||||
if (!identical(initializer, rewrite)) {
|
||||
initializer = rewrite as Expression;
|
||||
|
@ -10685,11 +10680,14 @@ class InferenceVisitorImpl extends InferenceVisitorBase
|
|||
|
||||
node.matchedType = flow.getMatchedValueType();
|
||||
|
||||
MapPatternTypeArguments<DartType>? typeArguments =
|
||||
node.keyType == null && node.valueType == null
|
||||
? null
|
||||
: new MapPatternTypeArguments<DartType>(
|
||||
keyType: node.keyType ?? const DynamicType(),
|
||||
valueType: node.valueType ?? const DynamicType());
|
||||
DartType mapType = analyzeMapPattern(context, node,
|
||||
typeArguments: new MapPatternTypeArguments<DartType>(
|
||||
keyType: node.keyType ?? const DynamicType(),
|
||||
valueType: node.valueType ?? const DynamicType()),
|
||||
elements: node.entries);
|
||||
typeArguments: typeArguments, elements: node.entries);
|
||||
|
||||
// TODO(johnniwinther): How does `mapType` relate to `node.mapType`?
|
||||
DartType keyType = node.keyType ?? const DynamicType();
|
||||
|
|
|
@ -568,8 +568,20 @@ class OperationsCfe
|
|||
|
||||
@override
|
||||
MapPatternTypeArguments<DartType>? matchMapType(DartType type) {
|
||||
// TODO: implement matchMapType
|
||||
throw new UnimplementedError('TODO(scheglov)');
|
||||
if (type is! InterfaceType) {
|
||||
return null;
|
||||
} else {
|
||||
InterfaceType? mapType = typeEnvironment.getTypeAsInstanceOf(
|
||||
type, typeEnvironment.coreTypes.mapClass, typeEnvironment.coreTypes,
|
||||
isNonNullableByDefault: isNonNullableByDefault);
|
||||
if (mapType == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new MapPatternTypeArguments<DartType>(
|
||||
keyType: mapType.typeArguments[0],
|
||||
valueType: mapType.typeArguments[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -16,7 +16,7 @@ static method test(core::Object? o) → core::String {
|
|||
}
|
||||
}
|
||||
else
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::Object? in true)) {
|
||||
{
|
||||
toReturn = "map";
|
||||
break #L1;
|
||||
|
|
|
@ -16,7 +16,7 @@ static method test(core::Object? o) → core::String {
|
|||
}
|
||||
}
|
||||
else
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final core::Object? #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
{
|
||||
toReturn = "map";
|
||||
break #L1;
|
||||
|
|
|
@ -16,7 +16,7 @@ static method test(core::Object? o) → core::String {
|
|||
}
|
||||
}
|
||||
else
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::Object? in true)) {
|
||||
{
|
||||
toReturn = "map";
|
||||
break #L1;
|
||||
|
|
|
@ -16,7 +16,7 @@ static method test(core::Object? o) → core::String {
|
|||
}
|
||||
}
|
||||
else
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::Object? in true)) {
|
||||
{
|
||||
toReturn = "map";
|
||||
break #L1;
|
||||
|
|
|
@ -16,7 +16,7 @@ static method test(core::Object? o) → core::String {
|
|||
}
|
||||
}
|
||||
else
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final dynamic #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
if(#0#0 is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let final core::Object? #t3 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic} in true)) {
|
||||
{
|
||||
toReturn = "map";
|
||||
break #L1;
|
||||
|
|
11
pkg/front_end/testcases/patterns/issue51523.dart
Normal file
11
pkg/front_end/testcases/patterns/issue51523.dart
Normal file
|
@ -0,0 +1,11 @@
|
|||
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
class C<T> {
|
||||
const C();
|
||||
}
|
||||
|
||||
void main() {
|
||||
var {const C(): a1} = <C<String>, int>{const C<String>(): 1};
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C<self::C::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → void {
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = <self::C<core::String>, core::int>{#C1: 1};
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final dynamic #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = self::C<core::String> {}
|
||||
#C2 = 1
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51523.dart:
|
||||
- C. (from org-dartlang-testcase:///issue51523.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
|
@ -0,0 +1,29 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C<self::C::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → void {
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = <self::C<core::String>, core::int>{#C1: 1};
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = self::C<core::String> {}
|
||||
#C2 = 1
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51523.dart:
|
||||
- C. (from org-dartlang-testcase:///issue51523.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
|
@ -0,0 +1,5 @@
|
|||
class C<T> {
|
||||
const C();
|
||||
}
|
||||
|
||||
void main() {}
|
|
@ -0,0 +1,5 @@
|
|||
class C<T> {
|
||||
const C();
|
||||
}
|
||||
|
||||
void main() {}
|
29
pkg/front_end/testcases/patterns/issue51523.dart.weak.expect
Normal file
29
pkg/front_end/testcases/patterns/issue51523.dart.weak.expect
Normal file
|
@ -0,0 +1,29 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C<self::C::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → void {
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = <self::C<core::String>, core::int>{#C1: 1};
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final dynamic #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = self::C<core::String*> {}
|
||||
#C2 = 1
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51523.dart:
|
||||
- C. (from org-dartlang-testcase:///issue51523.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
|
@ -0,0 +1,29 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C<self::C::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → void {
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = <self::C<core::String>, core::int>{#C1: 1};
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final dynamic #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = self::C<core::String*> {}
|
||||
#C2 = 1
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51523.dart:
|
||||
- C. (from org-dartlang-testcase:///issue51523.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
|
@ -0,0 +1,11 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C<self::C::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → void
|
||||
;
|
|
@ -0,0 +1,29 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C<self::C::T%>
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → void {
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = <self::C<core::String>, core::int>{#C1: 1};
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = self::C<core::String*> {}
|
||||
#C2 = 1
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51523.dart:
|
||||
- C. (from org-dartlang-testcase:///issue51523.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
|
@ -6,7 +6,7 @@ static method test(dynamic x) → dynamic {
|
|||
#L1:
|
||||
{
|
||||
final dynamic #0#0 = x;
|
||||
if(let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} core::Object in (#0#0 as{ForNonNullableByDefault} core::Object) is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::[]}(#C2){(core::Object?) → dynamic}) {
|
||||
if(let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} core::Object in (#0#0 as{ForNonNullableByDefault} core::Object) is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::[]}(#C2){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::Object?) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ static method test(dynamic x) → dynamic {
|
|||
#L1:
|
||||
{
|
||||
final dynamic #0#0 = x;
|
||||
if(let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} core::Object in (#0#0 as{ForNonNullableByDefault} core::Object) is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::[]}(#C2){(core::Object?) → dynamic}) {
|
||||
if(let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} core::Object in (#0#0 as{ForNonNullableByDefault} core::Object) is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::[]}(#C2){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::Object?) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ static method test(dynamic x) → dynamic {
|
|||
#L1:
|
||||
{
|
||||
final dynamic #0#0 = x;
|
||||
if(let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} core::Object in (#0#0 as{ForNonNullableByDefault} core::Object) is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::[]}(#C2){(core::Object?) → dynamic}) {
|
||||
if(let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} core::Object in (#0#0 as{ForNonNullableByDefault} core::Object) is{ForNonNullableByDefault} core::Map<dynamic, dynamic> && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{ForNonNullableByDefault} core::Object) as{ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::[]}(#C2){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::Object?) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ static method test2(dynamic x) → dynamic {
|
|||
static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
||||
{
|
||||
final core::Map<core::bool, core::double> #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::double) {
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
|||
static method test4(self::MyMap x) → dynamic {
|
||||
{
|
||||
final self::MyMap #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ static method test2(dynamic x) → dynamic {
|
|||
static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
||||
{
|
||||
final core::Map<core::bool, core::double> #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::double) {
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
|||
static method test4(self::MyMap x) → dynamic {
|
||||
{
|
||||
final self::MyMap #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ static method test2(dynamic x) → dynamic {
|
|||
static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
||||
{
|
||||
final core::Map<core::bool, core::double> #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::double) {
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
|||
static method test4(self::MyMap x) → dynamic {
|
||||
{
|
||||
final self::MyMap #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ static method test2(dynamic x) → dynamic {
|
|||
static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
||||
{
|
||||
final core::Map<core::bool, core::double> #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::double) {
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
|||
static method test4(self::MyMap x) → dynamic {
|
||||
{
|
||||
final self::MyMap #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ static method test2(dynamic x) → dynamic {
|
|||
static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
||||
{
|
||||
final core::Map<core::bool, core::double> #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::double) {
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ static method test3(core::Map<core::bool, core::double> x) → dynamic {
|
|||
static method test4(self::MyMap x) → dynamic {
|
||||
{
|
||||
final self::MyMap #0#0 = x;
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic}) {
|
||||
if(#0#0.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0.{core::Map::containsKey}(#C10){(core::Object?) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C10){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstr
|
|||
static method foo() → core::Map<self::C<core::String>, core::int>
|
||||
return throw 0;
|
||||
static method test() → dynamic {
|
||||
dynamic a1;
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = self::foo();
|
||||
final const dynamic #0#4 = invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
|
@ -39,7 +39,7 @@ static method test() → dynamic {
|
|||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → core::bool} && (let final dynamic #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → dynamic} in true)))
|
||||
^"){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstr
|
|||
static method foo() → core::Map<self::C<core::String>, core::int>
|
||||
return throw 0;
|
||||
static method test() → dynamic {
|
||||
dynamic a1;
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = self::foo();
|
||||
final const dynamic #0#4 = invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
|
@ -37,9 +37,9 @@ static method test() → dynamic {
|
|||
^";
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → core::bool} && (let final core::int? #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
^"){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → dynamic} in true)))
|
||||
^"){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstr
|
|||
static method foo() → core::Map<self::C<core::String>, core::int>
|
||||
return throw 0;
|
||||
static method test() → dynamic {
|
||||
dynamic a1;
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = self::foo();
|
||||
final const dynamic #0#4 = invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
|
@ -39,7 +39,7 @@ static method test() → dynamic {
|
|||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → core::bool} && (let final dynamic #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → dynamic} in true)))
|
||||
^"){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstr
|
|||
static method foo() → core::Map<self::C<core::String>, core::int>
|
||||
return throw 0;
|
||||
static method test() → dynamic {
|
||||
dynamic a1;
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = self::foo();
|
||||
final const dynamic #0#4 = invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
|
@ -39,7 +39,7 @@ static method test() → dynamic {
|
|||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → core::bool} && (let final dynamic #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → dynamic} in true)))
|
||||
^"){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstr
|
|||
static method foo() → core::Map<self::C<core::String>, core::int>
|
||||
return throw 0;
|
||||
static method test() → dynamic {
|
||||
dynamic a1;
|
||||
core::int a1;
|
||||
{
|
||||
final dynamic #0#0 = self::foo();
|
||||
final const dynamic #0#4 = invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
|
@ -37,9 +37,9 @@ static method test() → dynamic {
|
|||
^";
|
||||
if(!(#0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::containsKey}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → core::bool} && (let final core::int? #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
^"){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = #0#0{core::Map<self::C<core::String>, core::int>}.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
|
||||
var {const C(:var t): a1} = foo();
|
||||
^"){(core::Object?) → dynamic} in true)))
|
||||
^"){(core::Object?) → dynamic} as{ForNonNullableByDefault} core::int in true)))
|
||||
throw new _in::ReachabilityError::•();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/type_record_as_supertype.dart:22:16: Error: 'RR' is restricted and can't be extended or implemented.
|
||||
// abstract class C2 with RR {} // Error.
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:22: Context: This is the type denoted by the type alias.
|
||||
// abstract final class Record {}
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:16: Context: This is the type denoted by the type alias.
|
||||
// abstract class Record {}
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
|
|
@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/type_record_as_supertype.dart:22:16: Error: 'RR' is restricted and can't be extended or implemented.
|
||||
// abstract class C2 with RR {} // Error.
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:22: Context: This is the type denoted by the type alias.
|
||||
// abstract final class Record {}
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:16: Context: This is the type denoted by the type alias.
|
||||
// abstract class Record {}
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
|
|
@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/type_record_as_supertype.dart:22:16: Error: 'RR' is restricted and can't be extended or implemented.
|
||||
// abstract class C2 with RR {} // Error.
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:22: Context: This is the type denoted by the type alias.
|
||||
// abstract final class Record {}
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:16: Context: This is the type denoted by the type alias.
|
||||
// abstract class Record {}
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
|
|
@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/type_record_as_supertype.dart:22:16: Error: 'RR' is restricted and can't be extended or implemented.
|
||||
// abstract class C2 with RR {} // Error.
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:22: Context: This is the type denoted by the type alias.
|
||||
// abstract final class Record {}
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:16: Context: This is the type denoted by the type alias.
|
||||
// abstract class Record {}
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
|
|
@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/type_record_as_supertype.dart:22:16: Error: 'RR' is restricted and can't be extended or implemented.
|
||||
// abstract class C2 with RR {} // Error.
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:22: Context: This is the type denoted by the type alias.
|
||||
// abstract final class Record {}
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:16: Context: This is the type denoted by the type alias.
|
||||
// abstract class Record {}
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
|
|
@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/type_record_as_supertype.dart:22:16: Error: 'RR' is restricted and can't be extended or implemented.
|
||||
// abstract class C2 with RR {} // Error.
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:22: Context: This is the type denoted by the type alias.
|
||||
// abstract final class Record {}
|
||||
// ^
|
||||
// sdk/lib/core/record.dart:11:16: Context: This is the type denoted by the type alias.
|
||||
// abstract class Record {}
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
|
Loading…
Reference in a new issue