Skip to content

Commit 628ba2a

Browse files
chloestefantsovaCommit Queue
authored and
Commit Queue
committed
[cfe] Use StateError as the pattern matching error in assignments
Part of #49749 Change-Id: I9c4fb121526ca40e5809be8f4a8a5770d551cfb1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291063 Commit-Queue: Chloe Stefantsova <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent f5aaf58 commit 628ba2a

File tree

81 files changed

+147
-198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+147
-198
lines changed

pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1666,7 +1666,7 @@ class ConstantsTransformer extends RemovingTransformer {
16661666

16671667
List<Statement> replacementStatements = [
16681668
...matchingCache.declarations,
1669-
// TODO(cstefantsova): Figure out the right exception to throw.
1669+
// TODO(cstefantsova): Provide a better diagnostic message.
16701670
createIfStatement(
16711671
createNot(readMatchingExpression),
16721672
createExpressionStatement(createThrow(createConstructorInvocation(
@@ -1726,12 +1726,15 @@ class ConstantsTransformer extends RemovingTransformer {
17261726
List<Statement> replacementStatements = [
17271727
...node.pattern.declaredVariables,
17281728
...matchingCache.declarations,
1729-
// TODO(cstefantsova): Figure out the right exception to throw.
1729+
// TODO(cstefantsova): Provide a better diagnostic message.
17301730
createIfStatement(
17311731
createNot(readMatchingExpression),
17321732
createExpressionStatement(createThrow(createConstructorInvocation(
1733-
typeEnvironment.coreTypes.reachabilityErrorConstructor,
1734-
createArguments([], fileOffset: node.fileOffset),
1733+
typeEnvironment.coreTypes.stateErrorConstructor,
1734+
createArguments([
1735+
createStringLiteral(messagePatternMatchingError.problemMessage,
1736+
fileOffset: node.fileOffset)
1737+
], fileOffset: node.fileOffset),
17351738
fileOffset: node.fileOffset))),
17361739
fileOffset: node.fileOffset),
17371740
];

pkg/front_end/testcases/dartdevc/issue51449.dart.strong.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static method main() → dynamic {
2525
block {
2626
final synthesized dynamic #0#0 = (2, "Hello");
2727
if(!(let final dynamic #t3 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
28-
throw new _in::ReachabilityError::•();
28+
throw new core::StateError::•("Pattern matching error");
2929
} =>#0#0;
3030
core::print(#j#get(){() → core::int});
3131
}

pkg/front_end/testcases/dartdevc/issue51449.dart.strong.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static method main() → dynamic {
2525
block {
2626
final synthesized dynamic #0#0 = (2, "Hello");
2727
if(!(let final dynamic #t3 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
28-
throw new _in::ReachabilityError::•();
28+
throw new core::StateError::•("Pattern matching error");
2929
} =>#0#0;
3030
core::print(#j#get(){() → core::int});
3131
}

pkg/front_end/testcases/dartdevc/issue51449.dart.weak.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static method main() → dynamic {
3131
block {
3232
final synthesized dynamic #0#0 = (2, "Hello");
3333
if(!(let final dynamic #t1 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
34-
throw new _in::ReachabilityError::•();
34+
throw new core::StateError::•("Pattern matching error");
3535
} =>#0#0;
3636
core::print(#j#get(){() → core::int});
3737
}

pkg/front_end/testcases/dartdevc/issue51449.dart.weak.modular.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static method main() → dynamic {
3131
block {
3232
final synthesized dynamic #0#0 = (2, "Hello");
3333
if(!(let final dynamic #t1 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
34-
throw new _in::ReachabilityError::•();
34+
throw new core::StateError::•("Pattern matching error");
3535
} =>#0#0;
3636
core::print(#j#get(){() → core::int});
3737
}

pkg/front_end/testcases/dartdevc/issue51449.dart.weak.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static method main() → dynamic {
3131
block {
3232
final synthesized dynamic #0#0 = (2, "Hello");
3333
if(!(let final dynamic #t1 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
34-
throw new _in::ReachabilityError::•();
34+
throw new core::StateError::•("Pattern matching error");
3535
} =>#0#0;
3636
core::print(#j#get(){() → core::int});
3737
}

pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ library /*isNonNullableByDefault*/;
3030
//
3131
import self as self;
3232
import "dart:core" as core;
33-
import "dart:_internal" as _in;
3433

3534
class Class extends core::Object {
3635
synthetic constructor •() → self::Class
@@ -46,7 +45,7 @@ static method errors(self::Class c) → dynamic {
4645
block {
4746
final synthesized dynamic #0#0 = 42;
4847
if(!true)
49-
throw new _in::ReachabilityError::•();
48+
throw new core::StateError::•("Pattern matching error");
5049
} =>#0#0;
5150
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:12:3: Error: Explicit extension application cannot be used as an expression.
5251
Extension(c) += 42;

pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.transformed.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ library /*isNonNullableByDefault*/;
3030
//
3131
import self as self;
3232
import "dart:core" as core;
33-
import "dart:_internal" as _in;
3433

3534
class Class extends core::Object {
3635
synthetic constructor •() → self::Class
@@ -46,7 +45,7 @@ static method errors(self::Class c) → dynamic {
4645
block {
4746
final synthesized dynamic #0#0 = 42;
4847
if(!true)
49-
throw new _in::ReachabilityError::•();
48+
throw new core::StateError::•("Pattern matching error");
5049
} =>#0#0;
5150
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:12:3: Error: Explicit extension application cannot be used as an expression.
5251
Extension(c) += 42;

pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ library /*isNonNullableByDefault*/;
3030
//
3131
import self as self;
3232
import "dart:core" as core;
33-
import "dart:_internal" as _in;
3433

3534
class Class extends core::Object {
3635
synthetic constructor •() → self::Class
@@ -46,7 +45,7 @@ static method errors(self::Class c) → dynamic {
4645
block {
4746
final synthesized dynamic #0#0 = 42;
4847
if(!true)
49-
throw new _in::ReachabilityError::•();
48+
throw new core::StateError::•("Pattern matching error");
5049
} =>#0#0;
5150
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:12:3: Error: Explicit extension application cannot be used as an expression.
5251
Extension(c) += 42;

pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.modular.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ library /*isNonNullableByDefault*/;
3030
//
3131
import self as self;
3232
import "dart:core" as core;
33-
import "dart:_internal" as _in;
3433

3534
class Class extends core::Object {
3635
synthetic constructor •() → self::Class
@@ -46,7 +45,7 @@ static method errors(self::Class c) → dynamic {
4645
block {
4746
final synthesized dynamic #0#0 = 42;
4847
if(!true)
49-
throw new _in::ReachabilityError::•();
48+
throw new core::StateError::•("Pattern matching error");
5049
} =>#0#0;
5150
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:12:3: Error: Explicit extension application cannot be used as an expression.
5251
Extension(c) += 42;

pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.transformed.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ library /*isNonNullableByDefault*/;
3030
//
3131
import self as self;
3232
import "dart:core" as core;
33-
import "dart:_internal" as _in;
3433

3534
class Class extends core::Object {
3635
synthetic constructor •() → self::Class
@@ -46,7 +45,7 @@ static method errors(self::Class c) → dynamic {
4645
block {
4746
final synthesized dynamic #0#0 = 42;
4847
if(!true)
49-
throw new _in::ReachabilityError::•();
48+
throw new core::StateError::•("Pattern matching error");
5049
} =>#0#0;
5150
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:12:3: Error: Explicit extension application cannot be used as an expression.
5251
Extension(c) += 42;

pkg/front_end/testcases/general/issue40242.dart.strong.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ library /*isNonNullableByDefault*/;
2020
//
2121
import self as self;
2222
import "dart:core" as core;
23-
import "dart:_internal" as _in;
2423

2524
class C extends core::Object {
2625
synthetic constructor •() → self::C
@@ -50,7 +49,7 @@ static method errors() → dynamic {
5049
block {
5150
final synthesized dynamic #0#0 = new self::C::•();
5251
if(!(let final dynamic #t1 = c2 = #0#0{self::C} in true))
53-
throw new _in::ReachabilityError::•();
52+
throw new core::StateError::•("Pattern matching error");
5453
} =>#0#0;
5554
invalid-expression "pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
5655
c3 = null;

pkg/front_end/testcases/general/issue40242.dart.strong.transformed.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ library /*isNonNullableByDefault*/;
2020
//
2121
import self as self;
2222
import "dart:core" as core;
23-
import "dart:_internal" as _in;
2423

2524
class C extends core::Object {
2625
synthetic constructor •() → self::C
@@ -50,7 +49,7 @@ static method errors() → dynamic {
5049
block {
5150
final synthesized dynamic #0#0 = new self::C::•();
5251
if(!(let final self::C #t1 = c2 = #0#0{self::C} in true))
53-
throw new _in::ReachabilityError::•();
52+
throw new core::StateError::•("Pattern matching error");
5453
} =>#0#0;
5554
invalid-expression "pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
5655
c3 = null;

pkg/front_end/testcases/general/issue40242.dart.weak.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ library /*isNonNullableByDefault*/;
2020
//
2121
import self as self;
2222
import "dart:core" as core;
23-
import "dart:_internal" as _in;
2423

2524
class C extends core::Object {
2625
synthetic constructor •() → self::C
@@ -50,7 +49,7 @@ static method errors() → dynamic {
5049
block {
5150
final synthesized dynamic #0#0 = new self::C::•();
5251
if(!(let final dynamic #t1 = c2 = #0#0{self::C} in true))
53-
throw new _in::ReachabilityError::•();
52+
throw new core::StateError::•("Pattern matching error");
5453
} =>#0#0;
5554
invalid-expression "pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
5655
c3 = null;

pkg/front_end/testcases/general/issue40242.dart.weak.modular.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ library /*isNonNullableByDefault*/;
2020
//
2121
import self as self;
2222
import "dart:core" as core;
23-
import "dart:_internal" as _in;
2423

2524
class C extends core::Object {
2625
synthetic constructor •() → self::C
@@ -50,7 +49,7 @@ static method errors() → dynamic {
5049
block {
5150
final synthesized dynamic #0#0 = new self::C::•();
5251
if(!(let final dynamic #t1 = c2 = #0#0{self::C} in true))
53-
throw new _in::ReachabilityError::•();
52+
throw new core::StateError::•("Pattern matching error");
5453
} =>#0#0;
5554
invalid-expression "pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
5655
c3 = null;

pkg/front_end/testcases/general/issue40242.dart.weak.transformed.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ library /*isNonNullableByDefault*/;
2020
//
2121
import self as self;
2222
import "dart:core" as core;
23-
import "dart:_internal" as _in;
2423

2524
class C extends core::Object {
2625
synthetic constructor •() → self::C
@@ -50,7 +49,7 @@ static method errors() → dynamic {
5049
block {
5150
final synthesized dynamic #0#0 = new self::C::•();
5251
if(!(let final self::C #t1 = c2 = #0#0{self::C} in true))
53-
throw new _in::ReachabilityError::•();
52+
throw new core::StateError::•("Pattern matching error");
5453
} =>#0#0;
5554
invalid-expression "pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
5655
c3 = null;

pkg/front_end/testcases/late_lowering/issue51449.dart.strong.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static method main() → dynamic {
2525
block {
2626
final synthesized dynamic #0#0 = (2, "Hello");
2727
if(!(let final dynamic #t3 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
28-
throw new _in::ReachabilityError::•();
28+
throw new core::StateError::•("Pattern matching error");
2929
} =>#0#0;
3030
core::print(#j#get(){() → core::int});
3131
}

pkg/front_end/testcases/late_lowering/issue51449.dart.strong.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static method main() → dynamic {
2525
block {
2626
final synthesized dynamic #0#0 = (2, "Hello");
2727
if(!(let final dynamic #t3 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
28-
throw new _in::ReachabilityError::•();
28+
throw new core::StateError::•("Pattern matching error");
2929
} =>#0#0;
3030
core::print(#j#get(){() → core::int});
3131
}

pkg/front_end/testcases/late_lowering/issue51449.dart.weak.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static method main() → dynamic {
3131
block {
3232
final synthesized dynamic #0#0 = (2, "Hello");
3333
if(!(let final dynamic #t1 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
34-
throw new _in::ReachabilityError::•();
34+
throw new core::StateError::•("Pattern matching error");
3535
} =>#0#0;
3636
core::print(#j#get(){() → core::int});
3737
}

pkg/front_end/testcases/late_lowering/issue51449.dart.weak.modular.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static method main() → dynamic {
3131
block {
3232
final synthesized dynamic #0#0 = (2, "Hello");
3333
if(!(let final dynamic #t1 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
34-
throw new _in::ReachabilityError::•();
34+
throw new core::StateError::•("Pattern matching error");
3535
} =>#0#0;
3636
core::print(#j#get(){() → core::int});
3737
}

pkg/front_end/testcases/late_lowering/issue51449.dart.weak.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static method main() → dynamic {
3131
block {
3232
final synthesized dynamic #0#0 = (2, "Hello");
3333
if(!(let final dynamic #t1 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
34-
throw new _in::ReachabilityError::•();
34+
throw new core::StateError::•("Pattern matching error");
3535
} =>#0#0;
3636
core::print(#j#get(){() → core::int});
3737
}

pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.strong.expect

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
8181
^^^^^^^^^^^^^^^^" && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:32:7: Error: Can't assign to the final variable '#initializedLateFinal'.
8282
initializedLateFinal, // Error
8383
^^^^^^^^^^^^^^^^^^^^^" && (let final dynamic #t5 = definitelyUnassignedFinal = #0#0{(core::Object?, core::Object?, core::Object?)}.$3{core::Object?} in true)))
84-
throw new _in::ReachabilityError::•();
84+
throw new core::StateError::•("Pattern matching error");
8585
} =>#0#0;
8686
block {
8787
final synthesized dynamic #1#0 = y;
8888
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t6 = #definitelyUnassignedLateFinal#set(#1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} as{ForNonNullableByDefault} core::int?){(core::int) → dynamic} in true) && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:35:5: Error: Final variable 'definitelyAssignedFinal' might already be assigned at this point.
8989
definitelyAssignedFinal] = y; // Error
9090
^^^^^^^^^^^^^^^^^^^^^^^"))
91-
throw new _in::ReachabilityError::•();
91+
throw new core::StateError::•("Pattern matching error");
9292
} =>#1#0;
9393
block {
9494
final synthesized dynamic #2#0 = z;
@@ -109,7 +109,7 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
109109
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3#func(){() → dynamic} is{ForNonNullableByDefault} core::List<dynamic> && (#2#3#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9#func(){() → dynamic} is{ForNonNullableByDefault} core::List<dynamic> && (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
110110
field2: [[notDefinitelyAssignedFinal, _], // Error
111111
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#16#func(){() → dynamic} is{ForNonNullableByDefault} core::List<dynamic> && (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t11 = #notDefinitelyAssignedLateFinal#set((#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int?){(core::int) → dynamic} in true)))))
112-
throw new _in::ReachabilityError::•();
112+
throw new core::StateError::•("Pattern matching error");
113113
} =>#2#0;
114114
}
115115

pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.strong.transformed.expect

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
8181
^^^^^^^^^^^^^^^^" && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:32:7: Error: Can't assign to the final variable '#initializedLateFinal'.
8282
initializedLateFinal, // Error
8383
^^^^^^^^^^^^^^^^^^^^^" && (let final core::Object? #t5 = definitelyUnassignedFinal = #0#0{(core::Object?, core::Object?, core::Object?)}.$3{core::Object?} in true)))
84-
throw new _in::ReachabilityError::•();
84+
throw new core::StateError::•("Pattern matching error");
8585
} =>#0#0;
8686
block {
8787
final synthesized dynamic #1#0 = y;
8888
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t6 = #definitelyUnassignedLateFinal#set(#1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} as{ForNonNullableByDefault} core::int?){(core::int) → dynamic} in true) && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:35:5: Error: Final variable 'definitelyAssignedFinal' might already be assigned at this point.
8989
definitelyAssignedFinal] = y; // Error
9090
^^^^^^^^^^^^^^^^^^^^^^^"))
91-
throw new _in::ReachabilityError::•();
91+
throw new core::StateError::•("Pattern matching error");
9292
} =>#1#0;
9393
block {
9494
final synthesized dynamic #2#0 = z;
@@ -109,7 +109,7 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
109109
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3#func(){() → dynamic} is{ForNonNullableByDefault} core::List<dynamic> && (#2#3#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9#func(){() → dynamic} is{ForNonNullableByDefault} core::List<dynamic> && (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
110110
field2: [[notDefinitelyAssignedFinal, _], // Error
111111
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#16#func(){() → dynamic} is{ForNonNullableByDefault} core::List<dynamic> && (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t11 = #notDefinitelyAssignedLateFinal#set((#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int?){(core::int) → dynamic} in true)))))
112-
throw new _in::ReachabilityError::•();
112+
throw new core::StateError::•("Pattern matching error");
113113
} =>#2#0;
114114
}
115115

0 commit comments

Comments
 (0)