mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 21:11:19 +00:00
front_end: make use of TypeAnalyzer.analyzeConstantPattern
.
This will allow the front end to take advantage of flow analysis implied by a constant pattern (e.g. `case null` cause the scrutinee to be promoted in later cases). Fixes #51206. Change-Id: Ic8516abb4e051ffca0d4e7698339282812020cae Bug: https://github.com/dart-lang/sdk/issues/51206 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/281261 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
parent
403d5c93c3
commit
0f11c4ed5a
|
@ -369,8 +369,10 @@ mixin TypeAnalyzer<
|
|||
///
|
||||
/// See [dispatchPattern] for the meaning of [context].
|
||||
///
|
||||
/// Returns the static type of [expression].
|
||||
///
|
||||
/// Stack effect: pushes (Expression).
|
||||
void analyzeConstantPattern(
|
||||
Type analyzeConstantPattern(
|
||||
MatchContext<Node, Expression, Pattern, Type, Variable> context,
|
||||
Node node,
|
||||
Expression expression) {
|
||||
|
@ -382,8 +384,8 @@ mixin TypeAnalyzer<
|
|||
errors?.refutablePatternInIrrefutableContext(node, irrefutableContext);
|
||||
}
|
||||
Type matchedType = flow.getMatchedValueType();
|
||||
Type staticType = analyzeExpression(expression, matchedType);
|
||||
flow.constantPattern_end(expression, staticType,
|
||||
Type expressionType = analyzeExpression(expression, matchedType);
|
||||
flow.constantPattern_end(expression, expressionType,
|
||||
patternsEnabled: options.patternsEnabled);
|
||||
// Stack: (Expression)
|
||||
if (errors != null && !options.patternsEnabled) {
|
||||
|
@ -391,18 +393,19 @@ mixin TypeAnalyzer<
|
|||
if (switchScrutinee != null) {
|
||||
bool nullSafetyEnabled = options.nullSafetyEnabled;
|
||||
bool matches = nullSafetyEnabled
|
||||
? operations.isSubtypeOf(staticType, matchedType)
|
||||
: operations.isAssignableTo(staticType, matchedType);
|
||||
? operations.isSubtypeOf(expressionType, matchedType)
|
||||
: operations.isAssignableTo(expressionType, matchedType);
|
||||
if (!matches) {
|
||||
errors.caseExpressionTypeMismatch(
|
||||
caseExpression: expression,
|
||||
scrutinee: switchScrutinee,
|
||||
caseExpressionType: staticType,
|
||||
caseExpressionType: expressionType,
|
||||
scrutineeType: matchedType,
|
||||
nullSafetyEnabled: nullSafetyEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
return expressionType;
|
||||
}
|
||||
|
||||
/// Computes the type schema for a constant pattern.
|
||||
|
|
|
@ -9523,8 +9523,8 @@ class InferenceVisitorImpl extends InferenceVisitorBase
|
|||
int? stackBase;
|
||||
assert(checkStackBase(node, stackBase = stackHeight));
|
||||
|
||||
DartType matchedType = flow.getMatchedValueType();
|
||||
node.expressionType = analyzeExpression(node.expression, matchedType);
|
||||
node.expressionType =
|
||||
analyzeConstantPattern(context, node, node.expression);
|
||||
|
||||
assert(checkStack(node, stackBase, [
|
||||
/* expression = */ ValueKinds.Expression,
|
||||
|
|
|
@ -35,5 +35,5 @@ method(x, y, z) {
|
|||
definitelyAssignedFinal] = y; // Error
|
||||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
[1, notDefinitelyAssignedLateFinal]]) = z; // Ok
|
||||
[_, notDefinitelyAssignedLateFinal]]) = z; // Ok
|
||||
}
|
||||
|
|
|
@ -108,12 +108,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#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 && (let final dynamic #t12 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in 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.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t13 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t14 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t13 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 #t14 = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t15 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -108,14 +108,13 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#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 && (let final dynamic #t12 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in 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.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t13 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} && (let final core::int? #t14 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t13 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 #t14 = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in true) && (let final core::int? #t15 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
|
|
|
@ -123,12 +123,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#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 && (let final dynamic #t9 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in 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.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t10 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t11 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t10 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t12 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -123,12 +123,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#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 && (let final dynamic #t9 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in 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.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t10 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t11 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t10 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t12 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -123,12 +123,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#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 && (let final dynamic #t9 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in 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.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t10 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} && (let final core::int? #t11 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t10 = (#2#9#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} in true)) && (#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 = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic} in true) && (let final core::int? #t12 = #notDefinitelyAssignedLateFinal = (#2#16#func(){() → dynamic} as{ForNonNullableByDefault} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int? in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -22,6 +22,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:63:3: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
|
||||
// String returnImplicit() /* error */ {
|
||||
// ^
|
||||
|
@ -42,6 +47,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:async" as asy;
|
||||
|
@ -125,6 +135,10 @@ static method caseReturn2(self::Enum e) → self::Enum {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
static method localFunctions() → dynamic {
|
||||
function returnImplicit() → core::String {
|
||||
|
@ -194,6 +208,10 @@ static method localFunctions() → dynamic {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
core::bool b = false;
|
||||
core::int? local1 = (() → core::int? {
|
||||
|
|
|
@ -22,6 +22,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:63:3: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
|
||||
// String returnImplicit() /* error */ {
|
||||
// ^
|
||||
|
@ -42,6 +47,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:async" as asy;
|
||||
|
@ -125,6 +135,10 @@ static method caseReturn2(self::Enum e) → self::Enum {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
static method localFunctions() → dynamic {
|
||||
function returnImplicit() → core::String {
|
||||
|
@ -194,6 +208,10 @@ static method localFunctions() → dynamic {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
core::bool b = false;
|
||||
core::int? local1 = (() → core::int? {
|
||||
|
|
|
@ -22,6 +22,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:63:3: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
|
||||
// String returnImplicit() /* error */ {
|
||||
// ^
|
||||
|
@ -42,6 +47,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:async" as asy;
|
||||
|
@ -125,6 +135,10 @@ static method caseReturn2(self::Enum e) → self::Enum {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
static method localFunctions() → dynamic {
|
||||
function returnImplicit() → core::String {
|
||||
|
@ -194,6 +208,10 @@ static method localFunctions() → dynamic {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
core::bool b = false;
|
||||
core::int? local1 = (() → core::int? {
|
||||
|
|
|
@ -22,6 +22,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:63:3: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
|
||||
// String returnImplicit() /* error */ {
|
||||
// ^
|
||||
|
@ -42,6 +47,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:async" as asy;
|
||||
|
@ -125,6 +135,10 @@ static method caseReturn2(self::Enum e) → self::Enum {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
static method localFunctions() → dynamic {
|
||||
function returnImplicit() → core::String {
|
||||
|
@ -194,6 +208,10 @@ static method localFunctions() → dynamic {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
core::bool b = false;
|
||||
core::int? local1 = (() → core::int? {
|
||||
|
|
|
@ -22,6 +22,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:63:3: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
|
||||
// String returnImplicit() /* error */ {
|
||||
// ^
|
||||
|
@ -42,6 +47,11 @@ library /*isNonNullableByDefault*/;
|
|||
// FutureOr<int> returnAsync3() async {} // error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
// - 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
// Enum caseReturn2(Enum e) /* error */ {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:async" as asy;
|
||||
|
@ -125,6 +135,10 @@ static method caseReturn2(self::Enum e) → self::Enum {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:54:6: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
static method localFunctions() → dynamic {
|
||||
function returnImplicit() → core::String {
|
||||
|
@ -194,6 +208,10 @@ static method localFunctions() → dynamic {
|
|||
else {
|
||||
}
|
||||
}
|
||||
return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:108:3: Error: A non-null value must be returned since the return type 'Enum' doesn't allow null.
|
||||
- 'Enum' is from 'pkg/front_end/testcases/nnbd/return_null.dart'.
|
||||
Enum caseReturn2(Enum e) /* error */ {
|
||||
^" in null;
|
||||
}
|
||||
core::bool b = false;
|
||||
core::int? local1 = (() → core::int? {
|
||||
|
|
|
@ -33,7 +33,7 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final dynamic #4#0 = x;
|
||||
final core::int #4#0 = x{core::int};
|
||||
if(let final dynamic #t8 = #4#0 as{ForNonNullableByDefault} core::String in true) {
|
||||
return 4;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final dynamic #4#0 = x;
|
||||
final core::int #4#0 = x{core::int};
|
||||
if(let final core::String #t8 = #4#0 as{ForNonNullableByDefault} core::String in true) {
|
||||
return 4;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final dynamic #4#0 = x;
|
||||
final core::int #4#0 = x{core::int};
|
||||
if(let final dynamic #t8 = #4#0 as{ForNonNullableByDefault} core::String in true) {
|
||||
return 4;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final dynamic #4#0 = x;
|
||||
final core::int #4#0 = x{core::int};
|
||||
if(let final dynamic #t8 = #4#0 as{ForNonNullableByDefault} core::String in true) {
|
||||
return 4;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final dynamic #4#0 = x;
|
||||
final core::int #4#0 = x{core::int};
|
||||
if(let final core::String #t8 = #4#0 as{ForNonNullableByDefault} core::String in true) {
|
||||
return 4;
|
||||
}
|
||||
|
|
|
@ -274,7 +274,7 @@ class Class extends core::Object /*hasConstConstructor*/ {
|
|||
else
|
||||
if(#1#0 is{ForNonNullableByDefault} void && (let final dynamic #t1 = fun = #1#0{void} in true)) {
|
||||
{
|
||||
() → Never {};
|
||||
() → Null {};
|
||||
invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:40:25: Error: This couldn't be parsed.
|
||||
case void fun() {}: // Error
|
||||
^";
|
||||
|
|
|
@ -274,7 +274,7 @@ class Class extends core::Object /*hasConstConstructor*/ {
|
|||
else
|
||||
if(#1#0 is{ForNonNullableByDefault} void && (let final void #t1 = fun = #1#0{void} in true)) {
|
||||
{
|
||||
() → Never {};
|
||||
() → Null {};
|
||||
invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:40:25: Error: This couldn't be parsed.
|
||||
case void fun() {}: // Error
|
||||
^";
|
||||
|
|
|
@ -274,7 +274,7 @@ class Class extends core::Object /*hasConstConstructor*/ {
|
|||
else
|
||||
if(#1#0 is{ForNonNullableByDefault} void && (let final dynamic #t1 = fun = #1#0{void} in true)) {
|
||||
{
|
||||
() → Never {};
|
||||
() → Null {};
|
||||
invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:40:25: Error: This couldn't be parsed.
|
||||
case void fun() {}: // Error
|
||||
^";
|
||||
|
|
|
@ -274,7 +274,7 @@ class Class extends core::Object /*hasConstConstructor*/ {
|
|||
else
|
||||
if(#1#0 is{ForNonNullableByDefault} void && (let final dynamic #t1 = fun = #1#0{void} in true)) {
|
||||
{
|
||||
() → Never {};
|
||||
() → Null {};
|
||||
invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:40:25: Error: This couldn't be parsed.
|
||||
case void fun() {}: // Error
|
||||
^";
|
||||
|
|
|
@ -274,7 +274,7 @@ class Class extends core::Object /*hasConstConstructor*/ {
|
|||
else
|
||||
if(#1#0 is{ForNonNullableByDefault} void && (let final void #t1 = fun = #1#0{void} in true)) {
|
||||
{
|
||||
() → Never {};
|
||||
() → Null {};
|
||||
invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:40:25: Error: This couldn't be parsed.
|
||||
case void fun() {}: // Error
|
||||
^";
|
||||
|
|
|
@ -27,6 +27,11 @@ library /*isNonNullableByDefault*/;
|
|||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
@ -67,7 +72,10 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t8 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
|
@ -77,5 +85,4 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -27,6 +27,11 @@ library /*isNonNullableByDefault*/;
|
|||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
@ -73,7 +78,10 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t8 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
|
@ -83,5 +91,4 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -27,6 +27,11 @@ library /*isNonNullableByDefault*/;
|
|||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
@ -67,7 +72,10 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t8 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
|
@ -77,5 +85,4 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -27,6 +27,11 @@ library /*isNonNullableByDefault*/;
|
|||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
@ -67,7 +72,10 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t8 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
|
@ -77,5 +85,4 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -27,6 +27,11 @@ library /*isNonNullableByDefault*/;
|
|||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
@ -73,7 +78,10 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t8 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
|
@ -83,5 +91,4 @@ Try using a preexisting variable or changing the assignment to a pattern variabl
|
|||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -35,5 +35,5 @@ method(x, y, z) {
|
|||
definitelyAssignedFinal] = y; // Error
|
||||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
[1, notDefinitelyAssignedLateFinal]]) = z; // Ok
|
||||
[_, notDefinitelyAssignedLateFinal]]) = z; // Ok
|
||||
}
|
||||
|
|
|
@ -73,12 +73,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t8 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -79,12 +79,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final core::int #t7 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final core::int #t8 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -73,12 +73,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t8 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -73,12 +73,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t8 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -79,12 +79,11 @@ static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
|||
Class(field1: definitelyAssignedLateFinal, // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^") && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
|
||||
field2: [[notDefinitelyAssignedFinal, _], // Error
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final core::int #t7 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final core::int #t8 = notDefinitelyAssignedLateFinal = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} as{ForNonNullableByDefault} core::int in true)))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// (null) = null;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → dynamic {
|
||||
block {
|
||||
final has-declared-initializer dynamic #0#0 = null;
|
||||
if(!(#0#0 == null))
|
||||
if(!invalid-expression "pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
(null) = null;
|
||||
^")
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// (null) = null;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → dynamic {
|
||||
block {
|
||||
final has-declared-initializer dynamic #0#0 = null;
|
||||
if(!(#0#0 == null))
|
||||
if(!invalid-expression "pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
(null) = null;
|
||||
^")
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// (null) = null;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → dynamic {
|
||||
block {
|
||||
final has-declared-initializer dynamic #0#0 = null;
|
||||
if(!(#0#0 == null))
|
||||
if(!invalid-expression "pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
(null) = null;
|
||||
^")
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// (null) = null;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → dynamic {
|
||||
block {
|
||||
final has-declared-initializer dynamic #0#0 = null;
|
||||
if(!(#0#0 == null))
|
||||
if(!invalid-expression "pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
(null) = null;
|
||||
^")
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
// Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
// (null) = null;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → dynamic {
|
||||
block {
|
||||
final has-declared-initializer dynamic #0#0 = null;
|
||||
if(!(#0#0 == null))
|
||||
if(!invalid-expression "pkg/front_end/testcases/rasta/malformed_function.dart:6:4: Error: Refutable patterns can't be used in an irrefutable context.
|
||||
Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
|
||||
(null) = null;
|
||||
^")
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ static method main() → void {
|
|||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #1#0) {
|
||||
{
|
||||
(() → Never {
|
||||
(() → Null {
|
||||
#L2:
|
||||
{
|
||||
core::int #t1 = -1;
|
||||
|
@ -46,7 +46,7 @@ static method main() → void {
|
|||
}
|
||||
}
|
||||
}
|
||||
})(){() → Never};
|
||||
})(){() → Null};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ static method main() → void {
|
|||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #1#0) {
|
||||
{
|
||||
(() → Never {
|
||||
(() → Null {
|
||||
#L2:
|
||||
{
|
||||
core::int #t1 = -1;
|
||||
|
@ -46,7 +46,7 @@ static method main() → void {
|
|||
}
|
||||
}
|
||||
}
|
||||
})(){() → Never};
|
||||
})(){() → Null};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → void {
|
||||
core::List<core::String> whereWasI = <core::String>[];
|
||||
|
@ -19,17 +18,17 @@ static method main() → void {
|
|||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #1#0) {
|
||||
{
|
||||
let final Never #t1 = (() → Never {
|
||||
(() → Null {
|
||||
#L2:
|
||||
{
|
||||
core::int #t2 = -1;
|
||||
core::int #t1 = -1;
|
||||
final core::int #0#0 = inner;
|
||||
if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0)
|
||||
#t2 = 0;
|
||||
#t1 = 0;
|
||||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #0#0)
|
||||
#t2 = 1;
|
||||
switch(#t2) {
|
||||
#t1 = 1;
|
||||
switch(#t1) {
|
||||
#L3:
|
||||
case #C1:
|
||||
{
|
||||
|
@ -47,7 +46,7 @@ static method main() → void {
|
|||
}
|
||||
}
|
||||
}
|
||||
})(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
|
||||
})(){() → Null};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → void {
|
||||
core::List<core::String> whereWasI = <core::String>[];
|
||||
|
@ -19,17 +18,17 @@ static method main() → void {
|
|||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #1#0) {
|
||||
{
|
||||
let final Never #t1 = (() → Never {
|
||||
(() → Null {
|
||||
#L2:
|
||||
{
|
||||
core::int #t2 = -1;
|
||||
core::int #t1 = -1;
|
||||
final core::int #0#0 = inner;
|
||||
if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0)
|
||||
#t2 = 0;
|
||||
#t1 = 0;
|
||||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #0#0)
|
||||
#t2 = 1;
|
||||
switch(#t2) {
|
||||
#t1 = 1;
|
||||
switch(#t1) {
|
||||
#L3:
|
||||
case #C1:
|
||||
{
|
||||
|
@ -47,7 +46,7 @@ static method main() → void {
|
|||
}
|
||||
}
|
||||
}
|
||||
})(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
|
||||
})(){() → Null};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
static method main() → void {
|
||||
core::List<core::String> whereWasI = core::_GrowableList::•<core::String>(0);
|
||||
|
@ -19,17 +18,17 @@ static method main() → void {
|
|||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #1#0) {
|
||||
{
|
||||
let final Never #t1 = (() → Never {
|
||||
(() → Null {
|
||||
#L2:
|
||||
{
|
||||
core::int #t2 = -1;
|
||||
core::int #t1 = -1;
|
||||
final core::int #0#0 = inner;
|
||||
if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0)
|
||||
#t2 = 0;
|
||||
#t1 = 0;
|
||||
else
|
||||
if(#C2 =={core::num::==}{(core::Object) → core::bool} #0#0)
|
||||
#t2 = 1;
|
||||
switch(#t2) {
|
||||
#t1 = 1;
|
||||
switch(#t1) {
|
||||
#L3:
|
||||
case #C1:
|
||||
{
|
||||
|
@ -47,7 +46,7 @@ static method main() → void {
|
|||
}
|
||||
}
|
||||
}
|
||||
})(){() → Never} in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
|
||||
})(){() → Null};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -172,6 +172,7 @@ rasta/issue_000041: RuntimeError
|
|||
rasta/issue_000042: RuntimeError
|
||||
rasta/issue_000044: RuntimeError
|
||||
rasta/malformed_const_constructor: RuntimeError
|
||||
rasta/malformed_function: RuntimeError
|
||||
rasta/parser_error: RuntimeError
|
||||
rasta/static: RuntimeError
|
||||
rasta/super: RuntimeError
|
||||
|
|
|
@ -254,6 +254,7 @@ rasta/issue_000041: RuntimeError
|
|||
rasta/issue_000042: RuntimeError
|
||||
rasta/issue_000044: RuntimeError
|
||||
rasta/malformed_const_constructor: RuntimeError
|
||||
rasta/malformed_function: RuntimeError
|
||||
rasta/parser_error: RuntimeError
|
||||
rasta/static: RuntimeError
|
||||
rasta/super: RuntimeError
|
||||
|
@ -276,7 +277,6 @@ regress/issue_35260: RuntimeError # Expected
|
|||
regress/issue_35266: RuntimeError # Expected
|
||||
regress/issue_37285: RuntimeError
|
||||
regress/issue_39091_2: RuntimeError
|
||||
regress/issue_39040: RuntimeError # https://github.com/dart-lang/sdk/issues/51206
|
||||
runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast: RuntimeError
|
||||
runtime_checks_new/mixin_forwarding_stub_getter: TypeCheckError
|
||||
set_literals/disambiguation_rule2: RuntimeError
|
||||
|
|
Loading…
Reference in a new issue