mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 16:31:07 +00:00
Issue 52151. Fixes for reachability in switch patterns when unresolved / error type.
Bug: https://github.com/dart-lang/sdk/issues/52151 Change-Id: Ib56df1711cbfb7a593c7b16fd6a67e45baeabc3c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/302455 Reviewed-by: Paul Berry <paulberry@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
parent
8d2b2a197d
commit
c0d33e45d1
|
@ -39,6 +39,9 @@ abstract class TypeOperations<Type extends Object> {
|
|||
/// Returns `true` if [type] is the `Never` type.
|
||||
bool isNeverType(Type type);
|
||||
|
||||
/// Returns `true` if [type] is the `InvalidType` type.
|
||||
bool isErrorType(Type type);
|
||||
|
||||
/// Returns `true` if [type] is the `Object?` type.
|
||||
bool isNullableObject(Type type);
|
||||
|
||||
|
@ -163,7 +166,9 @@ class ExhaustivenessCache<
|
|||
|
||||
/// Returns the [StaticType] for [type].
|
||||
StaticType getStaticType(Type type) {
|
||||
if (typeOperations.isNeverType(type)) {
|
||||
if (typeOperations.isErrorType(type)) {
|
||||
return StaticType.errorType;
|
||||
} else if (typeOperations.isNeverType(type)) {
|
||||
return StaticType.neverType;
|
||||
} else if (typeOperations.isNullType(type)) {
|
||||
return StaticType.nullType;
|
||||
|
|
|
@ -22,6 +22,9 @@ abstract class StaticType {
|
|||
/// Built-in `Never` type.
|
||||
static const StaticType neverType = const _NeverType();
|
||||
|
||||
/// Built-in `Error` type.
|
||||
static const StaticType errorType = const _ErrorType();
|
||||
|
||||
/// The static types of the fields this type exposes for record destructuring.
|
||||
///
|
||||
/// Includes inherited fields.
|
||||
|
@ -274,6 +277,35 @@ class _NeverType extends _BaseStaticType with _ObjectFieldMixin {
|
|||
}
|
||||
}
|
||||
|
||||
class _ErrorType extends _BaseStaticType with _ObjectFieldMixin {
|
||||
const _ErrorType();
|
||||
|
||||
@override
|
||||
bool get isSealed => false;
|
||||
|
||||
@override
|
||||
bool isSubtypeOf(StaticType other) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
String get name => 'InvalidType';
|
||||
|
||||
@override
|
||||
StaticType get nullable => this;
|
||||
|
||||
@override
|
||||
StaticType get nonNullable => this;
|
||||
|
||||
@override
|
||||
bool get isImplicitlyNullable => false;
|
||||
|
||||
@override
|
||||
void typeToDart(DartTemplateBuffer buffer) {
|
||||
buffer.writeCoreType(name);
|
||||
}
|
||||
}
|
||||
|
||||
class _NullType extends NullableStaticType with _ObjectFieldMixin {
|
||||
const _NullType(super.underlying);
|
||||
|
||||
|
|
|
@ -4489,6 +4489,11 @@ class _FlowAnalysisImpl<Node extends Object, Statement extends Node,
|
|||
required Type knownType,
|
||||
bool matchFailsIfWrongType = true,
|
||||
bool matchMayFailEvenIfCorrectType = false}) {
|
||||
if (operations.isError(knownType)) {
|
||||
_unmatched = _join(_unmatched!, _current);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (operations.classifyType(matchedType) ==
|
||||
TypeClassification.nonNullable) {
|
||||
// The matched type is non-nullable, so promote to a non-nullable type.
|
||||
|
|
|
@ -65,10 +65,7 @@ emptyNever(Never never) => /*type=Never*/ switch (never) { };
|
|||
emptyUnresolved(
|
||||
Unresolved
|
||||
unresolved) => /*cfe.type=Never*/ /*analyzer.
|
||||
checkingOrder={Object?,Object,Null},
|
||||
error=non-exhaustive:Object(),
|
||||
subtypes={Object,Null},
|
||||
type=Object?
|
||||
error=non-exhaustive:InvalidType(),type=InvalidType
|
||||
*/
|
||||
switch (unresolved) {
|
||||
|
||||
|
@ -77,10 +74,8 @@ emptyUnresolved(
|
|||
nonEmptyUnresolved(
|
||||
Unresolved
|
||||
unresolved) => /*cfe.type=Never*/ /*analyzer.
|
||||
checkingOrder={Object?,Object,Null},
|
||||
subtypes={Object,Null},
|
||||
type=Object?
|
||||
error=non-exhaustive:InvalidType(),type=InvalidType
|
||||
*/
|
||||
switch (unresolved) {
|
||||
_ /*cfe.space=∅*/ /*analyzer.space=()*/ => 0,
|
||||
_ /*cfe.space=∅*/ /*analyzer.space=InvalidType*/ => 0,
|
||||
};
|
||||
|
|
|
@ -39,25 +39,19 @@ exhaustiveTyped(
|
|||
A<num>
|
||||
a) => /*cfe.
|
||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||
type=Never
|
||||
type=A<num>
|
||||
*/ /*analyzer.
|
||||
checkingOrder={Object?,Object,Null},
|
||||
error=non-exhaustive:Object(),
|
||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||
subtypes={Object,Null},
|
||||
type=Object?
|
||||
type=A<num>
|
||||
*/
|
||||
switch (o) {
|
||||
switch (a) {
|
||||
A<int>(
|
||||
:void Function(int) member
|
||||
) /*cfe.space=Never(A<int>.member: void Function(int) (void Function(int)))*/ /*analyzer.space=A<int>(A<int>.member: void Function(int) (void Function(int)))*/ =>
|
||||
) /*space=A<int>(A<int>.member: void Function(int) (void Function(int)))*/ =>
|
||||
0,
|
||||
A<num>(
|
||||
:void Function(num) member
|
||||
) /*cfe.
|
||||
error=unreachable,
|
||||
space=Never(A<num>.member: void Function(num) (void Function(num)))
|
||||
*/ /*analyzer.space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||
) /*space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||
1,
|
||||
};
|
||||
|
||||
|
@ -65,24 +59,21 @@ unreachable(
|
|||
A<num>
|
||||
a) => /*cfe.
|
||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||
type=Never
|
||||
type=A<num>
|
||||
*/ /*analyzer.
|
||||
checkingOrder={Object?,Object,Null},
|
||||
error=non-exhaustive:Object(),
|
||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||
subtypes={Object,Null},
|
||||
type=Object?
|
||||
type=A<num>
|
||||
*/
|
||||
switch (o) {
|
||||
switch (a) {
|
||||
A<num>(
|
||||
:var member
|
||||
) /*cfe.space=Never(A<num>.member: void Function(num) (void Function(num)))*/ /*analyzer.space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||
) /*space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||
1,
|
||||
A<int>(
|
||||
:var member
|
||||
) /*cfe.
|
||||
error=unreachable,
|
||||
space=Never(A<int>.member: void Function(int) (void Function(int)))
|
||||
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
||||
*/ /*analyzer.
|
||||
error=unreachable,
|
||||
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
||||
|
@ -95,24 +86,21 @@ nonExhaustiveRestricted(
|
|||
A<num>
|
||||
a) => /*cfe.
|
||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||
type=Never
|
||||
type=A<num>
|
||||
*/ /*analyzer.
|
||||
checkingOrder={Object?,Object,Null},
|
||||
error=non-exhaustive:Object(),
|
||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||
subtypes={Object,Null},
|
||||
type=Object?
|
||||
type=A<num>
|
||||
*/
|
||||
switch (o) {
|
||||
switch (a) {
|
||||
A<num>(
|
||||
:void Function(num) member
|
||||
) /*cfe.space=Never(A<num>.member: void Function(num) (void Function(num)))*/ /*analyzer.space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||
) /*space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||
1,
|
||||
A<int>(
|
||||
:var member
|
||||
) /*cfe.
|
||||
error=unreachable,
|
||||
space=Never(A<int>.member: void Function(int) (void Function(int)))
|
||||
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
||||
*/ /*analyzer.
|
||||
error=unreachable,
|
||||
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:_fe_analyzer_shared/src/exhaustiveness/key.dart';
|
||||
import 'package:_fe_analyzer_shared/src/exhaustiveness/static_type.dart';
|
||||
import 'package:_fe_analyzer_shared/src/exhaustiveness/shared.dart';
|
||||
import 'package:_fe_analyzer_shared/src/exhaustiveness/static_type.dart';
|
||||
import 'package:_fe_analyzer_shared/src/exhaustiveness/types.dart';
|
||||
|
||||
class TestEnvironment implements ObjectPropertyLookup {
|
||||
|
@ -136,11 +136,16 @@ class TestEnvironment implements ObjectPropertyLookup {
|
|||
class _Type {
|
||||
static const _InterfaceType Object = _InterfaceType(_Class.Object);
|
||||
static const _Type NullableObject = _NullableType(_Type.Object);
|
||||
static const _Type Error = _ErrorType();
|
||||
static const _InterfaceType Never = _InterfaceType(_Class.Never);
|
||||
static const _InterfaceType Bool = _InterfaceType(_Class.Bool);
|
||||
static const _Type Null = _NullableType(_Type.Never);
|
||||
}
|
||||
|
||||
class _ErrorType implements _Type {
|
||||
const _ErrorType();
|
||||
}
|
||||
|
||||
class _Class {
|
||||
final String name;
|
||||
final bool isSealed;
|
||||
|
@ -302,6 +307,11 @@ class _TypeOperations implements TypeOperations<_Type> {
|
|||
return type == _Type.Bool;
|
||||
}
|
||||
|
||||
@override
|
||||
bool isErrorType(_Type type) {
|
||||
return type == _Type.Error;
|
||||
}
|
||||
|
||||
@override
|
||||
bool isNeverType(_Type type) {
|
||||
return type == _Type.Never;
|
||||
|
|
|
@ -8660,6 +8660,21 @@ main() {
|
|||
checkReachable(false),
|
||||
]);
|
||||
});
|
||||
|
||||
test('error type does not make following cases unreachable', () {
|
||||
// We don't know the correct type, so recover by expecting that the
|
||||
// following cases still will be useful once the error is fixed.
|
||||
h.run([
|
||||
switchExpr(expr('num'), [
|
||||
wildcard(type: 'error').thenExpr(block([
|
||||
checkReachable(true),
|
||||
]).thenExpr(intLiteral(0))),
|
||||
wildcard().thenExpr(block([
|
||||
checkReachable(true),
|
||||
]).thenExpr(intLiteral(1))),
|
||||
]).stmt,
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
group('Switch statement:', () {
|
||||
|
@ -8967,6 +8982,21 @@ main() {
|
|||
]);
|
||||
});
|
||||
|
||||
test('error type does not make following cases unreachable', () {
|
||||
// We don't know the correct type, so recover by expecting that the
|
||||
// following cases still will be useful once the error is fixed.
|
||||
h.run([
|
||||
switch_(expr('num'), [
|
||||
wildcard(type: 'error').then([
|
||||
checkReachable(true),
|
||||
]),
|
||||
wildcard().then([
|
||||
checkReachable(true),
|
||||
]),
|
||||
]),
|
||||
]);
|
||||
});
|
||||
|
||||
group('Joins promotions of scrutinee:', () {
|
||||
test('First case more promoted', () {
|
||||
var x = Var('x');
|
||||
|
|
|
@ -902,6 +902,7 @@ class MiniAstOperations
|
|||
'bool <: bool': Type('bool'),
|
||||
'dynamic <: int': Type('dynamic'),
|
||||
'error <: int': Type('error'),
|
||||
'error <: num': Type('error'),
|
||||
'int <: dynamic': Type('int'),
|
||||
'int <: num': Type('int'),
|
||||
'int <: Object?': Type('int'),
|
||||
|
|
|
@ -131,6 +131,10 @@ class ConstantVerifier extends RecursiveAstVisitor<void> {
|
|||
super.visitConstantPattern(node);
|
||||
|
||||
var expression = node.expression.unParenthesized;
|
||||
if (expression.typeOrThrow is InvalidType) {
|
||||
return;
|
||||
}
|
||||
|
||||
DartObjectImpl? value = _validate(
|
||||
expression,
|
||||
CompileTimeErrorCode.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION,
|
||||
|
|
|
@ -323,7 +323,12 @@ class AnalyzerTypeOperations implements TypeOperations<DartType> {
|
|||
|
||||
@override
|
||||
bool isDynamic(DartType type) {
|
||||
return type is DynamicType || type is InvalidType;
|
||||
return type is DynamicType;
|
||||
}
|
||||
|
||||
@override
|
||||
bool isErrorType(DartType type) {
|
||||
return type is InvalidType;
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -958,8 +958,6 @@ void f(Object? x) {
|
|||
}
|
||||
''', [
|
||||
error(CompileTimeErrorCode.MISSING_VARIABLE_PATTERN, 56, 1),
|
||||
error(CompileTimeErrorCode.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION,
|
||||
56, 1),
|
||||
error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 56, 1),
|
||||
]);
|
||||
|
||||
|
|
|
@ -567,4 +567,25 @@ void f<T>(x) {
|
|||
28, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
test_unresolvedIdentifier() async {
|
||||
await assertErrorsInCode(r'''
|
||||
void f(Object? x) {
|
||||
if (x case foo) {}
|
||||
}
|
||||
''', [
|
||||
error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 33, 3),
|
||||
]);
|
||||
|
||||
final node = findNode.singleGuardedPattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
GuardedPattern
|
||||
pattern: ConstantPattern
|
||||
expression: SimpleIdentifier
|
||||
token: foo
|
||||
staticElement: <null>
|
||||
staticType: InvalidType
|
||||
matchedValueType: Object?
|
||||
''');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,8 +58,6 @@ int f(Object? x) {
|
|||
}
|
||||
''', [
|
||||
error(CompileTimeErrorCode.UNDEFINED_CLASS, 45, 10),
|
||||
error(WarningCode.DEAD_CODE, 68, 7),
|
||||
error(WarningCode.UNREACHABLE_SWITCH_CASE, 70, 2),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +80,40 @@ void f(bool x) {
|
|||
]);
|
||||
}
|
||||
|
||||
test_const_unresolvedIdentifier_const() async {
|
||||
await assertErrorsInCode(r'''
|
||||
void f(Object? x) {
|
||||
switch (x) {
|
||||
case 0:
|
||||
break;
|
||||
case unresolved:
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
};
|
||||
}
|
||||
''', [
|
||||
error(CompileTimeErrorCode.UNDEFINED_IDENTIFIER, 69, 10),
|
||||
]);
|
||||
}
|
||||
|
||||
test_const_unresolvedObject_const() async {
|
||||
await assertErrorsInCode(r'''
|
||||
void f(Object? x) {
|
||||
switch (x) {
|
||||
case 0:
|
||||
break;
|
||||
case Unresolved():
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
};
|
||||
}
|
||||
''', [
|
||||
error(CompileTimeErrorCode.UNDEFINED_CLASS, 69, 10),
|
||||
]);
|
||||
}
|
||||
|
||||
test_typeCheck_exact() async {
|
||||
await assertErrorsInCode(r'''
|
||||
void f(int x) {
|
||||
|
|
|
@ -52,6 +52,11 @@ class CfeTypeOperations implements TypeOperations<DartType> {
|
|||
|
||||
ClassHierarchy get _classHierarchy => _typeEnvironment.hierarchy;
|
||||
|
||||
@override
|
||||
bool isErrorType(DartType type) {
|
||||
return type is InvalidType;
|
||||
}
|
||||
|
||||
@override
|
||||
DartType getNonNullable(DartType type) {
|
||||
return type.toNonNull();
|
||||
|
|
|
@ -260,10 +260,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L1:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t4 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t4 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
@ -272,12 +272,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t5;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L2:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t6 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t6 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t5 = "matched";
|
||||
break #L2;
|
||||
}
|
||||
|
@ -315,10 +315,10 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L3:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t10 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t10 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L3;
|
||||
}
|
||||
|
@ -327,12 +327,12 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t11;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L4:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t12 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t12 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t11 = "matched";
|
||||
break #L4;
|
||||
}
|
||||
|
@ -370,10 +370,10 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L5:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t16 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t16 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L5;
|
||||
}
|
||||
|
@ -382,12 +382,12 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t17;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L6:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t18 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t18 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t17 = "matched";
|
||||
break #L6;
|
||||
}
|
||||
|
@ -425,10 +425,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L7:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t22 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t22 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L7;
|
||||
}
|
||||
|
@ -437,12 +437,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t23;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L8:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t24 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t24 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t23 = "matched";
|
||||
break #L8;
|
||||
}
|
||||
|
@ -480,10 +480,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L9:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t28 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t28 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L9;
|
||||
}
|
||||
|
@ -492,12 +492,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t29;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L10:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t30 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t30 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t29 = "matched";
|
||||
break #L10;
|
||||
}
|
||||
|
@ -535,10 +535,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L11:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t34 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t34 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L11;
|
||||
}
|
||||
|
@ -547,12 +547,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t35;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L12:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t36 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t36 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t35 = "matched";
|
||||
break #L12;
|
||||
}
|
||||
|
@ -590,10 +590,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
#L13:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t40 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t40 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L13;
|
||||
}
|
||||
|
@ -602,12 +602,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t41;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L14:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t42 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t42 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t41 = "matched";
|
||||
break #L14;
|
||||
}
|
||||
|
@ -645,10 +645,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
#L15:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t46 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t46 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L15;
|
||||
}
|
||||
|
@ -657,12 +657,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t47;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L16:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t48 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t48 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t47 = "matched";
|
||||
break #L16;
|
||||
}
|
||||
|
|
|
@ -262,10 +262,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L1:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t4 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t4 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
@ -274,12 +274,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t5;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L2:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t6 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t6 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t5 = "matched";
|
||||
break #L2;
|
||||
}
|
||||
|
@ -319,10 +319,10 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L3:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t10 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t10 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L3;
|
||||
}
|
||||
|
@ -331,12 +331,12 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t11;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L4:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t12 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t12 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t11 = "matched";
|
||||
break #L4;
|
||||
}
|
||||
|
@ -376,10 +376,10 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L5:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t16 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t16 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L5;
|
||||
}
|
||||
|
@ -388,12 +388,12 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t17;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L6:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t18 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t18 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t17 = "matched";
|
||||
break #L6;
|
||||
}
|
||||
|
@ -433,10 +433,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L7:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t22 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t22 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L7;
|
||||
}
|
||||
|
@ -445,12 +445,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t23;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L8:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t24 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t24 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t23 = "matched";
|
||||
break #L8;
|
||||
}
|
||||
|
@ -490,10 +490,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L9:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t28 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t28 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L9;
|
||||
}
|
||||
|
@ -502,12 +502,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t29;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L10:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t30 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t30 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t29 = "matched";
|
||||
break #L10;
|
||||
}
|
||||
|
@ -547,10 +547,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L11:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t34 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t34 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L11;
|
||||
}
|
||||
|
@ -559,12 +559,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t35;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L12:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t36 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t36 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t35 = "matched";
|
||||
break #L12;
|
||||
}
|
||||
|
@ -604,10 +604,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
#L13:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t40 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t40 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L13;
|
||||
}
|
||||
|
@ -616,12 +616,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t41;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L14:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t42 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t42 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t41 = "matched";
|
||||
break #L14;
|
||||
}
|
||||
|
@ -661,10 +661,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
#L15:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t46 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t46 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L15;
|
||||
}
|
||||
|
@ -673,12 +673,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t47;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L16:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t48 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t48 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t47 = "matched";
|
||||
break #L16;
|
||||
}
|
||||
|
|
|
@ -261,10 +261,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L1:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t4 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t4 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
@ -273,12 +273,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t5;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L2:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t6 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t6 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t5 = "matched";
|
||||
break #L2;
|
||||
}
|
||||
|
@ -317,10 +317,10 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L3:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t10 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t10 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L3;
|
||||
}
|
||||
|
@ -329,12 +329,12 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t11;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L4:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t12 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t12 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t11 = "matched";
|
||||
break #L4;
|
||||
}
|
||||
|
@ -373,10 +373,10 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L5:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t16 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t16 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L5;
|
||||
}
|
||||
|
@ -385,12 +385,12 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t17;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L6:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t18 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t18 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t17 = "matched";
|
||||
break #L6;
|
||||
}
|
||||
|
@ -429,10 +429,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L7:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t22 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t22 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L7;
|
||||
}
|
||||
|
@ -441,12 +441,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t23;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L8:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t24 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t24 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t23 = "matched";
|
||||
break #L8;
|
||||
}
|
||||
|
@ -485,10 +485,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L9:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t28 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t28 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L9;
|
||||
}
|
||||
|
@ -497,12 +497,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t29;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L10:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t30 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t30 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t29 = "matched";
|
||||
break #L10;
|
||||
}
|
||||
|
@ -541,10 +541,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L11:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t34 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t34 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L11;
|
||||
}
|
||||
|
@ -553,12 +553,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t35;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L12:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t36 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t36 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t35 = "matched";
|
||||
break #L12;
|
||||
}
|
||||
|
@ -597,10 +597,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
#L13:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t40 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t40 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L13;
|
||||
}
|
||||
|
@ -609,12 +609,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t41;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L14:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t42 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t42 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t41 = "matched";
|
||||
break #L14;
|
||||
}
|
||||
|
@ -653,10 +653,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
#L15:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t46 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t46 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L15;
|
||||
}
|
||||
|
@ -665,12 +665,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t47;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L16:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t48 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t48 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t47 = "matched";
|
||||
break #L16;
|
||||
}
|
||||
|
|
|
@ -261,10 +261,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L1:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t4 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t4 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
@ -273,12 +273,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t5;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L2:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t6 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t6 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t5 = "matched";
|
||||
break #L2;
|
||||
}
|
||||
|
@ -317,10 +317,10 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L3:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t10 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t10 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L3;
|
||||
}
|
||||
|
@ -329,12 +329,12 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t11;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L4:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t12 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t12 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t11 = "matched";
|
||||
break #L4;
|
||||
}
|
||||
|
@ -373,10 +373,10 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L5:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t16 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t16 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L5;
|
||||
}
|
||||
|
@ -385,12 +385,12 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t17;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L6:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t18 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t18 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t17 = "matched";
|
||||
break #L6;
|
||||
}
|
||||
|
@ -429,10 +429,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L7:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t22 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t22 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L7;
|
||||
}
|
||||
|
@ -441,12 +441,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t23;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L8:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t24 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t24 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t23 = "matched";
|
||||
break #L8;
|
||||
}
|
||||
|
@ -485,10 +485,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L9:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t28 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t28 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L9;
|
||||
}
|
||||
|
@ -497,12 +497,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t29;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L10:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t30 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t30 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t29 = "matched";
|
||||
break #L10;
|
||||
}
|
||||
|
@ -541,10 +541,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L11:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t34 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t34 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L11;
|
||||
}
|
||||
|
@ -553,12 +553,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t35;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L12:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t36 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t36 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t35 = "matched";
|
||||
break #L12;
|
||||
}
|
||||
|
@ -597,10 +597,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
#L13:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t40 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t40 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L13;
|
||||
}
|
||||
|
@ -609,12 +609,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t41;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L14:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t42 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t42 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t41 = "matched";
|
||||
break #L14;
|
||||
}
|
||||
|
@ -653,10 +653,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
#L15:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t46 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t46 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L15;
|
||||
}
|
||||
|
@ -665,12 +665,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t47;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L16:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t48 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final dynamic #t48 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t47 = "matched";
|
||||
break #L16;
|
||||
}
|
||||
|
|
|
@ -263,10 +263,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L1:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t4 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t4 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L1;
|
||||
}
|
||||
|
@ -275,12 +275,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t5;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L2:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t6 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t6 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t5 = "matched";
|
||||
break #L2;
|
||||
}
|
||||
|
@ -321,10 +321,10 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L3:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t10 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t10 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L3;
|
||||
}
|
||||
|
@ -333,12 +333,12 @@ static method testNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t11;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L4:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t12 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t12 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t11 = "matched";
|
||||
break #L4;
|
||||
}
|
||||
|
@ -379,10 +379,10 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L5:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t16 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t16 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L5;
|
||||
}
|
||||
|
@ -391,12 +391,12 @@ static method testExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t17;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L6:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t18 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t18 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t17 = "matched";
|
||||
break #L6;
|
||||
}
|
||||
|
@ -437,10 +437,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
#L7:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t22 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t22 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L7;
|
||||
}
|
||||
|
@ -449,12 +449,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t23;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L8:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t24 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t24 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t23 = "matched";
|
||||
break #L8;
|
||||
}
|
||||
|
@ -495,10 +495,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
#L9:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t28 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t28 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L9;
|
||||
}
|
||||
|
@ -507,12 +507,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t29;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L10:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t30 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t30 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t29 = "matched";
|
||||
break #L10;
|
||||
}
|
||||
|
@ -553,10 +553,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
#L11:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t34 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t34 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L11;
|
||||
}
|
||||
|
@ -565,12 +565,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t35;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L12:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t36 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t36 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t35 = "matched";
|
||||
break #L12;
|
||||
}
|
||||
|
@ -611,10 +611,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
#L13:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t40 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t40 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L13;
|
||||
}
|
||||
|
@ -623,12 +623,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t41;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L14:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t42 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t42 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t41 = "matched";
|
||||
break #L14;
|
||||
}
|
||||
|
@ -669,10 +669,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
#L15:
|
||||
{
|
||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
||||
final synthesized dynamic #3#0 = o;
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t46 = field = #3#0{<invalid>}.field in true)) {
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t46 = field = #3#0{invalid-type}{<invalid>}.field in true)) {
|
||||
{
|
||||
break #L15;
|
||||
}
|
||||
|
@ -681,12 +681,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
|||
}
|
||||
o = block {
|
||||
core::String #t47;
|
||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
||||
final synthesized dynamic #4#0 = o;
|
||||
#L16:
|
||||
{
|
||||
{
|
||||
hoisted invalid-type field;
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t48 = field = #4#0{<invalid>}.field in true)) {
|
||||
if(#4#0 is{ForNonNullableByDefault} invalid-type && (let final invalid-type #t48 = field = #4#0{invalid-type}{<invalid>}.field in true)) {
|
||||
#t47 = "matched";
|
||||
break #L16;
|
||||
}
|
||||
|
|
|
@ -41,33 +41,33 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #1#0 = x{invalid-type};
|
||||
final synthesized dynamic #1#0 = x;
|
||||
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #2#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #2#0 = x;
|
||||
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #3#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #3#0 = x;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #4#0 = x{invalid-type};
|
||||
final synthesized dynamic #4#0 = x;
|
||||
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #5#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #5#0 = x;
|
||||
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #6#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #6#0 = x;
|
||||
if(#6#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,33 +41,33 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #1#0 = x{invalid-type};
|
||||
final synthesized dynamic #1#0 = x;
|
||||
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #2#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #2#0 = x;
|
||||
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #3#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #3#0 = x;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #4#0 = x{invalid-type};
|
||||
final synthesized dynamic #4#0 = x;
|
||||
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #5#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #5#0 = x;
|
||||
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #6#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #6#0 = x;
|
||||
if(#6#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,33 +41,33 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #1#0 = x{invalid-type};
|
||||
final synthesized dynamic #1#0 = x;
|
||||
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #2#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #2#0 = x;
|
||||
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #3#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #3#0 = x;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #4#0 = x{invalid-type};
|
||||
final synthesized dynamic #4#0 = x;
|
||||
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #5#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #5#0 = x;
|
||||
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #6#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #6#0 = x;
|
||||
if(#6#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,33 +41,33 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #1#0 = x{invalid-type};
|
||||
final synthesized dynamic #1#0 = x;
|
||||
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #2#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #2#0 = x;
|
||||
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #3#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #3#0 = x;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #4#0 = x{invalid-type};
|
||||
final synthesized dynamic #4#0 = x;
|
||||
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #5#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #5#0 = x;
|
||||
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #6#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #6#0 = x;
|
||||
if(#6#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,33 +41,33 @@ static method test(dynamic x) → dynamic {
|
|||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #1#0 = x{invalid-type};
|
||||
final synthesized dynamic #1#0 = x;
|
||||
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #2#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #2#0 = x;
|
||||
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #3#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #3#0 = x;
|
||||
if(#3#0 is{ForNonNullableByDefault} invalid-type) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized invalid-type #4#0 = x{invalid-type};
|
||||
final synthesized dynamic #4#0 = x;
|
||||
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #5#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #5#0 = x;
|
||||
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
{
|
||||
final synthesized self::A #6#0 = x{self::A};
|
||||
if(true) {
|
||||
final synthesized dynamic #6#0 = x;
|
||||
if(#6#0 is{ForNonNullableByDefault} self::A) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,6 @@ class Class {
|
|||
// ^^^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.INVOCATION_OF_NON_FUNCTION_EXPRESSION
|
||||
// ^^^^^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION
|
||||
// [cfe] Method invocation is not a constant expression.
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue