mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 17:18:04 +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.
|
/// Returns `true` if [type] is the `Never` type.
|
||||||
bool isNeverType(Type 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.
|
/// Returns `true` if [type] is the `Object?` type.
|
||||||
bool isNullableObject(Type type);
|
bool isNullableObject(Type type);
|
||||||
|
|
||||||
|
@ -163,7 +166,9 @@ class ExhaustivenessCache<
|
||||||
|
|
||||||
/// Returns the [StaticType] for [type].
|
/// Returns the [StaticType] for [type].
|
||||||
StaticType getStaticType(Type type) {
|
StaticType getStaticType(Type type) {
|
||||||
if (typeOperations.isNeverType(type)) {
|
if (typeOperations.isErrorType(type)) {
|
||||||
|
return StaticType.errorType;
|
||||||
|
} else if (typeOperations.isNeverType(type)) {
|
||||||
return StaticType.neverType;
|
return StaticType.neverType;
|
||||||
} else if (typeOperations.isNullType(type)) {
|
} else if (typeOperations.isNullType(type)) {
|
||||||
return StaticType.nullType;
|
return StaticType.nullType;
|
||||||
|
|
|
@ -22,6 +22,9 @@ abstract class StaticType {
|
||||||
/// Built-in `Never` type.
|
/// Built-in `Never` type.
|
||||||
static const StaticType neverType = const _NeverType();
|
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.
|
/// The static types of the fields this type exposes for record destructuring.
|
||||||
///
|
///
|
||||||
/// Includes inherited fields.
|
/// 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 {
|
class _NullType extends NullableStaticType with _ObjectFieldMixin {
|
||||||
const _NullType(super.underlying);
|
const _NullType(super.underlying);
|
||||||
|
|
||||||
|
|
|
@ -4489,6 +4489,11 @@ class _FlowAnalysisImpl<Node extends Object, Statement extends Node,
|
||||||
required Type knownType,
|
required Type knownType,
|
||||||
bool matchFailsIfWrongType = true,
|
bool matchFailsIfWrongType = true,
|
||||||
bool matchMayFailEvenIfCorrectType = false}) {
|
bool matchMayFailEvenIfCorrectType = false}) {
|
||||||
|
if (operations.isError(knownType)) {
|
||||||
|
_unmatched = _join(_unmatched!, _current);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (operations.classifyType(matchedType) ==
|
if (operations.classifyType(matchedType) ==
|
||||||
TypeClassification.nonNullable) {
|
TypeClassification.nonNullable) {
|
||||||
// The matched type is non-nullable, so promote to a non-nullable type.
|
// 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(
|
emptyUnresolved(
|
||||||
Unresolved
|
Unresolved
|
||||||
unresolved) => /*cfe.type=Never*/ /*analyzer.
|
unresolved) => /*cfe.type=Never*/ /*analyzer.
|
||||||
checkingOrder={Object?,Object,Null},
|
error=non-exhaustive:InvalidType(),type=InvalidType
|
||||||
error=non-exhaustive:Object(),
|
|
||||||
subtypes={Object,Null},
|
|
||||||
type=Object?
|
|
||||||
*/
|
*/
|
||||||
switch (unresolved) {
|
switch (unresolved) {
|
||||||
|
|
||||||
|
@ -77,10 +74,8 @@ emptyUnresolved(
|
||||||
nonEmptyUnresolved(
|
nonEmptyUnresolved(
|
||||||
Unresolved
|
Unresolved
|
||||||
unresolved) => /*cfe.type=Never*/ /*analyzer.
|
unresolved) => /*cfe.type=Never*/ /*analyzer.
|
||||||
checkingOrder={Object?,Object,Null},
|
error=non-exhaustive:InvalidType(),type=InvalidType
|
||||||
subtypes={Object,Null},
|
|
||||||
type=Object?
|
|
||||||
*/
|
*/
|
||||||
switch (unresolved) {
|
switch (unresolved) {
|
||||||
_ /*cfe.space=∅*/ /*analyzer.space=()*/ => 0,
|
_ /*cfe.space=∅*/ /*analyzer.space=InvalidType*/ => 0,
|
||||||
};
|
};
|
||||||
|
|
|
@ -39,25 +39,19 @@ exhaustiveTyped(
|
||||||
A<num>
|
A<num>
|
||||||
a) => /*cfe.
|
a) => /*cfe.
|
||||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||||
type=Never
|
type=A<num>
|
||||||
*/ /*analyzer.
|
*/ /*analyzer.
|
||||||
checkingOrder={Object?,Object,Null},
|
|
||||||
error=non-exhaustive:Object(),
|
|
||||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||||
subtypes={Object,Null},
|
type=A<num>
|
||||||
type=Object?
|
|
||||||
*/
|
*/
|
||||||
switch (o) {
|
switch (a) {
|
||||||
A<int>(
|
A<int>(
|
||||||
:void Function(int) member
|
: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,
|
0,
|
||||||
A<num>(
|
A<num>(
|
||||||
:void Function(num) member
|
:void Function(num) member
|
||||||
) /*cfe.
|
) /*space=A<num>(A<num>.member: void Function(num) (void Function(num)))*/ =>
|
||||||
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)))*/ =>
|
|
||||||
1,
|
1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -65,24 +59,21 @@ unreachable(
|
||||||
A<num>
|
A<num>
|
||||||
a) => /*cfe.
|
a) => /*cfe.
|
||||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||||
type=Never
|
type=A<num>
|
||||||
*/ /*analyzer.
|
*/ /*analyzer.
|
||||||
checkingOrder={Object?,Object,Null},
|
|
||||||
error=non-exhaustive:Object(),
|
|
||||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||||
subtypes={Object,Null},
|
type=A<num>
|
||||||
type=Object?
|
|
||||||
*/
|
*/
|
||||||
switch (o) {
|
switch (a) {
|
||||||
A<num>(
|
A<num>(
|
||||||
:var member
|
: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,
|
1,
|
||||||
A<int>(
|
A<int>(
|
||||||
:var member
|
:var member
|
||||||
) /*cfe.
|
) /*cfe.
|
||||||
error=unreachable,
|
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.
|
*/ /*analyzer.
|
||||||
error=unreachable,
|
error=unreachable,
|
||||||
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
||||||
|
@ -95,24 +86,21 @@ nonExhaustiveRestricted(
|
||||||
A<num>
|
A<num>
|
||||||
a) => /*cfe.
|
a) => /*cfe.
|
||||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||||
type=Never
|
type=A<num>
|
||||||
*/ /*analyzer.
|
*/ /*analyzer.
|
||||||
checkingOrder={Object?,Object,Null},
|
|
||||||
error=non-exhaustive:Object(),
|
|
||||||
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
fields={A<int>.member:void Function(int),A<num>.member:void Function(num)},
|
||||||
subtypes={Object,Null},
|
type=A<num>
|
||||||
type=Object?
|
|
||||||
*/
|
*/
|
||||||
switch (o) {
|
switch (a) {
|
||||||
A<num>(
|
A<num>(
|
||||||
:void Function(num) member
|
: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,
|
1,
|
||||||
A<int>(
|
A<int>(
|
||||||
:var member
|
:var member
|
||||||
) /*cfe.
|
) /*cfe.
|
||||||
error=unreachable,
|
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.
|
*/ /*analyzer.
|
||||||
error=unreachable,
|
error=unreachable,
|
||||||
space=A<int>(A<int>.member: void Function(int) (void Function(int)))
|
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.
|
// 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/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/shared.dart';
|
||||||
|
import 'package:_fe_analyzer_shared/src/exhaustiveness/static_type.dart';
|
||||||
import 'package:_fe_analyzer_shared/src/exhaustiveness/types.dart';
|
import 'package:_fe_analyzer_shared/src/exhaustiveness/types.dart';
|
||||||
|
|
||||||
class TestEnvironment implements ObjectPropertyLookup {
|
class TestEnvironment implements ObjectPropertyLookup {
|
||||||
|
@ -136,11 +136,16 @@ class TestEnvironment implements ObjectPropertyLookup {
|
||||||
class _Type {
|
class _Type {
|
||||||
static const _InterfaceType Object = _InterfaceType(_Class.Object);
|
static const _InterfaceType Object = _InterfaceType(_Class.Object);
|
||||||
static const _Type NullableObject = _NullableType(_Type.Object);
|
static const _Type NullableObject = _NullableType(_Type.Object);
|
||||||
|
static const _Type Error = _ErrorType();
|
||||||
static const _InterfaceType Never = _InterfaceType(_Class.Never);
|
static const _InterfaceType Never = _InterfaceType(_Class.Never);
|
||||||
static const _InterfaceType Bool = _InterfaceType(_Class.Bool);
|
static const _InterfaceType Bool = _InterfaceType(_Class.Bool);
|
||||||
static const _Type Null = _NullableType(_Type.Never);
|
static const _Type Null = _NullableType(_Type.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _ErrorType implements _Type {
|
||||||
|
const _ErrorType();
|
||||||
|
}
|
||||||
|
|
||||||
class _Class {
|
class _Class {
|
||||||
final String name;
|
final String name;
|
||||||
final bool isSealed;
|
final bool isSealed;
|
||||||
|
@ -302,6 +307,11 @@ class _TypeOperations implements TypeOperations<_Type> {
|
||||||
return type == _Type.Bool;
|
return type == _Type.Bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isErrorType(_Type type) {
|
||||||
|
return type == _Type.Error;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool isNeverType(_Type type) {
|
bool isNeverType(_Type type) {
|
||||||
return type == _Type.Never;
|
return type == _Type.Never;
|
||||||
|
|
|
@ -8660,6 +8660,21 @@ main() {
|
||||||
checkReachable(false),
|
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:', () {
|
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:', () {
|
group('Joins promotions of scrutinee:', () {
|
||||||
test('First case more promoted', () {
|
test('First case more promoted', () {
|
||||||
var x = Var('x');
|
var x = Var('x');
|
||||||
|
|
|
@ -902,6 +902,7 @@ class MiniAstOperations
|
||||||
'bool <: bool': Type('bool'),
|
'bool <: bool': Type('bool'),
|
||||||
'dynamic <: int': Type('dynamic'),
|
'dynamic <: int': Type('dynamic'),
|
||||||
'error <: int': Type('error'),
|
'error <: int': Type('error'),
|
||||||
|
'error <: num': Type('error'),
|
||||||
'int <: dynamic': Type('int'),
|
'int <: dynamic': Type('int'),
|
||||||
'int <: num': Type('int'),
|
'int <: num': Type('int'),
|
||||||
'int <: Object?': Type('int'),
|
'int <: Object?': Type('int'),
|
||||||
|
|
|
@ -131,6 +131,10 @@ class ConstantVerifier extends RecursiveAstVisitor<void> {
|
||||||
super.visitConstantPattern(node);
|
super.visitConstantPattern(node);
|
||||||
|
|
||||||
var expression = node.expression.unParenthesized;
|
var expression = node.expression.unParenthesized;
|
||||||
|
if (expression.typeOrThrow is InvalidType) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DartObjectImpl? value = _validate(
|
DartObjectImpl? value = _validate(
|
||||||
expression,
|
expression,
|
||||||
CompileTimeErrorCode.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION,
|
CompileTimeErrorCode.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION,
|
||||||
|
|
|
@ -323,7 +323,12 @@ class AnalyzerTypeOperations implements TypeOperations<DartType> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool isDynamic(DartType type) {
|
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
|
@override
|
||||||
|
|
|
@ -958,8 +958,6 @@ void f(Object? x) {
|
||||||
}
|
}
|
||||||
''', [
|
''', [
|
||||||
error(CompileTimeErrorCode.MISSING_VARIABLE_PATTERN, 56, 1),
|
error(CompileTimeErrorCode.MISSING_VARIABLE_PATTERN, 56, 1),
|
||||||
error(CompileTimeErrorCode.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION,
|
|
||||||
56, 1),
|
|
||||||
error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 56, 1),
|
error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 56, 1),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -567,4 +567,25 @@ void f<T>(x) {
|
||||||
28, 1),
|
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(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 {
|
test_typeCheck_exact() async {
|
||||||
await assertErrorsInCode(r'''
|
await assertErrorsInCode(r'''
|
||||||
void f(int x) {
|
void f(int x) {
|
||||||
|
|
|
@ -52,6 +52,11 @@ class CfeTypeOperations implements TypeOperations<DartType> {
|
||||||
|
|
||||||
ClassHierarchy get _classHierarchy => _typeEnvironment.hierarchy;
|
ClassHierarchy get _classHierarchy => _typeEnvironment.hierarchy;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isErrorType(DartType type) {
|
||||||
|
return type is InvalidType;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
DartType getNonNullable(DartType type) {
|
DartType getNonNullable(DartType type) {
|
||||||
return type.toNonNull();
|
return type.toNonNull();
|
||||||
|
|
|
@ -260,10 +260,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L1:
|
#L1:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L1;
|
||||||
}
|
}
|
||||||
|
@ -272,12 +272,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t5;
|
core::String #t5;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L2:
|
#L2:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t5 = "matched";
|
||||||
break #L2;
|
break #L2;
|
||||||
}
|
}
|
||||||
|
@ -315,10 +315,10 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L3:
|
#L3:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L3;
|
||||||
}
|
}
|
||||||
|
@ -327,12 +327,12 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t11;
|
core::String #t11;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L4:
|
#L4:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t11 = "matched";
|
||||||
break #L4;
|
break #L4;
|
||||||
}
|
}
|
||||||
|
@ -370,10 +370,10 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L5:
|
#L5:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L5;
|
||||||
}
|
}
|
||||||
|
@ -382,12 +382,12 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t17;
|
core::String #t17;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L6:
|
#L6:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t17 = "matched";
|
||||||
break #L6;
|
break #L6;
|
||||||
}
|
}
|
||||||
|
@ -425,10 +425,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L7:
|
#L7:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L7;
|
||||||
}
|
}
|
||||||
|
@ -437,12 +437,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t23;
|
core::String #t23;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L8:
|
#L8:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t23 = "matched";
|
||||||
break #L8;
|
break #L8;
|
||||||
}
|
}
|
||||||
|
@ -480,10 +480,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L9:
|
#L9:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L9;
|
||||||
}
|
}
|
||||||
|
@ -492,12 +492,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t29;
|
core::String #t29;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L10:
|
#L10:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t29 = "matched";
|
||||||
break #L10;
|
break #L10;
|
||||||
}
|
}
|
||||||
|
@ -535,10 +535,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L11:
|
#L11:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L11;
|
||||||
}
|
}
|
||||||
|
@ -547,12 +547,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t35;
|
core::String #t35;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L12:
|
#L12:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t35 = "matched";
|
||||||
break #L12;
|
break #L12;
|
||||||
}
|
}
|
||||||
|
@ -590,10 +590,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L13:
|
#L13:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L13;
|
||||||
}
|
}
|
||||||
|
@ -602,12 +602,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t41;
|
core::String #t41;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L14:
|
#L14:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t41 = "matched";
|
||||||
break #L14;
|
break #L14;
|
||||||
}
|
}
|
||||||
|
@ -645,10 +645,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L15:
|
#L15:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L15;
|
||||||
}
|
}
|
||||||
|
@ -657,12 +657,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t47;
|
core::String #t47;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L16:
|
#L16:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t47 = "matched";
|
||||||
break #L16;
|
break #L16;
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,10 +262,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L1:
|
#L1:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L1;
|
||||||
}
|
}
|
||||||
|
@ -274,12 +274,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t5;
|
core::String #t5;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L2:
|
#L2:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t5 = "matched";
|
||||||
break #L2;
|
break #L2;
|
||||||
}
|
}
|
||||||
|
@ -319,10 +319,10 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L3:
|
#L3:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L3;
|
||||||
}
|
}
|
||||||
|
@ -331,12 +331,12 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t11;
|
core::String #t11;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L4:
|
#L4:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t11 = "matched";
|
||||||
break #L4;
|
break #L4;
|
||||||
}
|
}
|
||||||
|
@ -376,10 +376,10 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L5:
|
#L5:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L5;
|
||||||
}
|
}
|
||||||
|
@ -388,12 +388,12 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t17;
|
core::String #t17;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L6:
|
#L6:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t17 = "matched";
|
||||||
break #L6;
|
break #L6;
|
||||||
}
|
}
|
||||||
|
@ -433,10 +433,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L7:
|
#L7:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L7;
|
||||||
}
|
}
|
||||||
|
@ -445,12 +445,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t23;
|
core::String #t23;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L8:
|
#L8:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t23 = "matched";
|
||||||
break #L8;
|
break #L8;
|
||||||
}
|
}
|
||||||
|
@ -490,10 +490,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L9:
|
#L9:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L9;
|
||||||
}
|
}
|
||||||
|
@ -502,12 +502,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t29;
|
core::String #t29;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L10:
|
#L10:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t29 = "matched";
|
||||||
break #L10;
|
break #L10;
|
||||||
}
|
}
|
||||||
|
@ -547,10 +547,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L11:
|
#L11:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L11;
|
||||||
}
|
}
|
||||||
|
@ -559,12 +559,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t35;
|
core::String #t35;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L12:
|
#L12:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t35 = "matched";
|
||||||
break #L12;
|
break #L12;
|
||||||
}
|
}
|
||||||
|
@ -604,10 +604,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L13:
|
#L13:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L13;
|
||||||
}
|
}
|
||||||
|
@ -616,12 +616,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t41;
|
core::String #t41;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L14:
|
#L14:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t41 = "matched";
|
||||||
break #L14;
|
break #L14;
|
||||||
}
|
}
|
||||||
|
@ -661,10 +661,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L15:
|
#L15:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L15;
|
||||||
}
|
}
|
||||||
|
@ -673,12 +673,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t47;
|
core::String #t47;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L16:
|
#L16:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t47 = "matched";
|
||||||
break #L16;
|
break #L16;
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,10 +261,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L1:
|
#L1:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L1;
|
||||||
}
|
}
|
||||||
|
@ -273,12 +273,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t5;
|
core::String #t5;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L2:
|
#L2:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t5 = "matched";
|
||||||
break #L2;
|
break #L2;
|
||||||
}
|
}
|
||||||
|
@ -317,10 +317,10 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L3:
|
#L3:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L3;
|
||||||
}
|
}
|
||||||
|
@ -329,12 +329,12 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t11;
|
core::String #t11;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L4:
|
#L4:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t11 = "matched";
|
||||||
break #L4;
|
break #L4;
|
||||||
}
|
}
|
||||||
|
@ -373,10 +373,10 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L5:
|
#L5:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L5;
|
||||||
}
|
}
|
||||||
|
@ -385,12 +385,12 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t17;
|
core::String #t17;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L6:
|
#L6:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t17 = "matched";
|
||||||
break #L6;
|
break #L6;
|
||||||
}
|
}
|
||||||
|
@ -429,10 +429,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L7:
|
#L7:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L7;
|
||||||
}
|
}
|
||||||
|
@ -441,12 +441,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t23;
|
core::String #t23;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L8:
|
#L8:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t23 = "matched";
|
||||||
break #L8;
|
break #L8;
|
||||||
}
|
}
|
||||||
|
@ -485,10 +485,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L9:
|
#L9:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L9;
|
||||||
}
|
}
|
||||||
|
@ -497,12 +497,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t29;
|
core::String #t29;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L10:
|
#L10:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t29 = "matched";
|
||||||
break #L10;
|
break #L10;
|
||||||
}
|
}
|
||||||
|
@ -541,10 +541,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L11:
|
#L11:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L11;
|
||||||
}
|
}
|
||||||
|
@ -553,12 +553,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t35;
|
core::String #t35;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L12:
|
#L12:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t35 = "matched";
|
||||||
break #L12;
|
break #L12;
|
||||||
}
|
}
|
||||||
|
@ -597,10 +597,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L13:
|
#L13:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L13;
|
||||||
}
|
}
|
||||||
|
@ -609,12 +609,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t41;
|
core::String #t41;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L14:
|
#L14:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t41 = "matched";
|
||||||
break #L14;
|
break #L14;
|
||||||
}
|
}
|
||||||
|
@ -653,10 +653,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L15:
|
#L15:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L15;
|
||||||
}
|
}
|
||||||
|
@ -665,12 +665,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t47;
|
core::String #t47;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L16:
|
#L16:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t47 = "matched";
|
||||||
break #L16;
|
break #L16;
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,10 +261,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L1:
|
#L1:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L1;
|
||||||
}
|
}
|
||||||
|
@ -273,12 +273,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t5;
|
core::String #t5;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L2:
|
#L2:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t5 = "matched";
|
||||||
break #L2;
|
break #L2;
|
||||||
}
|
}
|
||||||
|
@ -317,10 +317,10 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L3:
|
#L3:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L3;
|
||||||
}
|
}
|
||||||
|
@ -329,12 +329,12 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t11;
|
core::String #t11;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L4:
|
#L4:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t11 = "matched";
|
||||||
break #L4;
|
break #L4;
|
||||||
}
|
}
|
||||||
|
@ -373,10 +373,10 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L5:
|
#L5:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L5;
|
||||||
}
|
}
|
||||||
|
@ -385,12 +385,12 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t17;
|
core::String #t17;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L6:
|
#L6:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t17 = "matched";
|
||||||
break #L6;
|
break #L6;
|
||||||
}
|
}
|
||||||
|
@ -429,10 +429,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L7:
|
#L7:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L7;
|
||||||
}
|
}
|
||||||
|
@ -441,12 +441,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t23;
|
core::String #t23;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L8:
|
#L8:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t23 = "matched";
|
||||||
break #L8;
|
break #L8;
|
||||||
}
|
}
|
||||||
|
@ -485,10 +485,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L9:
|
#L9:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L9;
|
||||||
}
|
}
|
||||||
|
@ -497,12 +497,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t29;
|
core::String #t29;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L10:
|
#L10:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t29 = "matched";
|
||||||
break #L10;
|
break #L10;
|
||||||
}
|
}
|
||||||
|
@ -541,10 +541,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L11:
|
#L11:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L11;
|
||||||
}
|
}
|
||||||
|
@ -553,12 +553,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t35;
|
core::String #t35;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L12:
|
#L12:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t35 = "matched";
|
||||||
break #L12;
|
break #L12;
|
||||||
}
|
}
|
||||||
|
@ -597,10 +597,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L13:
|
#L13:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L13;
|
||||||
}
|
}
|
||||||
|
@ -609,12 +609,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t41;
|
core::String #t41;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L14:
|
#L14:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t41 = "matched";
|
||||||
break #L14;
|
break #L14;
|
||||||
}
|
}
|
||||||
|
@ -653,10 +653,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L15:
|
#L15:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L15;
|
||||||
}
|
}
|
||||||
|
@ -665,12 +665,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t47;
|
core::String #t47;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L16:
|
#L16:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t47 = "matched";
|
||||||
break #L16;
|
break #L16;
|
||||||
}
|
}
|
||||||
|
|
|
@ -263,10 +263,10 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L1:
|
#L1:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L1;
|
||||||
}
|
}
|
||||||
|
@ -275,12 +275,12 @@ static method testUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t5;
|
core::String #t5;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L2:
|
#L2:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t5 = "matched";
|
||||||
break #L2;
|
break #L2;
|
||||||
}
|
}
|
||||||
|
@ -321,10 +321,10 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L3:
|
#L3:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L3;
|
||||||
}
|
}
|
||||||
|
@ -333,12 +333,12 @@ static method testNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t11;
|
core::String #t11;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L4:
|
#L4:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t11 = "matched";
|
||||||
break #L4;
|
break #L4;
|
||||||
}
|
}
|
||||||
|
@ -379,10 +379,10 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L5:
|
#L5:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L5;
|
||||||
}
|
}
|
||||||
|
@ -391,12 +391,12 @@ static method testExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t17;
|
core::String #t17;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L6:
|
#L6:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t17 = "matched";
|
||||||
break #L6;
|
break #L6;
|
||||||
}
|
}
|
||||||
|
@ -437,10 +437,10 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L7:
|
#L7:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L7;
|
||||||
}
|
}
|
||||||
|
@ -449,12 +449,12 @@ static method testPrefixedUnresolved(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t23;
|
core::String #t23;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L8:
|
#L8:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t23 = "matched";
|
||||||
break #L8;
|
break #L8;
|
||||||
}
|
}
|
||||||
|
@ -495,10 +495,10 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L9:
|
#L9:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L9;
|
||||||
}
|
}
|
||||||
|
@ -507,12 +507,12 @@ static method testPrefixedNonType(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t29;
|
core::String #t29;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L10:
|
#L10:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t29 = "matched";
|
||||||
break #L10;
|
break #L10;
|
||||||
}
|
}
|
||||||
|
@ -553,10 +553,10 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L11:
|
#L11:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L11;
|
||||||
}
|
}
|
||||||
|
@ -565,12 +565,12 @@ static method testPrefixedExtension(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t35;
|
core::String #t35;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L12:
|
#L12:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t35 = "matched";
|
||||||
break #L12;
|
break #L12;
|
||||||
}
|
}
|
||||||
|
@ -611,10 +611,10 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L13:
|
#L13:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L13;
|
||||||
}
|
}
|
||||||
|
@ -623,12 +623,12 @@ static method testUnresolvedPrefix(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t41;
|
core::String #t41;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L14:
|
#L14:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t41 = "matched";
|
||||||
break #L14;
|
break #L14;
|
||||||
}
|
}
|
||||||
|
@ -669,10 +669,10 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
#L15:
|
#L15:
|
||||||
{
|
{
|
||||||
final synthesized invalid-type #3#0 = o{invalid-type};
|
final synthesized dynamic #3#0 = o;
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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;
|
break #L15;
|
||||||
}
|
}
|
||||||
|
@ -681,12 +681,12 @@ static method testMemberAccess(dynamic o) → dynamic {
|
||||||
}
|
}
|
||||||
o = block {
|
o = block {
|
||||||
core::String #t47;
|
core::String #t47;
|
||||||
final synthesized invalid-type #4#0 = o{invalid-type};
|
final synthesized dynamic #4#0 = o;
|
||||||
#L16:
|
#L16:
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
hoisted invalid-type field;
|
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";
|
#t47 = "matched";
|
||||||
break #L16;
|
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) {
|
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #2#0 = x{self::A};
|
final synthesized dynamic #2#0 = x;
|
||||||
if(true) {
|
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #3#0 = x{self::A};
|
final synthesized dynamic #3#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #5#0 = x{self::A};
|
final synthesized dynamic #5#0 = x;
|
||||||
if(true) {
|
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #6#0 = x{self::A};
|
final synthesized dynamic #6#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #2#0 = x{self::A};
|
final synthesized dynamic #2#0 = x;
|
||||||
if(true) {
|
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #3#0 = x{self::A};
|
final synthesized dynamic #3#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #5#0 = x{self::A};
|
final synthesized dynamic #5#0 = x;
|
||||||
if(true) {
|
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #6#0 = x{self::A};
|
final synthesized dynamic #6#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #2#0 = x{self::A};
|
final synthesized dynamic #2#0 = x;
|
||||||
if(true) {
|
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #3#0 = x{self::A};
|
final synthesized dynamic #3#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #5#0 = x{self::A};
|
final synthesized dynamic #5#0 = x;
|
||||||
if(true) {
|
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #6#0 = x{self::A};
|
final synthesized dynamic #6#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #2#0 = x{self::A};
|
final synthesized dynamic #2#0 = x;
|
||||||
if(true) {
|
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #3#0 = x{self::A};
|
final synthesized dynamic #3#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #5#0 = x{self::A};
|
final synthesized dynamic #5#0 = x;
|
||||||
if(true) {
|
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #6#0 = x{self::A};
|
final synthesized dynamic #6#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#1#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #2#0 = x{self::A};
|
final synthesized dynamic #2#0 = x;
|
||||||
if(true) {
|
if(#2#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #3#0 = x{self::A};
|
final synthesized dynamic #3#0 = x;
|
||||||
if(true) {
|
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) {
|
if(#4#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #5#0 = x{self::A};
|
final synthesized dynamic #5#0 = x;
|
||||||
if(true) {
|
if(#5#0 is{ForNonNullableByDefault} self::A) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final synthesized self::A #6#0 = x{self::A};
|
final synthesized dynamic #6#0 = x;
|
||||||
if(true) {
|
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.INVOCATION_OF_NON_FUNCTION_EXPRESSION
|
||||||
// ^^^^^^^
|
// ^^^^^^^
|
||||||
// [analyzer] COMPILE_TIME_ERROR.CONSTANT_PATTERN_WITH_NON_CONSTANT_EXPRESSION
|
|
||||||
// [cfe] Method invocation is not a constant expression.
|
// [cfe] Method invocation is not a constant expression.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue