[cfe] Implement desugaring of ObjectPattern for simple cases
This CL doesn't cover, among other, the following
* Non-class identifiers
* Some erroneous cases
Part of https://github.com/dart-lang/sdk/issues/49749
Change-Id: I9c6aa9194c09cc2b10b438892b26a01c260e1baf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275923
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 450d672..a6f9f97 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -12085,6 +12085,17 @@
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeUnspecifiedGetterNameInObjectPattern =
+ messageUnspecifiedGetterNameInObjectPattern;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageUnspecifiedGetterNameInObjectPattern = const MessageCode(
+ "UnspecifiedGetterNameInObjectPattern",
+ analyzerCodes: <String>["MISSING_OBJECT_PATTERN_GETTER_NAME"],
+ problemMessage:
+ r"""The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeUnsupportedDartExt = messageUnsupportedDartExt;
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index bcbc621..8b6d000 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -8328,11 +8328,16 @@
count)));
reportIfNotEnabled(
libraryFeatures.patterns, beginToken.charOffset, beginToken.charCount);
+ List<NamedPattern>? fields;
for (int i = 0; i < count; i++) {
- pop();
+ Object? field = pop();
+ if (field is NamedPattern) {
+ (fields ??= <NamedPattern>[]).add(field);
+ } else {
+ // TODO(cstefantsova): Report an error.
+ }
}
- // TODO(johnniwinther): Push (named) patterns.
- push(count != 0 ? <Pattern>[] : NullValue.PatternList);
+ push(fields ?? NullValue.PatternList);
}
@override
@@ -8347,13 +8352,40 @@
reportIfNotEnabled(libraryFeatures.patterns, firstIdentifier.charOffset,
firstIdentifier.charCount);
- // ignore: unused_local_variable
- List<Pattern>? fields = pop() as List<Pattern>?;
- // ignore: unused_local_variable
+ List<NamedPattern>? fields = pop() as List<NamedPattern>?;
List<TypeBuilder>? typeArguments = pop() as List<TypeBuilder>?;
- // TODO(johnniwinther): Create object pattern.
- push(new DummyPattern(firstIdentifier.charOffset));
+ // TODO(cstefantsova): Handle the case of secondIdentifier != null
+ handleIdentifier(firstIdentifier, IdentifierContext.typeReference);
+ Object? resolvedIdentifier = pop();
+ if (resolvedIdentifier is TypeUseGenerator) {
+ TypeDeclarationBuilder typeDeclaration = resolvedIdentifier.declaration;
+ if (typeDeclaration is ClassBuilder) {
+ List<DartType>? builtTypeArguments;
+ if (typeArguments != null) {
+ if (typeArguments.length ==
+ typeDeclaration.cls.typeParameters.length) {
+ for (TypeBuilder typeBuilder in typeArguments) {
+ (builtTypeArguments ??= <DartType>[])
+ .add(typeBuilder.build(libraryBuilder, TypeUse.typeArgument));
+ }
+ } else {
+ // TODO(cstefantsova): Report an error.
+ }
+ }
+ push(new ObjectPattern(
+ typeDeclaration.cls.reference,
+ fields ?? <NamedPattern>[],
+ builtTypeArguments,
+ firstIdentifier.offset));
+ } else {
+ // TODO(cstefantsova): Handle this case.
+ push(new DummyPattern(firstIdentifier.charOffset));
+ }
+ } else {
+ // TODO(cstefantsova): Handle the error.
+ push(new DummyPattern(firstIdentifier.charOffset));
+ }
}
@override
diff --git a/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart b/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
index 6c00e6c..b1e4454 100644
--- a/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
@@ -19,6 +19,7 @@
/// with the same kind of root node.
import 'package:kernel/ast.dart';
import 'package:kernel/clone.dart';
+import 'package:kernel/src/bounds_checks.dart';
import 'package:kernel/src/printer.dart';
import 'package:kernel/text/ast_to_text.dart' show Precedence, Printer;
import 'package:kernel/type_environment.dart';
@@ -3947,8 +3948,14 @@
};
List<VariableDeclaration> declaredVariables = this.declaredVariables;
for (VariableDeclaration variable in declaredVariables) {
- VariableDeclaration leftVariable = leftVariablesByName[variable.name!]!;
- VariableDeclaration rightVariable = rightVariablesByName[variable.name!]!;
+ VariableDeclaration? leftVariable = leftVariablesByName[variable.name!];
+ VariableDeclaration? rightVariable = rightVariablesByName[variable.name!];
+
+ if (leftVariable == null || rightVariable == null) {
+ // TODO(cstefantsova): Make sure an error is reported.
+ continue;
+ }
+
variable.initializer = inferenceVisitor.engine.forest
.createConditionalExpression(
fileOffset,
@@ -4535,6 +4542,209 @@
}
}
+class ObjectPattern extends Pattern {
+ final Reference classReference;
+ final List<NamedPattern> fields;
+ final List<DartType>? typeArguments;
+ Class get classNode => classReference.asClass;
+
+ ObjectPattern(
+ this.classReference, this.fields, this.typeArguments, int fileOffset)
+ : super(fileOffset) {
+ setParents(fields, this);
+ }
+
+ @override
+ PatternInferenceResult acceptInference(InferenceVisitorImpl visitor,
+ {required SharedMatchContext context}) {
+ return visitor.visitObjectPattern(this, context: context);
+ }
+
+ @override
+ List<VariableDeclaration> get declaredVariables {
+ return [for (NamedPattern field in fields) ...field.declaredVariables];
+ }
+
+ @override
+ void toTextInternal(AstPrinter printer) {
+ printer.write('${classNode.name}');
+ if (typeArguments != null) {
+ printer.write('<');
+ printer.writeTypes(typeArguments!);
+ printer.write('>');
+ }
+ printer.write('(');
+ String comma = '';
+ for (Pattern field in fields) {
+ printer.write(comma);
+ field.toTextInternal(printer);
+ comma = ', ';
+ }
+ printer.write(')');
+ }
+
+ @override
+ String toString() {
+ return "ObjectPattern(${toStringInternal()})";
+ }
+
+ @override
+ PatternTransformationResult transform(
+ Expression matchedExpression,
+ DartType matchedType,
+ Expression variableInitializingContext,
+ InferenceVisitorBase inferenceVisitor) {
+ // targetObjectType: `classNode`<`typeArguments`>
+ DartType targetObjectType;
+ if (typeArguments != null &&
+ typeArguments!.length == classNode.typeParameters.length) {
+ targetObjectType =
+ new InterfaceType(classNode, Nullability.nonNullable, typeArguments);
+ } else {
+ if (typeArguments != null) {
+ // TODO(cstefantsova): Report an error.
+ }
+ targetObjectType = new InterfaceType(
+ classNode,
+ Nullability.nonNullable,
+ calculateBounds(
+ classNode.typeParameters,
+ inferenceVisitor.coreTypes.objectClass,
+ inferenceVisitor.libraryBuilder.library));
+ }
+
+ bool typeCheckForTargetNeeded =
+ !inferenceVisitor.isAssignable(targetObjectType, matchedType) ||
+ matchedType is DynamicType;
+
+ // objectVariable: `matchedType` OVAR = `matchedExpression`
+ VariableDeclaration objectVariable = inferenceVisitor.engine.forest
+ .createVariableDeclarationForValue(matchedExpression,
+ type: matchedType);
+
+ // typeCheck: `objectVariable` is `targetObjectType`
+ // ==> OVAR is `classNode`<`typeArguments`>
+ Expression? typeCheck;
+ if (typeCheckForTargetNeeded) {
+ typeCheck = inferenceVisitor.engine.forest.createIsExpression(
+ fileOffset,
+ inferenceVisitor.engine.forest
+ .createVariableGet(fileOffset, objectVariable),
+ targetObjectType,
+ forNonNullableByDefault: false);
+ }
+
+ List<VariableDeclaration> elementAccessVariables = [];
+ PatternTransformationResult transformationResult =
+ new PatternTransformationResult([]);
+ for (NamedPattern field in fields) {
+ String? fieldNameString;
+ if (field.name.isNotEmpty) {
+ fieldNameString = field.name;
+ } else {
+ // The name is defined by the nested variable pattern.
+ Pattern nestedPattern = field.pattern;
+ if (nestedPattern is VariablePattern) {
+ fieldNameString = nestedPattern.name;
+ }
+ }
+
+ Expression objectElement;
+ DartType fieldType;
+ if (fieldNameString != null) {
+ Name fieldName = new Name(fieldNameString);
+
+ ObjectAccessTarget fieldAccessTarget = inferenceVisitor
+ .findInterfaceMember(targetObjectType, fieldName, fileOffset,
+ callSiteAccessKind: CallSiteAccessKind.getterInvocation);
+
+ if (fieldAccessTarget.member != null) {
+ fieldType = fieldAccessTarget.getGetterType(inferenceVisitor);
+
+ // objectElement: `objectVariable`.`fieldName`
+ // ==> OVAR.`fieldName`
+ objectElement = new InstanceGet(
+ InstanceAccessKind.Instance,
+ inferenceVisitor.engine.forest
+ .createVariableGet(fileOffset, objectVariable)
+ ..promotedType = targetObjectType,
+ fieldName,
+ resultType: fieldType,
+ interfaceTarget: fieldAccessTarget.member!)
+ ..fileOffset = fileOffset;
+ } else {
+ objectElement = inferenceVisitor.helper.buildProblem(
+ templateUndefinedGetter.withArguments(fieldNameString,
+ targetObjectType, inferenceVisitor.isNonNullableByDefault),
+ fileOffset,
+ noLength);
+ fieldType = const InvalidType();
+ }
+ } else {
+ objectElement = inferenceVisitor.helper.buildProblem(
+ messageUnspecifiedGetterNameInObjectPattern, fileOffset, noLength);
+ fieldType = const InvalidType();
+ }
+
+ // objectElementVariable: `fieldType` EVAR = `objectElement`
+ // ==> `fieldType` EVAR = OVAR.`fieldName`
+ VariableDeclaration objectElementVariable = inferenceVisitor.engine.forest
+ .createVariableDeclarationForValue(objectElement, type: fieldType);
+
+ PatternTransformationResult subpatternTransformationResult = field.pattern
+ .transform(
+ inferenceVisitor.engine.forest
+ .createVariableGet(fileOffset, objectElementVariable),
+ fieldType,
+ inferenceVisitor.engine.forest
+ .createVariableGet(fileOffset, objectElementVariable),
+ inferenceVisitor);
+
+ // If the sub-pattern transformation doesn't declare captured variables
+ // and consists of a single empty element, it means that it simply
+ // doesn't have a place where it could refer to the element expression.
+ // In that case we can avoid creating the intermediary variable for the
+ // element expression.
+ //
+ // An example of such sub-pattern is in the following:
+ //
+ // if (x case A(foo: var _) { /* ... */ }
+ if (field.declaredVariables.isNotEmpty ||
+ !(subpatternTransformationResult.elements.length == 1 &&
+ subpatternTransformationResult.elements.single.isEmpty)) {
+ elementAccessVariables.add(objectElementVariable);
+ transformationResult = transformationResult.combine(
+ subpatternTransformationResult, inferenceVisitor);
+ }
+ }
+
+ transformationResult = transformationResult.prependElement(
+ new PatternTransformationElement(
+ kind: PatternTransformationElementKind.regular,
+ condition: null,
+ variableInitializers: elementAccessVariables),
+ inferenceVisitor);
+
+ if (typeCheck != null) {
+ transformationResult = transformationResult.prependElement(
+ new PatternTransformationElement(
+ kind: PatternTransformationElementKind.regular,
+ condition: typeCheck,
+ variableInitializers: []),
+ inferenceVisitor);
+ }
+
+ transformationResult = transformationResult.prependElement(
+ new PatternTransformationElement(
+ kind: PatternTransformationElementKind.regular,
+ condition: null,
+ variableInitializers: [objectVariable]),
+ inferenceVisitor);
+
+ return transformationResult;
+ }
+}
+
enum RelationalPatternKind {
equals,
notEquals,
diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart
index 80777df..1b12608 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart
@@ -9120,6 +9120,17 @@
return const PatternInferenceResult();
}
+ PatternInferenceResult visitObjectPattern(ObjectPattern pattern,
+ {required SharedMatchContext context}) {
+ analyzeObjectPattern(context, pattern,
+ fields: <RecordPatternField<Node, Pattern>>[
+ for (NamedPattern field in pattern.fields)
+ new RecordPatternField(
+ node: field, name: field.name, pattern: field.pattern)
+ ]);
+ return const PatternInferenceResult();
+ }
+
PatternInferenceResult visitRelationalPattern(
RelationalPattern pattern, {
required SharedMatchContext context,
@@ -9208,8 +9219,27 @@
required DartType matchedType,
required Pattern pattern,
}) {
- // TODO(scheglov): implement downwardInferObjectPatternRequiredType
- throw new UnimplementedError('TODO(scheglov)');
+ if (pattern is! ObjectPattern) return const InvalidType();
+ if (pattern.classNode.typeParameters.isEmpty) {
+ return new InterfaceType(pattern.classNode, Nullability.nonNullable, []);
+ }
+ if (pattern.typeArguments != null) {
+ return new InterfaceType(
+ pattern.classNode, Nullability.nonNullable, pattern.typeArguments);
+ }
+
+ DartType typeToInfer =
+ pattern.classNode.getThisType(coreTypes, Nullability.nonNullable);
+ List<TypeParameter> typeParametersToInfer =
+ pattern.classNode.typeParameters;
+ TypeConstraintGatherer gatherer =
+ typeSchemaEnvironment.setupGenericTypeInference(typeToInfer,
+ typeParametersToInfer, matchedType, libraryBuilder.library);
+ List<DartType> inferredTypes = typeSchemaEnvironment.partialInfer(
+ gatherer, typeParametersToInfer, null, libraryBuilder.library);
+ Substitution substitution =
+ Substitution.fromPairs(typeParametersToInfer, inferredTypes);
+ return substitution.substituteType(typeToInfer);
}
@override
@@ -9223,8 +9253,11 @@
required DartType receiverType,
required shared.RecordPatternField<Node, Pattern> field,
}) {
- // TODO(scheglov): implement resolveObjectPatternPropertyGet
- throw new UnimplementedError('TODO(scheglov)');
+ // TODO(cstefantsova): Provide a better fileOffset.
+ ObjectAccessTarget fieldAccessTarget = findInterfaceMember(
+ receiverType, new Name(field.name!), field.pattern.fileOffset,
+ callSiteAccessKind: CallSiteAccessKind.getterInvocation);
+ return fieldAccessTarget.getGetterType(this);
}
@override
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 612328a..9de3f71 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -6025,3 +6025,12 @@
script: |
class A {}
class B with A {}
+
+UnspecifiedGetterNameInObjectPattern:
+ problemMessage: "The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern."
+ experiments: patterns
+ analyzerCode: MISSING_OBJECT_PATTERN_GETTER_NAME
+ script: |
+ abstract class A { int get foo;}
+ test(dynamic x) { if (x case A(: 0)) {} }
+
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 0923cb0..d622c87 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -967,6 +967,7 @@
outlined
outputs
outputting
+ovar
overlap
overlapping
overlaps
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.expect
index 6912e67..1bc58fa 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5 as{ForNonNullableByDefault} core::int;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect
index 6912e67..ef2da50 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = let core::int? #t7 = #t5 in #t7 == null ?{core::int} #t7 as{ForNonNullableByDefault} core::int : #t7{core::int};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.expect
index 6912e67..1bc58fa 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5 as{ForNonNullableByDefault} core::int;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.modular.expect
index 6912e67..1bc58fa 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.modular.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5 as{ForNonNullableByDefault} core::int;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect
index 6912e67..0677822 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.expect
index 6912e67..ad00615 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f as int):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f as int):
+ ^";
+ final core::int #t7 = #t6 as{ForNonNullableByDefault} core::int;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int f = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index 6912e67..da3fd91 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f as int):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f as int):
+ ^";
+ final core::int #t7 = #t6;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int f = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.expect
index 6912e67..ad00615 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f as int):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f as int):
+ ^";
+ final core::int #t7 = #t6 as{ForNonNullableByDefault} core::int;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int f = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
index 6912e67..ad00615 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f as int):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f as int):
+ ^";
+ final core::int #t7 = #t6 as{ForNonNullableByDefault} core::int;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int f = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index 6912e67..da3fd91 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f as int):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f as int):
+ ^";
+ final core::int #t7 = #t6;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int f = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.expect
index beb075d..46e34b9 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final core::Object #t4 = #t1 as{ForNonNullableByDefault} core::Object;
- #t2 = 0;
- #t3 = true;
+ final core::Object #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.transformed.expect
index 83fce0c..fd41ef4 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.strong.transformed.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final core::Object #t4 = let dynamic #t5 = #t1 in #t5 == null ?{core::Object} #t5 as{ForNonNullableByDefault} core::Object : #t5{core::Object};
- #t2 = 0;
- #t3 = true;
+ final core::Object #t6 = #t4;
+ if(#t6 is self::C) {
+ final core::int? #t7 = #t6{self::C}.{self::C::f}{core::int?};
+ if(#t7 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.expect
index beb075d..46e34b9 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final core::Object #t4 = #t1 as{ForNonNullableByDefault} core::Object;
- #t2 = 0;
- #t3 = true;
+ final core::Object #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.modular.expect
index beb075d..46e34b9 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.modular.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final core::Object #t4 = #t1 as{ForNonNullableByDefault} core::Object;
- #t2 = 0;
- #t3 = true;
+ final core::Object #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect
index ebb559d..9470566 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final core::Object #t4 = #t1;
- #t2 = 0;
- #t3 = true;
+ final core::Object #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.expect
index 495be0b..c2b57fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.transformed.expect
index 495be0b..c2b57fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.strong.transformed.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.expect
index 495be0b..c2b57fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.modular.expect
index 495be0b..c2b57fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.modular.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.transformed.expect
index 495be0b..c2b57fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_assert.dart.weak.transformed.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.expect
index d6642af..22459c1 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.expect
@@ -17,8 +17,14 @@
if(!#t3) {
final dynamic #t4 = #t1;
if(!(#t4 == null)) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
}
switch(#t2) {
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.transformed.expect
index d6642af..22459c1 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.strong.transformed.expect
@@ -17,8 +17,14 @@
if(!#t3) {
final dynamic #t4 = #t1;
if(!(#t4 == null)) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
}
switch(#t2) {
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.expect
index d6642af..22459c1 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.expect
@@ -17,8 +17,14 @@
if(!#t3) {
final dynamic #t4 = #t1;
if(!(#t4 == null)) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
}
switch(#t2) {
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.modular.expect
index d6642af..22459c1 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.modular.expect
@@ -17,8 +17,14 @@
if(!#t3) {
final dynamic #t4 = #t1;
if(!(#t4 == null)) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
}
switch(#t2) {
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.transformed.expect
index d6642af..22459c1 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_null_check.dart.weak.transformed.expect
@@ -17,8 +17,14 @@
if(!#t3) {
final dynamic #t4 = #t1;
if(!(#t4 == null)) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
}
switch(#t2) {
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.expect
index 39f9cec..65fe1fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.expect
@@ -14,8 +14,11 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C<core::int>) {
+ #t2 = 0;
+ #t3 = true;
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.transformed.expect
index 39f9cec..65fe1fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.strong.transformed.expect
@@ -14,8 +14,11 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C<core::int>) {
+ #t2 = 0;
+ #t3 = true;
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.expect
index 39f9cec..65fe1fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.expect
@@ -14,8 +14,11 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C<core::int>) {
+ #t2 = 0;
+ #t3 = true;
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.modular.expect
index 39f9cec..65fe1fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.modular.expect
@@ -14,8 +14,11 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C<core::int>) {
+ #t2 = 0;
+ #t3 = true;
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.transformed.expect
index 39f9cec..65fe1fd 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args.dart.weak.transformed.expect
@@ -14,8 +14,11 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C<core::int>) {
+ #t2 = 0;
+ #t3 = true;
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.expect
index 6b4f56b..f5d5f1d 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C<core::int>) {
+ final core::int? #t6 = #t5{self::C<core::int>}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.transformed.expect
index 6b4f56b..f5d5f1d 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.strong.transformed.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C<core::int>) {
+ final core::int? #t6 = #t5{self::C<core::int>}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.expect
index 6b4f56b..f5d5f1d 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C<core::int>) {
+ final core::int? #t6 = #t5{self::C<core::int>}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.modular.expect
index 6b4f56b..f5d5f1d 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.modular.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C<core::int>) {
+ final core::int? #t6 = #t5{self::C<core::int>}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.transformed.expect
index 6b4f56b..f5d5f1d 100644
--- a/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extractor_pattern_with_type_args_inside_null_assert.dart.weak.transformed.expect
@@ -16,8 +16,14 @@
final core::bool #t3 = false;
if(!#t3) {
final dynamic #t4 = #t1!;
- #t2 = 0;
- #t3 = true;
+ final dynamic #t5 = #t4;
+ if(#t5 is self::C<core::int>) {
+ final core::int? #t6 = #t5{self::C<core::int>}.{self::C::f}{core::int?};
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.expect
index 6912e67..c378da4 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5!;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect
index 6912e67..c378da4 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5!;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.expect
index 6912e67..c378da4 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5!;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.modular.expect
index 6912e67..c378da4 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.modular.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5!;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect
index 6912e67..c378da4 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int #t6 = #t5!;
+ if(#t6 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.expect
index 6912e67..d3aa7b5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f!):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f!):
+ ^";
+ final invalid-type #t7 = #t6!;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index 6912e67..d3aa7b5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f!):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f!):
+ ^";
+ final invalid-type #t7 = #t6!;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.expect
index 6912e67..d3aa7b5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f!):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f!):
+ ^";
+ final invalid-type #t7 = #t6!;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
index 6912e67..d3aa7b5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f!):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f!):
+ ^";
+ final invalid-type #t7 = #t6!;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index 6912e67..d3aa7b5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f!):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f!):
+ ^";
+ final invalid-type #t7 = #t6!;
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.expect
index 6912e67..b25ab7d 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int? #t6 = #t5;
+ if(!(#t6 == null) && #t6{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect
index 6912e67..b25ab7d 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int? #t6 = #t5;
+ if(!(#t6 == null) && #t6{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.expect
index 6912e67..b25ab7d 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int? #t6 = #t5;
+ if(!(#t6 == null) && #t6{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.modular.expect
index 6912e67..b25ab7d 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.modular.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int? #t6 = #t5;
+ if(!(#t6 == null) && #t6{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect
index 6912e67..b25ab7d 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,8 +15,15 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ final core::int? #t6 = #t5;
+ if(!(#t6 == null) && #t6{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.expect
index 6912e67..8938743 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f?):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,29 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f?):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(!(#t7 == null)) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index 6912e67..8938743 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f?):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,29 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f?):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(!(#t7 == null)) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.expect
index 6912e67..8938743 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f?):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,29 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f?):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(!(#t7 == null)) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
index 6912e67..8938743 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f?):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,29 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f?):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(!(#t7 == null)) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index 6912e67..8938743 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -1,4 +1,11 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+// case C(: var f?):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +18,29 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
+ case C(: var f?):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(!(#t7 == null)) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7;
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ dynamic f = #t1{dynamic};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.expect b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.expect
index 6912e67..120fd01 100644
--- a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.expect
@@ -15,8 +15,14 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ if(#t5 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.transformed.expect
index 6912e67..120fd01 100644
--- a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,8 +15,14 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ if(#t5 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.expect b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.expect
index 6912e67..120fd01 100644
--- a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.expect
@@ -15,8 +15,14 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ if(#t5 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.modular.expect
index 6912e67..120fd01 100644
--- a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.modular.expect
@@ -15,8 +15,14 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ if(#t5 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.transformed.expect
index 6912e67..120fd01 100644
--- a/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/relational_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,8 +15,14 @@
final core::int #t2 = -1;
final core::bool #t3 = false;
if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ final dynamic #t4 = #t1;
+ if(#t4 is self::C) {
+ final core::int? #t5 = #t4{self::C}.{self::C::f}{core::int?};
+ if(#t5 =={core::num::==}{(core::Object) → core::bool} 1) {
+ #t2 = 0;
+ #t3 = true;
+ }
+ }
}
switch(#t2) {
#L2:
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.expect
index 6912e67..5a07ff0 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.expect
@@ -11,17 +11,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ final core::int? #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.transformed.expect
index 6912e67..5a07ff0 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.strong.transformed.expect
@@ -11,17 +11,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ final core::int? #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.expect
index 6912e67..5a07ff0 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.expect
@@ -11,17 +11,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ final core::int? #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.modular.expect
index 6912e67..5a07ff0 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.modular.expect
@@ -11,17 +11,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ final core::int? #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.transformed.expect
index 6912e67..5a07ff0 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern.dart.weak.transformed.expect
@@ -11,17 +11,27 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final core::int? #t6 = #t5{self::C}.{self::C::f}{core::int?};
+ final core::int? #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.expect
index 6912e67..cfe96d4 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.expect
@@ -1,4 +1,13 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+// - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+// case C(: int as):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +20,31 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+ case C(: int as):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index 6912e67..cfe96d4 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -1,4 +1,13 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+// - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+// case C(: int as):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +20,31 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+ case C(: int as):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.expect
index 6912e67..cfe96d4 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.expect
@@ -1,4 +1,13 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+// - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+// case C(: int as):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +20,31 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+ case C(: int as):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
index 6912e67..cfe96d4 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.modular.expect
@@ -1,4 +1,13 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+// - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+// case C(: int as):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +20,31 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+ case C(: int as):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}
diff --git a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index 6912e67..cfe96d4 100644
--- a/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -1,4 +1,13 @@
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+// - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+// case C(: int as):
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -11,17 +20,31 @@
static method test(dynamic x) → dynamic {
#L1:
{
- final dynamic #t1 = x;
- final core::int #t2 = -1;
- final core::bool #t3 = false;
- if(!#t3) {
- #t2 = 0;
- #t3 = true;
+ dynamic #t1;
+ final dynamic #t2 = x;
+ final core::int #t3 = -1;
+ final core::bool #t4 = false;
+ if(!#t4) {
+ final dynamic #t5 = #t2;
+ if(#t5 is self::C) {
+ final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart:10:10: Error: The getter 'as' isn't defined for the class 'C'.
+ - 'C' is from 'pkg/front_end/testcases/patterns/typed_variable_named_as_inside_extractor_pattern_implicitly_named.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'as'.
+ case C(: int as):
+ ^";
+ final invalid-type #t7 = #t6;
+ if(#t7 is core::int) {
+ #t3 = 0;
+ #t4 = true;
+ #t1 = #t7{core::int};
+ }
+ }
}
- switch(#t2) {
+ switch(#t3) {
#L2:
case #C1:
{
+ core::int as = #t1{core::int};
{
break #L1;
}