Version 2.15.0-60.0.dev
Merge commit '114ccb2c5c5f6f8857714e8f1734d4f1a6ed445c' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/constructor_reference_context.dart b/pkg/_fe_analyzer_shared/lib/src/parser/constructor_reference_context.dart
new file mode 100644
index 0000000..435eefb
--- /dev/null
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/constructor_reference_context.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Enum for the context in which a constructor occurs
+enum ConstructorReferenceContext {
+ /// A constructor reference in the context of a constructor invocation with
+ /// an explicit `new`.
+ New,
+
+ /// A constructor reference in the context of a constant constructor
+ /// invocation with an explicit `const`.
+ Const,
+
+ /// A constructor reference in the context of a constructor invocation with an
+ /// implicit `new` or `const`.
+ Implicit,
+
+ /// A constructor reference in the context of a redirecting factory body.
+ RedirectingFactory,
+}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index da87016..93ebfdc 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -610,9 +610,10 @@
}
@override
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
- listener?.endConstructorReference(start, periodBeforeName, endToken);
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
+ listener?.endConstructorReference(
+ start, periodBeforeName, endToken, constructorReferenceContext);
}
@override
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index 2c8e578..564eaaa 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -15,6 +15,8 @@
import 'block_kind.dart' show BlockKind;
+import 'constructor_reference_context.dart' show ConstructorReferenceContext;
+
import 'formal_parameter_kind.dart' show FormalParameterKind;
import 'identifier_context.dart' show IdentifierContext;
@@ -268,8 +270,8 @@
void beginConstructorReference(Token start) {}
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
logEvent("ConstructorReference");
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart
index 0239fca..ade0f51 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser.dart
@@ -21,6 +21,8 @@
export 'class_member_parser.dart' show ClassMemberParser;
+export 'constructor_reference_context.dart' show ConstructorReferenceContext;
+
export 'formal_parameter_kind.dart' show FormalParameterKind;
export 'identifier_context.dart' show IdentifierContext;
@@ -29,6 +31,8 @@
export 'declaration_kind.dart' show DeclarationKind;
+export 'directive_context.dart' show DirectiveContext;
+
export 'member_kind.dart' show MemberKind;
export 'parser_impl.dart' show Parser;
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index d31cf68..9355d16 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -56,6 +56,8 @@
import 'block_kind.dart';
+import 'constructor_reference_context.dart' show ConstructorReferenceContext;
+
import 'declaration_kind.dart' show DeclarationKind;
import 'directive_context.dart';
@@ -4328,7 +4330,9 @@
return token;
}
- Token parseConstructorReference(Token token, [TypeParamOrArgInfo? typeArg]) {
+ Token parseConstructorReference(
+ Token token, ConstructorReferenceContext constructorReferenceContext,
+ [TypeParamOrArgInfo? typeArg]) {
Token start =
ensureIdentifier(token, IdentifierContext.constructorReference);
listener.beginConstructorReference(start);
@@ -4345,7 +4349,8 @@
listener.handleNoConstructorReferenceContinuationAfterTypeArguments(
token.next!);
}
- listener.endConstructorReference(start, period, token.next!);
+ listener.endConstructorReference(
+ start, period, token.next!, constructorReferenceContext);
return token;
}
@@ -4354,7 +4359,8 @@
assert(optional('=', token));
listener.beginRedirectingFactoryBody(token);
Token equals = token;
- token = parseConstructorReference(token);
+ token = parseConstructorReference(
+ token, ConstructorReferenceContext.RedirectingFactory);
token = ensureSemicolon(token);
listener.endRedirectingFactoryBody(equals, token);
return token;
@@ -4480,7 +4486,9 @@
begin = next = token.next!;
// Fall through to parse the block.
} else {
- token = ensureBlock(token, codes.templateExpectedFunctionBody,
+ token = ensureBlock(
+ token,
+ codes.templateExpectedFunctionBody,
/* missingBlockName = */ null);
listener.handleInvalidFunctionBody(token);
return token.endGroup!;
@@ -5971,7 +5979,8 @@
}
listener.beginNewExpression(newKeyword);
- token = parseConstructorReference(newKeyword, potentialTypeArg);
+ token = parseConstructorReference(
+ newKeyword, ConstructorReferenceContext.New, potentialTypeArg);
token = parseConstructorInvocationArguments(token);
listener.endNewExpression(newKeyword);
return token;
@@ -5981,7 +5990,8 @@
Token token, TypeParamOrArgInfo typeArg) {
Token begin = token;
listener.beginImplicitCreationExpression(token);
- token = parseConstructorReference(token, typeArg);
+ token = parseConstructorReference(
+ token, ConstructorReferenceContext.Implicit, typeArg);
token = parseConstructorInvocationArguments(token);
listener.endImplicitCreationExpression(begin);
return token;
@@ -6097,7 +6107,8 @@
}
}
listener.beginConstExpression(constKeyword);
- token = parseConstructorReference(token, potentialTypeArg);
+ token = parseConstructorReference(
+ token, ConstructorReferenceContext.Const, potentialTypeArg);
token = parseConstructorInvocationArguments(token);
listener.endConstExpression(constKeyword);
return token;
diff --git a/pkg/analysis_server/doc/tutorial/quick_fix.md b/pkg/analysis_server/doc/tutorial/quick_fix.md
new file mode 100644
index 0000000..be98c06
--- /dev/null
+++ b/pkg/analysis_server/doc/tutorial/quick_fix.md
@@ -0,0 +1,365 @@
+# Writing a quick fix
+
+This document outlines the basic steps for writing a quick fix.
+
+## Overview
+
+A quick fix is an automated code edit that's associated with a diagnostic. The
+intent is to automate the work required to fix the issue being reported. When
+the client asks for quick fixes, server computes the relevant diagnostics based
+on the cursor location. Then, for each diagnostic, it computes one or more
+fixes. The list of computed fixes is then returned to the client.
+
+Through most of this document we'll use a simple example. We'll assume you wrote
+a new lint named `could_be_final` that flags fields that could be marked final
+but aren't, and that you're adding a fix for it. The fix will simply add the
+keyword `final` to the field declaration.
+
+## Describing the fix
+
+Each fix has an instance of the class `FixKind` associated with it. The existing
+fixes for Dart diagnostics are defined in the class `DartFixKind`, fixes for the
+analysis options file are defined in the class `AnalysisOptionsFixKind`, and
+fixes for the pubspec file are in the class `PubspecFixKind`. A fix kind has an
+identifier, a priority, and a message.
+
+The identifier is used by some LSP-based clients to provide user-defined
+shortcuts. It's a hierarchical dot-separated identifier and should follow the
+pattern seen in the existing fix kinds.
+
+The priority is used to order the list of fixes when presented to the user. The
+larger the value the closer to the top of the list it will appear. You should
+use one of the constants defined in `DartFixKindPriority` (typically
+`DartFixKindPriority.DEFAULT`), or add a new constant if there's a need for it.
+
+The message is what will be displayed to the user by the client. This should be
+a sentence fragment (no terminating period) that would be appropriate as a label
+in a menu or on a button. It should describe the change that will be made to the
+user's code.
+
+Create a static field, in the appropriate class, whose value is a `FixKind`
+describing the fix you're implementing. For our example you might define a new
+constant in `DartFixKind` like this:
+
+```dart
+static const ADD_FINAL = FixKind(
+ 'dart.fix.add.final',
+ DartFixKindPriority.DEFAULT,
+ "Add 'final' modifier",
+);
+```
+
+## Implementing the fix, part 1
+
+To implement the fix you'll create a subclass of `CorrectionProducer`. The
+existing correction producers are in the directory
+`analysis_server/lib/src/services/correction/dart`, so we'll start by creating
+a file named `add_final.dart` in that directory that contains the following:
+
+```dart
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddFinal extends CorrectionProducer {
+ @override
+ FixKind get fixKind => DartFixKind.ADD_FINAL;
+
+ @override
+ Future<void> compute(ChangeBuilder builder) async {
+ }
+
+ /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+ static AddFinal newInstance() => AddFinal();
+}
+```
+
+The `compute` method is where the fix will be built. We'll come back to it in
+"Implementing the fix, part 2".
+
+The `fixKind` getter is how you associate the fix kind we created earlier with
+the fix produced by the `compute` method.
+
+The static `newInstance` method will be used later in "Registering the fix".
+
+## Testing the fix
+
+Before we look at implementing the `compute` method, we should probably write
+some tests. Even if you don't normally use a test-driven approach to coding, we
+recommend it in this case because writing the tests can help you think of corner
+cases that the implementation will need to handle. The corresponding tests are
+in the directory `analysis_server/test/src/services/correction/fix`, so we'll
+create a file named `add_final_test.dart` that contains the following:
+
+```dart
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+void main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(AddFinalTest);
+ });
+}
+
+@reflectiveTest
+class AddFinalTest extends FixProcessorLintTest {
+ @override
+ FixKind get kind => DartFixKind.ADD_FINAL;
+
+ @override
+ String get lintCode => LintNames.could_be_final;
+}
+```
+
+These two getters tell the test framework to enable the lint being fixed and to
+expect a fix of the expected kind.
+
+The test can then be written in a method that looks something like this:
+
+```dart
+Future<void> test_withType() async {
+ await resolveTestCode('''
+class C {
+ String name;
+
+ C(this.name);
+}
+''');
+ await assertHasFix('''
+class C {
+ final String name;
+
+ C(this.name);
+}
+''');
+}
+```
+
+The test framework will create a file containing the first piece of code, run
+the lint over the code, use our correction producer to build a fix, apply the
+fix to the file, and textually compare the results with the second piece of
+code.
+
+## Registering the fix
+
+Before we can run the test, we need to register the correction producer so that
+it can be run.
+
+The list of fixes is computed by a `FixProcessor`. For each diagnostic passed
+to it, it will look up the diagnostic in a table to get a list of the correction
+producers it can use to produce fixes. There are three tables:
+
+- The `lintProducerMap` is used for fixes related to lint rules. The table is
+ keyed by the name of the lint to which the fix applies.
+
+- The `nonLintProducerMap` is used for all other fixes. The table is keyed by
+ the `ErrorCode` associated with the diagnostic.
+
+- The `nonLintMultiProducerMap` is used for multi-producers, which are
+ described below in "Multi-fix producers".
+
+Actually, the tables contain lists of functions used to create the producers. We
+do that so that producers can't accidentally carry state over from one use to
+the next. These functions are usually a tear-off of the static method you
+defined in "Implementing the fix, part 1".
+
+The last step is to add your correction producer to the appropriate map. If
+you're adding a fix for a lint, then you'd add an entry like
+
+```dart
+LintNames.could_be_final: [
+ AddFinal.newInstance,
+],
+```
+
+At this point you should be able to run the test and see it failing.
+
+## Implementing the fix, part 2
+
+We're now at a point where we can finish the implementation of the fix by
+implementing the `compute` method.
+
+The correction producer has access to most of the information you should need in
+order to write the fix. The change builder passed to `compute` is how you
+construct the fix that will be sent back to the client.
+
+The first step in the implementation of any fix is to find the location in the
+AST where the diagnostic was reported and verify that all of the conditions on
+which the fix is predicated are valid. Assuming that the lint has been written
+and tested correctly, there's no need to test that the conditions that caused
+the lint rule to generate a diagnostic are still true. However, sometimes there
+are additional constraints that need to be satisfied before the fix can safely
+be applied. For example, for our fix, where we're only going to add a keyword,
+we'll need to ensure that there's only one field that would be impacted by the
+change, otherwise we might introduce more problems than there were before the
+fix.
+
+Of course, sometimes you'll end up duplicating some of the work done by the lint
+in the course of getting the information you need from the AST. While that's
+less than optimal, there isn't any mechanism for passing information from the
+diagnostic to the fix, so sometimes it just can't be avoided.
+
+For this example we're going to assume that the lint highlights the name of the
+field that could have been final. Finding the AST node is easy because it's done
+for you by the fix processor before `compute` is invoked. All you have to do is
+use the getter `node` to find the node at the offset of the lint's highlight
+region. We're expecting it to be the name of a field, so that's how we'll name
+the variable:
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+ var fieldName = node;
+}
+```
+
+Then we need to verify that this node really is an identifier as expected:
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+ var fieldName = node;
+ if (fieldName is! SimpleIdentifier) {
+ return;
+ }
+}
+```
+
+If it isn't, then we'll return. Because we haven't used the builder to create a
+fix, returning now means that no fix from this producer will be sent to the
+client.
+
+Simple identifiers appear in lots of places, so to be extra sure we have what
+we're looking for we'll also make sure that
+- the identifier is the name being declared by a variable declaration,
+- the variable declaration is in a list of variables in a field declaration, and
+- there's only one field being declared.
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+ var fieldName = node;
+ if (fieldName is! SimpleIdentifier) {
+ return;
+ }
+ var field = fieldName.parent;
+ if (field is! VariableDeclaration || field.name != fieldName) {
+ return;
+ }
+ var fieldList = field.parent;
+ if (fieldList is! VariableDeclarationList ||
+ fieldList.variables.length > 1 ||
+ fieldList.parent is! FieldDeclaration) {
+ return;
+ }
+}
+```
+
+After all those checks we now know that the `fieldName` really is the name of a
+field and that there are no other fields that would be impacted by marking the
+list of fields with `final`.
+
+We're now ready to create the actual fix. To do that we're going to use the
+`ChangeBuilder` passed to the `compute` method. In the example below we'll
+introduce a couple of the methods on `ChangeBuilder`, but for more information
+you can read [Creating `SourceChange`s](https://github.com/dart-lang/sdk/blob/master/pkg/analyzer_plugin/doc/tutorial/creating_edits.md).
+
+Fields can be declared with either `final`, `const`, `var`, or a type
+annotation, and the change that needs to be made depends on how the field was
+declared. To figure that out we'll make use of the fact that the first three
+tokens are all accessible from the AST by using the getter `keyword`. If there
+is no keyword, then we can safely insert `final `, but if `var` was used then it
+has to be replaced. And, of course, if it's already `final` or `const` then we
+shouldn't do anything (and presumably the lint rule wouldn't have produced a
+lint).
+
+```dart
+@override
+Future<void> compute(ChangeBuilder builder) async {
+ var fieldName = node;
+ if (fieldName is! SimpleIdentifier) {
+ return;
+ }
+ var field = fieldName.parent;
+ if (field is! VariableDeclaration || field.name != fieldName) {
+ return;
+ }
+ var fieldList = field.parent;
+ if (fieldList is! VariableDeclarationList ||
+ fieldList.variables.length > 1 ||
+ fieldList.parent is! FieldDeclaration) {
+ return;
+ }
+ var keyword = fieldList.keyword;
+ if (keyword == null) {
+ await builder.addDartFileEdit(file, (builder) {
+ builder.addSimpleInsertion(fieldList.offset, 'final ');
+ });
+ } else if (keyword.type == Keyword.VAR) {
+ await builder.addDartFileEdit(file, (builder) {
+ builder.addSimpleReplacement(range.token(keyword), 'final');
+ });
+ }
+}
+```
+
+In both cases we're using `addDartFileEdit` to create an edit in a `.dart` file.
+If we only need to insert the keyword, then we'll use `addSimpleInsertion` to do
+the insertion, but if we need to replace the existing keyword, then we'll use
+`addSimpleReplacement` to do the replacement.
+
+We don't have a test case for the branch where the keyword `var` is used. We'll
+leave adding such a test as an exercise for the reader.
+
+In this example we're just adding a single keyword, so we're avoiding any need
+to worry about formatting. As a general principle we don't attempt to format the
+code after it's been modified, but we do make an effort to leave the code in a
+reasonably readable state. There's a getter (`eol`) that you can use to get the
+end-of-line marker that should be used in the file, and there's another getter
+(`utils`) that will return an object with several utility methods that help with
+things like getting the right indentation for nested code.
+
+If we were adding a fix for a non-lint diagnostic, then there would be a couple
+of minor differences. First, we'd register the correction producer using the
+diagnostic's error code. Second, the test class would be a subclass of
+`FixProcessorTest` and wouldn't specify the name of the lint.
+
+## Multi-fix producers
+
+We skipped over the map named `nonLintMultiProducerMap` earlier, promising that
+we'd return to it later. You'll probably never have a need for it, but in case
+you do this section will hopefully tell you what you need to know.
+
+There's a subclass of `CorrectionProducer` named `MultiCorrectionProducer` and
+this map is how you register one of them. That class exists for rare cases where
+you need to use a single correction producer to produce multiple fixes. This is
+generally only needed when you can't know in advance the maximum number of
+fixes that might need to be produced. For example, if there is an undefined
+identifier and it might be possible to add an import to fix the problem, there's
+no way to know in advance how many different libraries might define the name.
+
+If you are able to enumerate the possible fixes ahead of time, then you're
+better off to create one subclass of `CorrectionProducer` for each of the fixes.
+For example, taking the case of an undefined identifier again, another way to
+fix the problem is to add a declaration of the name. There are a finite number
+of kinds of declarations a user might want: class, mixin, variable, etc. Even
+though some of the declarations might not make sense because of how the
+identifier is being used, it's better to have a separate correction producer for
+each kind of declaration and have each one determine whether to generate a fix.
+
+And, we don't currently have support for associating a `MultiCorrectionProducer`
+with a lint, so if you're writing fixes for a lint then this option isn't
+available to you.
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 44ea8bb..9968a05 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -36,6 +36,7 @@
show
Assert,
BlockKind,
+ ConstructorReferenceContext,
DeclarationKind,
FormalParameterKind,
IdentifierContext,
@@ -1099,8 +1100,8 @@
}
@override
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
assert(optionalOrNull('.', periodBeforeName));
debugEvent("ConstructorReference");
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index c2509ed..48ea92e 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -702,10 +702,11 @@
}
@override
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
end('ConstructorReference');
- super.endConstructorReference(start, periodBeforeName, endToken);
+ super.endConstructorReference(
+ start, periodBeforeName, endToken, constructorReferenceContext);
}
@override
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 71bb73f..c18ba24 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -12,6 +12,7 @@
show
Assert,
BlockKind,
+ ConstructorReferenceContext,
FormalParameterKind,
IdentifierContext,
MemberKind,
@@ -127,6 +128,8 @@
import 'constness.dart' show Constness;
+import 'constructor_tearoff_lowering.dart';
+
import 'expression_generator.dart';
import 'expression_generator_helper.dart';
@@ -140,8 +143,7 @@
RedirectingFactoryBody,
RedirectionTarget,
getRedirectingFactoryBody,
- getRedirectionTarget,
- isRedirectingFactory;
+ getRedirectionTarget;
import 'type_algorithms.dart' show calculateBounds;
@@ -303,7 +305,7 @@
Scope? switchScope;
- CloneVisitorNotMembers? cloner;
+ late _BodyBuilderCloner _cloner = new _BodyBuilderCloner(this);
ConstantContext constantContext = ConstantContext.none;
@@ -319,26 +321,25 @@
/// List of built redirecting factory invocations. The targets of the
/// invocations are to be resolved in a separate step.
- final List<StaticInvocation> redirectingFactoryInvocations =
- <StaticInvocation>[];
+ final List<FactoryConstructorInvocation> redirectingFactoryInvocations =
+ <FactoryConstructorInvocation>[];
/// List of redirecting factory invocations delayed for resolution.
///
/// A resolution of a redirecting factory invocation can be delayed because
/// the inference in the declaration of the redirecting factory isn't done
/// yet.
- final List<StaticInvocation> delayedRedirectingFactoryInvocations =
- <StaticInvocation>[];
+ final List<FactoryConstructorInvocation>
+ delayedRedirectingFactoryInvocations = <FactoryConstructorInvocation>[];
/// List of built type aliased generative constructor invocations that
/// require unaliasing.
- final List<TypeAliasedConstructorInvocationJudgment>
+ final List<TypeAliasedConstructorInvocation>
typeAliasedConstructorInvocations = [];
/// List of built type aliased factory constructor invocations that require
/// unaliasing.
- final List<TypeAliasedFactoryInvocationJudgment>
- typeAliasedFactoryInvocations = [];
+ final List<TypeAliasedFactoryInvocation> typeAliasedFactoryInvocations = [];
/// Variables with metadata. Their types need to be inferred late, for
/// example, in [finishFunction].
@@ -648,13 +649,37 @@
debugEvent("beginMetadata");
super.push(constantContext);
constantContext = ConstantContext.inferred;
+ assert(checkState(token, [ValueKinds.ConstantContext]));
}
@override
void endMetadata(Token beginToken, Token? periodBeforeName, Token endToken) {
+ assert(checkState(beginToken, [
+ /*arguments*/ ValueKinds.ArgumentsOrNull,
+ /*suffix*/ if (periodBeforeName != null)
+ unionOfKinds([ValueKinds.Identifier, ValueKinds.ParserRecovery]),
+ /*type arguments*/ ValueKinds.TypeArgumentsOrNull,
+ /*type*/ unionOfKinds([
+ ValueKinds.Generator,
+ ValueKinds.QualifiedName,
+ ValueKinds.ProblemBuilder,
+ ValueKinds.ParserRecovery
+ ])
+ ]));
debugEvent("Metadata");
Arguments? arguments = pop() as Arguments?;
- pushQualifiedReference(beginToken.next!, periodBeforeName);
+ pushQualifiedReference(
+ beginToken.next!, periodBeforeName, ConstructorReferenceContext.Const);
+ assert(checkState(beginToken, [
+ /*constructor name identifier*/ ValueKinds.IdentifierOrNull,
+ /*constructor name*/ ValueKinds.Name,
+ /*type arguments*/ ValueKinds.TypeArgumentsOrNull,
+ /*class*/ unionOfKinds([
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ValueKinds.ParserRecovery
+ ]),
+ ]));
if (arguments != null) {
push(arguments);
_buildConstructorReferenceInvocation(
@@ -698,10 +723,12 @@
}
constantContext = savedConstantContext;
}
+ assert(checkState(beginToken, [ValueKinds.Expression]));
}
@override
void endMetadataStar(int count) {
+ assert(checkState(null, repeatedKinds(ValueKinds.Expression, count)));
debugEvent("MetadataStar");
if (count == 0) {
push(NullValue.Metadata);
@@ -710,6 +737,7 @@
.popNonNullable(stack, count, dummyExpression) ??
NullValue.Metadata /* Ignore parser recovery */);
}
+ assert(checkState(null, [ValueKinds.AnnotationListOrNull]));
}
@override
@@ -731,6 +759,7 @@
}
}
push(count);
+ assert(checkState(beginToken, [ValueKinds.Integer]));
}
@override
@@ -757,14 +786,20 @@
}
}
push(count);
+ assert(checkState(beginToken, [ValueKinds.Integer]));
}
@override
void finishFields() {
debugEvent("finishFields");
+ assert(checkState(null, [/*field count*/ ValueKinds.Integer]));
int count = pop() as int;
List<FieldBuilder> fields = <FieldBuilder>[];
for (int i = 0; i < count; i++) {
+ assert(checkState(null, [
+ ValueKinds.FieldInitializerOrNull,
+ ValueKinds.Identifier,
+ ]));
Expression? initializer = pop() as Expression?;
Identifier identifier = pop() as Identifier;
String name = identifier.name;
@@ -812,6 +847,8 @@
fieldBuilder.buildBody(coreTypes, null);
}
}
+ assert(checkState(
+ null, [ValueKinds.TypeOrNull, ValueKinds.AnnotationListOrNull]));
{
// TODO(ahe): The type we compute here may be different from what is
// computed in the outline phase. We should make sure that the outline
@@ -829,6 +866,7 @@
resolveRedirectingFactoryTargets();
finishVariableMetadata();
+ assert(stack.length == 0);
}
@override
@@ -847,6 +885,7 @@
exitLocalScope();
push(block);
}
+ assert(checkState(closeBrace, [ValueKinds.StatementOrNull]));
}
void prepareInitializers() {
@@ -918,6 +957,14 @@
@override
void endInitializer(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Initializer,
+ ValueKinds.Generator,
+ ValueKinds.Expression,
+ ])
+ ]));
+
debugEvent("endInitializer");
inFieldInitializer = false;
assert(!inInitializer);
@@ -1012,8 +1059,8 @@
VariableDeclaration? tearOffParameter =
builder.getTearOffParameter(i);
if (tearOffParameter != null) {
- cloner ??= new CloneVisitorNotMembers();
- Expression tearOffInitializer = cloner!.clone(initializer!);
+ Expression tearOffInitializer =
+ _cloner.cloneInContext(initializer!);
tearOffParameter.initializer = tearOffInitializer
..parent = tearOffParameter;
libraryBuilder.loader.transformPostInference(
@@ -1264,9 +1311,13 @@
}
void _resolveRedirectingFactoryTargets(
- List<StaticInvocation> redirectingFactoryInvocations,
- List<StaticInvocation>? delayedRedirectingFactoryInvocations) {
- for (StaticInvocation invocation in redirectingFactoryInvocations) {
+ List<FactoryConstructorInvocation> redirectingFactoryInvocations,
+ List<FactoryConstructorInvocation>?
+ delayedRedirectingFactoryInvocations) {
+ List<FactoryConstructorInvocation> invocations =
+ redirectingFactoryInvocations.toList();
+ redirectingFactoryInvocations.clear();
+ for (FactoryConstructorInvocation invocation in invocations) {
// If the invocation was invalid, it or its parent has already been
// desugared into an exception throwing expression. There is nothing to
// resolve anymore. Note that in the case where the invocation's parent
@@ -1276,8 +1327,7 @@
if (invocation.parent == null) continue;
// ignore: unnecessary_null_comparison
if (typeInferrer != null) {
- if (invocation is FactoryConstructorInvocationJudgment &&
- !invocation.hasBeenInferred) {
+ if (!invocation.hasBeenInferred) {
continue;
}
} else {
@@ -1298,11 +1348,10 @@
invocation.replaceWith(replacement);
}
}
- redirectingFactoryInvocations.clear();
}
void _unaliasTypeAliasedConstructorInvocations() {
- for (TypeAliasedConstructorInvocationJudgment invocation
+ for (TypeAliasedConstructorInvocation invocation
in typeAliasedConstructorInvocations) {
bool inferred = !hasExplicitTypeArguments(invocation.arguments);
DartType aliasedType = new TypedefType(
@@ -1328,7 +1377,7 @@
}
void _unaliasTypeAliasedFactoryInvocations() {
- for (TypeAliasedFactoryInvocationJudgment invocation
+ for (TypeAliasedFactoryInvocation invocation
in typeAliasedFactoryInvocations) {
bool inferred = !hasExplicitTypeArguments(invocation.arguments);
DartType aliasedType = new TypedefType(
@@ -1402,10 +1451,9 @@
List<Expression> annotations = variables.first.annotations;
inferAnnotations(variables.first, annotations);
for (int i = 1; i < variables.length; i++) {
- cloner ??= new CloneVisitorNotMembers();
VariableDeclaration variable = variables[i];
for (int i = 0; i < annotations.length; i++) {
- variable.addAnnotation(cloner!.clone(annotations[i]));
+ variable.addAnnotation(_cloner.cloneInContext(annotations[i]));
}
}
}
@@ -1414,6 +1462,7 @@
@override
List<Expression> finishMetadata(Annotatable? parent) {
+ assert(checkState(null, [ValueKinds.AnnotationList]));
List<Expression> expressions = pop() as List<Expression>;
inferAnnotations(parent, expressions);
@@ -1465,10 +1514,17 @@
new FormalParameters(formals, fileOffset, noLength, uri)
.computeFormalParameterScope(scope, member, this));
- token = parser.parseExpression(parser.syntheticPreviousToken(token));
+ Token endToken =
+ parser.parseExpression(parser.syntheticPreviousToken(token));
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ])
+ ]));
Expression expression = popForValue();
- Token eof = token.next!;
+ Token eof = endToken.next!;
if (!eof.isEof) {
expression = wrapInLocatedProblem(
@@ -1514,18 +1570,27 @@
Expression parseFieldInitializer(Token token) {
Parser parser = new Parser(this,
useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
- token = parser.parseExpression(parser.syntheticPreviousToken(token));
+ Token endToken =
+ parser.parseExpression(parser.syntheticPreviousToken(token));
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ])
+ ]));
Expression expression = popForValue();
- checkEmpty(token.charOffset);
+ checkEmpty(endToken.charOffset);
return expression;
}
Expression parseAnnotation(Token token) {
Parser parser = new Parser(this,
useImplicitCreationExpression: useImplicitCreationExpressionInCfe);
- token = parser.parseMetadata(parser.syntheticPreviousToken(token));
+ Token endToken = parser.parseMetadata(parser.syntheticPreviousToken(token));
+ assert(checkState(token, [ValueKinds.Expression]));
Expression annotation = pop() as Expression;
- checkEmpty(token.charOffset);
+ checkEmpty(endToken.charOffset);
return annotation;
}
@@ -1600,6 +1665,13 @@
@override
void handleExpressionStatement(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
debugEvent("ExpressionStatement");
push(forest.createExpressionStatement(
offsetForToken(token), popForEffect()));
@@ -1645,16 +1717,32 @@
push(forest.createArguments(
beginToken.offset, new List<Expression>.from(arguments)));
}
+ assert(checkState(beginToken, [ValueKinds.Arguments]));
}
@override
void handleParenthesizedCondition(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
debugEvent("ParenthesizedCondition");
push(popForValue());
+ assert(checkState(token, [ValueKinds.Expression]));
}
@override
void handleParenthesizedExpression(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
debugEvent("ParenthesizedExpression");
Expression value = popForValue();
if (value is ShadowLargeIntLiteral) {
@@ -1670,6 +1758,12 @@
} else {
push(new ParenthesizedExpressionGenerator(this, token.endGroup!, value));
}
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ]),
+ ]));
}
@override
@@ -1752,6 +1846,12 @@
@override
void beginCascade(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ]),
+ ]));
debugEvent("beginCascade");
Expression expression = popForValue();
if (expression is Cascade) {
@@ -1770,10 +1870,24 @@
push(_createReadOnlyVariableAccess(variable, token, expression.fileOffset,
null, ReadOnlyAccessKind.LetVariable));
}
+ assert(checkState(token, [
+ ValueKinds.Generator,
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ]),
+ ]));
}
@override
void endCascade() {
+ assert(checkState(null, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ]),
+ ValueKinds.Expression,
+ ]));
debugEvent("endCascade");
Expression expression = popForEffect();
Cascade cascadeReceiver = pop() as Cascade;
@@ -1786,18 +1900,35 @@
debugEvent("beginCaseExpression");
super.push(constantContext);
constantContext = ConstantContext.inferred;
+ assert(checkState(caseKeyword, [ValueKinds.ConstantContext]));
}
@override
void endCaseExpression(Token colon) {
+ assert(checkState(colon, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ValueKinds.ConstantContext,
+ ]));
debugEvent("endCaseExpression");
Expression expression = popForValue();
constantContext = pop() as ConstantContext;
super.push(expression);
+ assert(checkState(colon, [ValueKinds.Expression]));
}
@override
void beginBinaryExpression(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
bool isAnd = optional("&&", token);
if (isAnd || optional("||", token)) {
Expression lhs = popForValue();
@@ -1808,10 +1939,24 @@
}
push(lhs);
}
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
}
@override
void endBinaryExpression(Token token) {
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
debugEvent("BinaryExpression");
if (optional(".", token) ||
optional("..", token) ||
@@ -1826,6 +1971,13 @@
} else {
doBinaryExpression(token);
}
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.Initializer,
+ ]),
+ ]));
}
void doBinaryExpression(Token token) {
@@ -1881,10 +2033,25 @@
push(forest.createBinary(fileOffset, left as Expression, name, right));
}
}
+ assert(checkState(token, <ValueKind>[
+ ValueKinds.Expression,
+ ]));
}
/// Handle `a && b` and `a || b`.
void doLogicalExpression(Token token) {
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
Expression argument = popForValue();
Expression receiver = pop() as Expression;
Expression logicalExpression = forest.createLogicalExpression(
@@ -1895,17 +2062,47 @@
// [beginBinaryExpression].
typeInferrer.assignedVariables.endNode(logicalExpression);
}
+ assert(checkState(token, <ValueKind>[
+ ValueKinds.Expression,
+ ]));
}
/// Handle `a ?? b`.
void doIfNull(Token token) {
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
Expression b = popForValue();
Expression a = popForValue();
push(new IfNullExpression(a, b)..fileOffset = offsetForToken(token));
+ assert(checkState(token, <ValueKind>[
+ ValueKinds.Expression,
+ ]));
}
/// Handle `a?.b(...)`.
void doIfNotNull(Token token) {
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ]),
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ValueKinds.Initializer,
+ ]),
+ ]));
Object? send = pop();
if (send is IncompleteSendGenerator) {
push(send.withReceiver(pop(), token.charOffset, isNullAware: true));
@@ -1915,11 +2112,32 @@
push(buildProblem(fasta.templateExpectedIdentifier.withArguments(token),
offsetForToken(token), lengthForToken(token)));
}
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.Initializer,
+ ]),
+ ]));
}
void doDotOrCascadeExpression(Token token) {
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ]),
+ ]));
Object? send = pop();
if (send is IncompleteSendGenerator) {
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.ProblemBuilder,
+ ValueKinds.Initializer,
+ ]),
+ ]));
Object? receiver = optional(".", token) ? pop() : popForValue();
push(send.withReceiver(receiver, token.charOffset));
} else {
@@ -1928,6 +2146,13 @@
push(buildProblem(fasta.templateExpectedIdentifier.withArguments(token),
offsetForToken(token), lengthForToken(token)));
}
+ assert(checkState(token, <ValueKind>[
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ValueKinds.Initializer,
+ ]),
+ ]));
}
bool areArgumentsCompatible(FunctionNode function, Arguments arguments) {
@@ -2122,28 +2347,37 @@
// This deals with this kind of initializer: `C(a) : a = a;`
Scope scope = inInitializer ? enclosingScope : this.scope;
push(scopeLookup(scope, name, token));
- return;
- } else if (context.inDeclaration) {
- if (context == IdentifierContext.topLevelVariableDeclaration ||
- context == IdentifierContext.fieldDeclaration) {
- constantContext = member.isConst
- ? ConstantContext.inferred
- : !member.isStatic &&
- classBuilder != null &&
- classBuilder!.declaresConstConstructor
- ? ConstantContext.required
- : ConstantContext.none;
- }
- } else if (constantContext != ConstantContext.none &&
- !context.allowedInConstantExpression) {
- addProblem(
- fasta.messageNotAConstantExpression, token.charOffset, token.length);
- }
- if (token.isSynthetic) {
- push(new ParserRecovery(offsetForToken(token)));
} else {
- push(new Identifier(token));
+ if (context.inDeclaration) {
+ if (context == IdentifierContext.topLevelVariableDeclaration ||
+ context == IdentifierContext.fieldDeclaration) {
+ constantContext = member.isConst
+ ? ConstantContext.inferred
+ : !member.isStatic &&
+ classBuilder != null &&
+ classBuilder!.declaresConstConstructor
+ ? ConstantContext.required
+ : ConstantContext.none;
+ }
+ } else if (constantContext != ConstantContext.none &&
+ !context.allowedInConstantExpression) {
+ addProblem(fasta.messageNotAConstantExpression, token.charOffset,
+ token.length);
+ }
+ if (token.isSynthetic) {
+ push(new ParserRecovery(offsetForToken(token)));
+ } else {
+ push(new Identifier(token));
+ }
}
+ assert(checkState(token, [
+ unionOfKinds([
+ ValueKinds.Identifier,
+ ValueKinds.Generator,
+ ValueKinds.ParserRecovery,
+ ValueKinds.ProblemBuilder,
+ ]),
+ ]));
}
/// Helper method to create a [VariableGet] of the [variable] using
@@ -4091,10 +4325,11 @@
}
@override
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
debugEvent("ConstructorReference");
- pushQualifiedReference(start, periodBeforeName);
+ pushQualifiedReference(
+ start, periodBeforeName, constructorReferenceContext);
}
/// A qualified reference is something that matches one of:
@@ -4130,7 +4365,8 @@
/// stack and pushes 3 values: a generator (the type in a constructor
/// reference, or an expression in metadata), a list of type arguments, and a
/// name.
- void pushQualifiedReference(Token start, Token? periodBeforeName) {
+ void pushQualifiedReference(Token start, Token? periodBeforeName,
+ ConstructorReferenceContext constructorReferenceContext) {
assert(checkState(start, [
/*suffix*/ if (periodBeforeName != null)
unionOfKinds([ValueKinds.Identifier, ValueKinds.ParserRecovery]),
@@ -4140,7 +4376,7 @@
ValueKinds.QualifiedName,
ValueKinds.ProblemBuilder,
ValueKinds.ParserRecovery
- ])
+ ]),
]));
Object? suffixObject = popIfNotNull(periodBeforeName);
Identifier? suffix;
@@ -4165,7 +4401,7 @@
start,
unionOfKinds([ValueKinds.Generator, ValueKinds.ProblemBuilder]),
qualifier));
- if (qualifier is TypeUseGenerator) {
+ if (qualifier is TypeUseGenerator && suffix == null) {
type = qualifier;
if (typeArguments != null) {
// TODO(ahe): Point to the type arguments instead.
@@ -4173,7 +4409,16 @@
identifier.charOffset, identifier.name.length);
}
} else if (qualifier is Generator) {
- type = qualifier.qualifiedLookup(identifier.token);
+ if (constructorReferenceContext !=
+ ConstructorReferenceContext.Implicit) {
+ type = qualifier.qualifiedLookup(qualified.token);
+ } else {
+ type = qualifier.buildPropertyAccess(
+ new IncompletePropertyAccessGenerator(this, qualified.token,
+ new Name(qualified.name, libraryBuilder.nameOrigin)),
+ qualified.token.charOffset,
+ false);
+ }
identifier = null;
} else if (qualifier is ProblemBuilder) {
type = qualifier;
@@ -4192,6 +4437,9 @@
} else {
name = "";
}
+
+ // TODO(johnniwinther): Provide sufficient offsets for pointing correctly
+ // to prefix, class name and suffix.
push(type);
push(typeArguments ?? NullValue.TypeArguments);
push(name);
@@ -4204,7 +4452,8 @@
/*class*/ unionOfKinds([
ValueKinds.Generator,
ValueKinds.ProblemBuilder,
- ValueKinds.ParserRecovery
+ ValueKinds.ParserRecovery,
+ ValueKinds.Expression,
]),
]));
}
@@ -4248,8 +4497,8 @@
libraryBuilder.checkBoundsInConstructorInvocation(
node, typeEnvironment, uri);
} else {
- TypeAliasedConstructorInvocationJudgment constructorInvocation =
- node = new TypeAliasedConstructorInvocationJudgment(
+ TypeAliasedConstructorInvocation constructorInvocation =
+ node = new TypeAliasedConstructorInvocation(
typeAliasBuilder, target, arguments,
isConst: isConst)
..fileOffset = charOffset;
@@ -4271,15 +4520,18 @@
}
StaticInvocation node;
if (typeAliasBuilder == null) {
- node = new FactoryConstructorInvocationJudgment(target, arguments,
- isConst: isConst)
- ..fileOffset = charOffset;
+ FactoryConstructorInvocation factoryInvocation =
+ new FactoryConstructorInvocation(target, arguments,
+ isConst: isConst)
+ ..fileOffset = charOffset;
libraryBuilder.checkBoundsInFactoryInvocation(
- node, typeEnvironment, uri,
+ factoryInvocation, typeEnvironment, uri,
inferred: !hasExplicitTypeArguments(arguments));
+ redirectingFactoryInvocations.add(factoryInvocation);
+ node = factoryInvocation;
} else {
- TypeAliasedFactoryInvocationJudgment constructorInvocation =
- new TypeAliasedFactoryInvocationJudgment(
+ TypeAliasedFactoryInvocation constructorInvocation =
+ new TypeAliasedFactoryInvocation(
typeAliasBuilder, target, arguments,
isConst: isConst)
..fileOffset = charOffset;
@@ -4519,8 +4771,10 @@
/*class*/ unionOfKinds([
ValueKinds.Generator,
ValueKinds.ProblemBuilder,
- ValueKinds.ParserRecovery
+ ValueKinds.ParserRecovery,
+ ValueKinds.Expression,
]),
+ /*previous constant context*/ ValueKinds.ConstantContext,
]));
Arguments arguments = pop() as Arguments;
Identifier? nameLastIdentifier = pop(NullValue.Identifier) as Identifier?;
@@ -4543,6 +4797,11 @@
} else if (type is ParserRecovery) {
push(new ParserErrorGenerator(
this, nameToken, fasta.messageSyntheticToken));
+ } else if (type is Expression) {
+ push(createInstantiationAndInvocation(
+ () => type, typeArguments, name, name, arguments,
+ instantiationOffset: offset,
+ invocationOffset: nameLastToken.charOffset));
} else {
String? typeName;
if (type is ProblemBuilder) {
@@ -4553,6 +4812,43 @@
kind: UnresolvedKind.Constructor));
}
constantContext = savedConstantContext;
+ assert(checkState(nameToken, [
+ unionOfKinds([
+ ValueKinds.Expression,
+ ValueKinds.Generator,
+ ])
+ ]));
+ }
+
+ Expression createInstantiationAndInvocation(
+ Expression Function() receiverFunction,
+ List<UnresolvedType>? typeArguments,
+ String className,
+ String constructorName,
+ Arguments arguments,
+ {required int instantiationOffset,
+ required int invocationOffset}) {
+ if (enableConstructorTearOffsInLibrary) {
+ Expression receiver = receiverFunction();
+ if (typeArguments != null) {
+ receiver = forest.createInstantiation(instantiationOffset, receiver,
+ buildDartTypeArguments(typeArguments));
+ }
+ return forest.createMethodInvocation(invocationOffset, receiver,
+ new Name(constructorName, libraryBuilder.nameOrigin), arguments);
+ } else {
+ if (typeArguments != null) {
+ assert(forest.argumentsTypeArguments(arguments).isEmpty);
+ forest.argumentsSetTypeArguments(
+ arguments, buildDartTypeArguments(typeArguments));
+ }
+ return buildUnresolvedError(
+ forest.createNullLiteral(instantiationOffset),
+ constructorNameForDiagnostics(constructorName, className: className),
+ arguments,
+ invocationOffset,
+ kind: UnresolvedKind.Constructor);
+ }
}
@override
@@ -4803,12 +5099,6 @@
charOffset: nameToken.charOffset,
charLength: nameToken.length,
typeAliasBuilder: typeAliasBuilder as TypeAliasBuilder?);
-
- if (invocation is StaticInvocation &&
- isRedirectingFactory(target, helper: this)) {
- redirectingFactoryInvocations.add(invocation);
- }
-
return invocation;
} else {
errorName ??= debugName(type.name, name);
@@ -6420,7 +6710,8 @@
if (operand is Generator) {
push(operand.applyTypeArguments(
openAngleBracket.charOffset, typeArguments));
- } else if (operand is StaticTearOff && operand.target.isFactory ||
+ } else if (operand is StaticTearOff &&
+ (operand.target.isFactory || isTearOffLowering(operand.target)) ||
operand is ConstructorTearOff ||
operand is RedirectingFactoryTearOff) {
push(buildProblem(fasta.messageConstructorTearOffWithTypeArguments,
@@ -7075,3 +7366,52 @@
VariableDeclaration get variable =>
(explicitVariableDeclaration ?? syntheticVariableDeclaration)!;
}
+
+class _BodyBuilderCloner extends CloneVisitorNotMembers {
+ final BodyBuilder bodyBuilder;
+
+ _BodyBuilderCloner(this.bodyBuilder);
+
+ @override
+ visitStaticInvocation(StaticInvocation node) {
+ if (node is FactoryConstructorInvocation) {
+ FactoryConstructorInvocation result = new FactoryConstructorInvocation(
+ node.target, clone(node.arguments),
+ isConst: node.isConst)
+ ..hasBeenInferred = node.hasBeenInferred;
+ bodyBuilder.redirectingFactoryInvocations.add(result);
+ return result;
+ } else if (node is TypeAliasedFactoryInvocation) {
+ TypeAliasedFactoryInvocation result = new TypeAliasedFactoryInvocation(
+ node.typeAliasBuilder, node.target, clone(node.arguments),
+ isConst: node.isConst)
+ ..hasBeenInferred = node.hasBeenInferred;
+ bodyBuilder.typeAliasedFactoryInvocations.add(result);
+ return result;
+ }
+ return super.visitStaticInvocation(node);
+ }
+
+ @override
+ visitConstructorInvocation(ConstructorInvocation node) {
+ if (node is TypeAliasedConstructorInvocation) {
+ TypeAliasedConstructorInvocation result =
+ new TypeAliasedConstructorInvocation(
+ node.typeAliasBuilder, node.target, clone(node.arguments),
+ isConst: node.isConst)
+ ..hasBeenInferred = node.hasBeenInferred;
+ bodyBuilder.typeAliasedConstructorInvocations.add(result);
+ return result;
+ }
+ return super.visitConstructorInvocation(node);
+ }
+
+ @override
+ visitArguments(Arguments node) {
+ if (node is ArgumentsImpl) {
+ return ArgumentsImpl.clone(node, node.positional.map(clone).toList(),
+ node.named.map(clone).toList(), node.types.map(visitType).toList());
+ }
+ return super.visitArguments(node);
+ }
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
index 2452d86..ad3885a 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
@@ -76,6 +76,19 @@
return null;
}
+/// Returns `true` if [member] is a lowered constructor, factory or typedef tear
+/// off.
+bool isTearOffLowering(Member member) {
+ return member is Procedure &&
+ (isConstructorTearOffLowering(member) ||
+ isTypedefTearOffLowering(member));
+}
+
+/// Returns `true` if [procedure] is a lowered constructor or factory tear off.
+bool isConstructorTearOffLowering(Procedure procedure) {
+ return extractConstructorNameFromTearOff(procedure.name) != null;
+}
+
/// Returns `true` if [procedure] is a lowered typedef tear off.
bool isTypedefTearOffLowering(Procedure procedure) {
return extractTypedefNameFromTearOff(procedure.name) != null;
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index 2e0d7b0..1449f34 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -296,18 +296,10 @@
Token nameToken,
Token nameLastToken,
Constness constness) {
- if (typeArguments != null) {
- assert(_forest.argumentsTypeArguments(arguments).isEmpty);
- _forest.argumentsSetTypeArguments(
- arguments, _helper.buildDartTypeArguments(typeArguments));
- }
- return _helper.buildUnresolvedError(
- _forest.createNullLiteral(fileOffset),
- _helper.constructorNameForDiagnostics(name,
- className: _plainNameForRead),
- arguments,
- nameToken.charOffset,
- kind: UnresolvedKind.Constructor);
+ return _helper.createInstantiationAndInvocation(() => buildSimpleRead(),
+ typeArguments, _plainNameForRead, name, arguments,
+ instantiationOffset: fileOffset,
+ invocationOffset: nameLastToken.charOffset);
}
void printOn(StringSink sink);
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index c6be249..70eb4d1 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -99,8 +99,7 @@
Expression buildUnresolvedError(
Expression receiver, String name, Arguments arguments, int charOffset,
- {
- Member candidate,
+ {Member candidate,
bool isSuper,
required UnresolvedKind kind,
bool isStatic,
@@ -133,7 +132,7 @@
Constness constness,
{bool isTypeArgumentsInForest = false,
TypeDeclarationBuilder? typeAliasBuilder,
- required UnresolvedKind unresolvedKind});
+ required UnresolvedKind unresolvedKind});
UnresolvedType validateTypeUse(UnresolvedType unresolved,
{required bool nonInstanceAccessIsError,
@@ -144,11 +143,9 @@
Expression buildProblemErrorIfConst(
Message message, int charOffset, int length);
- Message warnUnresolvedGet(Name name, int charOffset,
- {bool isSuper: false});
+ Message warnUnresolvedGet(Name name, int charOffset, {bool isSuper: false});
- Message warnUnresolvedSet(Name name, int charOffset,
- {bool isSuper: false});
+ Message warnUnresolvedSet(Name name, int charOffset, {bool isSuper: false});
Message warnUnresolvedMethod(Name name, int charOffset,
{bool isSuper: false});
@@ -187,6 +184,30 @@
void registerVariableAssignment(VariableDeclaration variable);
TypeEnvironment get typeEnvironment;
+
+ /// If explicit instantiations are support in this library, create an
+ /// instantiation of the result of [receiverFunction] using
+ /// [typeArguments] followed by an invocation of [name] with [arguments].
+ /// Otherwise create the errors for the corresponding invalid implicit
+ /// creation expression.
+ ///
+ /// This is used to handle the syntax for implicit creation expression as
+ /// an explicit instantiation with and invocation. For instance
+ ///
+ /// a.b<c>.d()
+ ///
+ /// The parser treat the as the constructor invocation of constructor `d` on
+ /// class `b` with prefix `a` with type arguments `<c>`, but with explicit
+ /// instantiation it could instead be the explicit instantiation of expression
+ /// `a.b` with type arguments `<c>` followed by and invocation of `d()`.
+ Expression createInstantiationAndInvocation(
+ Expression Function() receiverFunction,
+ List<UnresolvedType>? typeArguments,
+ String className,
+ String constructorName,
+ Arguments arguments,
+ {required int instantiationOffset,
+ required int invocationOffset});
}
/// Checks that a generic [typedef] for a generic class.
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index 3cc531a..b6b2ccb 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -403,7 +403,7 @@
}
}
}
- } else {
+ } else if (operandType is! InvalidType) {
if (!inferrer.isTopLevel) {
result = inferrer.helper!.buildProblem(
templateInstantiationNonGenericFunctionType.withArguments(
@@ -924,8 +924,8 @@
return const StatementInferenceResult();
}
- ExpressionInferenceResult visitFactoryConstructorInvocationJudgment(
- FactoryConstructorInvocationJudgment node, DartType typeContext) {
+ ExpressionInferenceResult visitFactoryConstructorInvocation(
+ FactoryConstructorInvocation node, DartType typeContext) {
bool hadExplicitTypeArguments = hasExplicitTypeArguments(node.arguments);
FunctionType functionType = node.target.function
@@ -954,8 +954,8 @@
result.inferredType, result.applyResult(resultNode));
}
- ExpressionInferenceResult visitTypeAliasedConstructorInvocationJudgment(
- TypeAliasedConstructorInvocationJudgment node, DartType typeContext) {
+ ExpressionInferenceResult visitTypeAliasedConstructorInvocation(
+ TypeAliasedConstructorInvocation node, DartType typeContext) {
assert(getExplicitTypeArguments(node.arguments) == null);
Typedef typedef = node.typeAliasBuilder.typedef;
FunctionType calleeType = node.target.function
@@ -979,8 +979,8 @@
result.inferredType, result.applyResult(resultNode));
}
- ExpressionInferenceResult visitTypeAliasedFactoryInvocationJudgment(
- TypeAliasedFactoryInvocationJudgment node, DartType typeContext) {
+ ExpressionInferenceResult visitTypeAliasedFactoryInvocation(
+ TypeAliasedFactoryInvocation node, DartType typeContext) {
assert(getExplicitTypeArguments(node.arguments) == null);
Typedef typedef = node.typeAliasBuilder.typedef;
FunctionType calleeType = node.target.function
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 c141da9..658e06a 100644
--- a/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/internal_ast.dart
@@ -487,6 +487,21 @@
int _explicitTypeArgumentCount;
+ ArgumentsImpl.internal(
+ {required List<Expression> positional,
+ required List<DartType>? types,
+ required List<NamedExpression>? named,
+ required int extensionTypeParameterCount,
+ required int explicitExtensionTypeArgumentCount,
+ required int? extensionTypeArgumentOffset,
+ required int explicitTypeArgumentCount})
+ : this._extensionTypeParameterCount = extensionTypeParameterCount,
+ this._explicitExtensionTypeArgumentCount =
+ explicitExtensionTypeArgumentCount,
+ this._extensionTypeArgumentOffset = extensionTypeArgumentOffset,
+ this._explicitTypeArgumentCount = explicitTypeArgumentCount,
+ super(positional, types: types, named: named);
+
ArgumentsImpl(List<Expression> positional,
{List<DartType>? types, List<NamedExpression>? named})
: _explicitTypeArgumentCount = types?.length ?? 0,
@@ -519,6 +534,19 @@
..addAll(
_normalizeTypeArguments(typeParameterCount, typeArguments)));
+ static ArgumentsImpl clone(ArgumentsImpl node, List<Expression> positional,
+ List<NamedExpression> named, List<DartType> types) {
+ return new ArgumentsImpl.internal(
+ positional: positional,
+ named: named,
+ types: types,
+ extensionTypeParameterCount: node._extensionTypeParameterCount,
+ explicitExtensionTypeArgumentCount:
+ node._explicitExtensionTypeArgumentCount,
+ explicitTypeArgumentCount: node._explicitTypeArgumentCount,
+ extensionTypeArgumentOffset: node._extensionTypeArgumentOffset);
+ }
+
static List<DartType> _normalizeTypeArguments(
int length, List<DartType> arguments) {
if (arguments.isEmpty && length > 0) {
@@ -729,23 +757,23 @@
/// Shadow object for [StaticInvocation] when the procedure being invoked is a
/// factory constructor.
-class FactoryConstructorInvocationJudgment extends StaticInvocation
+class FactoryConstructorInvocation extends StaticInvocation
implements ExpressionJudgment {
bool hasBeenInferred = false;
- FactoryConstructorInvocationJudgment(Procedure target, Arguments arguments,
+ FactoryConstructorInvocation(Procedure target, Arguments arguments,
{bool isConst: false})
: super(target, arguments, isConst: isConst);
@override
ExpressionInferenceResult acceptInference(
InferenceVisitor visitor, DartType typeContext) {
- return visitor.visitFactoryConstructorInvocationJudgment(this, typeContext);
+ return visitor.visitFactoryConstructorInvocation(this, typeContext);
}
@override
String toString() {
- return "FactoryConstructorInvocationJudgment(${toStringInternal()})";
+ return "FactoryConstructorInvocation(${toStringInternal()})";
}
@override
@@ -767,12 +795,12 @@
/// Shadow object for [ConstructorInvocation] when the procedure being invoked
/// is a type aliased constructor.
-class TypeAliasedConstructorInvocationJudgment extends ConstructorInvocation
+class TypeAliasedConstructorInvocation extends ConstructorInvocation
implements ExpressionJudgment {
bool hasBeenInferred = false;
final TypeAliasBuilder typeAliasBuilder;
- TypeAliasedConstructorInvocationJudgment(
+ TypeAliasedConstructorInvocation(
this.typeAliasBuilder, Constructor target, Arguments arguments,
{bool isConst: false})
: super(target, arguments, isConst: isConst);
@@ -780,13 +808,12 @@
@override
ExpressionInferenceResult acceptInference(
InferenceVisitor visitor, DartType typeContext) {
- return visitor.visitTypeAliasedConstructorInvocationJudgment(
- this, typeContext);
+ return visitor.visitTypeAliasedConstructorInvocation(this, typeContext);
}
@override
String toString() {
- return "TypeAliasedConstructorInvocationJudgment(${toStringInternal()})";
+ return "TypeAliasedConstructorInvocation(${toStringInternal()})";
}
@override
@@ -797,12 +824,12 @@
/// Shadow object for [StaticInvocation] when the procedure being invoked is a
/// type aliased factory constructor.
-class TypeAliasedFactoryInvocationJudgment extends StaticInvocation
+class TypeAliasedFactoryInvocation extends StaticInvocation
implements ExpressionJudgment {
bool hasBeenInferred = false;
final TypeAliasBuilder typeAliasBuilder;
- TypeAliasedFactoryInvocationJudgment(
+ TypeAliasedFactoryInvocation(
this.typeAliasBuilder, Procedure target, Arguments arguments,
{bool isConst: false})
: super(target, arguments, isConst: isConst);
@@ -810,12 +837,12 @@
@override
ExpressionInferenceResult acceptInference(
InferenceVisitor visitor, DartType typeContext) {
- return visitor.visitTypeAliasedFactoryInvocationJudgment(this, typeContext);
+ return visitor.visitTypeAliasedFactoryInvocation(this, typeContext);
}
@override
String toString() {
- return "TypeAliasedConstructorInvocationJudgment(${toStringInternal()})";
+ return "TypeAliasedConstructorInvocation(${toStringInternal()})";
}
@override
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
index 7c62ddb..c82741e 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -83,7 +83,7 @@
ArgumentsImpl,
Cascade,
DeferredCheck,
- FactoryConstructorInvocationJudgment,
+ FactoryConstructorInvocation,
FunctionDeclarationImpl,
InvalidSuperInitializerJudgment,
LoadLibraryTearOff,
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
index 01268b4..248ecdd 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -5,7 +5,13 @@
library fasta.diet_listener;
import 'package:_fe_analyzer_shared/src/parser/parser.dart'
- show Assert, DeclarationKind, MemberKind, Parser, optional;
+ show
+ Assert,
+ ConstructorReferenceContext,
+ DeclarationKind,
+ MemberKind,
+ Parser,
+ optional;
import 'package:_fe_analyzer_shared/src/parser/quote.dart' show unescapeString;
@@ -578,8 +584,8 @@
}
@override
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
debugEvent("ConstructorReference");
popIfNotNull(periodBeforeName);
}
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 1cbd3d7..8ddf28c 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -7,6 +7,7 @@
import 'package:_fe_analyzer_shared/src/parser/parser.dart'
show
Assert,
+ ConstructorReferenceContext,
DeclarationKind,
FormalParameterKind,
IdentifierContext,
@@ -2028,8 +2029,8 @@
}
@override
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
debugEvent("ConstructorReference");
popIfNotNull(periodBeforeName); // charOffset.
String? suffix = popIfNotNull(periodBeforeName) as String?;
diff --git a/pkg/front_end/lib/src/fasta/source/value_kinds.dart b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
index 047d3c6..50543f0 100644
--- a/pkg/front_end/lib/src/fasta/source/value_kinds.dart
+++ b/pkg/front_end/lib/src/fasta/source/value_kinds.dart
@@ -32,15 +32,23 @@
import '../source/outline_builder.dart' as type;
+import '../constant_context.dart' as type;
+
class ValueKinds {
+ static const ValueKind AnnotationList =
+ const SingleValueKind<List<type.Expression>>();
static const ValueKind AnnotationListOrNull =
const SingleValueKind<List<type.Expression>>(NullValue.Metadata);
static const ValueKind Arguments = const SingleValueKind<type.Arguments>();
static const ValueKind ArgumentsOrNull =
const SingleValueKind<type.Arguments>(NullValue.Arguments);
+ static const ValueKind ConstantContext =
+ const SingleValueKind<type.ConstantContext>();
static const ValueKind Expression = const SingleValueKind<type.Expression>();
static const ValueKind ExpressionOrNull =
const SingleValueKind<type.Expression>(NullValue.Expression);
+ static const ValueKind FieldInitializerOrNull =
+ const SingleValueKind<type.Expression>(NullValue.FieldInitializer);
static const ValueKind Identifier = const SingleValueKind<type.Identifier>();
static const ValueKind IdentifierOrNull =
const SingleValueKind<type.Identifier>(NullValue.Identifier);
@@ -80,9 +88,13 @@
static const ValueKind QualifiedName =
const SingleValueKind<type.QualifiedName>();
static const ValueKind Statement = const SingleValueKind<type.Statement>();
+ static const ValueKind StatementOrNull =
+ const SingleValueKind<type.Statement>(NullValue.Block);
static const ValueKind Token = const SingleValueKind<type.Token>();
static const ValueKind TokenOrNull =
const SingleValueKind<type.Token>(NullValue.Token);
+ static const ValueKind TypeOrNull =
+ const SingleValueKind<type.UnresolvedType>(NullValue.Type);
static const ValueKind TypeArguments =
const SingleValueKind<List<type.UnresolvedType>>();
static const ValueKind TypeArgumentsOrNull =
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
index 340943c..55b9fb2 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
@@ -4,6 +4,7 @@
import 'package:_fe_analyzer_shared/src/parser/assert.dart';
import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
@@ -348,14 +349,15 @@
seen(data);
}
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
DirectParserASTContentConstructorReferenceEnd data =
new DirectParserASTContentConstructorReferenceEnd(
DirectParserASTType.END,
start: start,
periodBeforeName: periodBeforeName,
- endToken: endToken);
+ endToken: endToken,
+ constructorReferenceContext: constructorReferenceContext);
seen(data);
}
@@ -3103,15 +3105,20 @@
final Token start;
final Token? periodBeforeName;
final Token endToken;
+ final ConstructorReferenceContext constructorReferenceContext;
DirectParserASTContentConstructorReferenceEnd(DirectParserASTType type,
- {required this.start, this.periodBeforeName, required this.endToken})
+ {required this.start,
+ this.periodBeforeName,
+ required this.endToken,
+ required this.constructorReferenceContext})
: super("ConstructorReference", type);
Map<String, Object?> get deprecatedArguments => {
"start": start,
"periodBeforeName": periodBeforeName,
"endToken": endToken,
+ "constructorReferenceContext": constructorReferenceContext,
};
}
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
index 38d9d89..2d94d81 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
@@ -25,7 +25,7 @@
beginConstructorReference(C)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(C, null, ()
+ endConstructorReference(C, null, (, ConstructorReferenceContext.New)
beginArguments(()
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
handleIdentifier(, expression)
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
index 1367408..e2d55ca 100644
--- a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
@@ -40,14 +40,14 @@
parseNewExpression({)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
parseQualifiedRestOpt(C, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(C, null, ()
+ listener: endConstructorReference(C, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(C)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
index 6514ad1..23e29a3 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.expect
@@ -124,7 +124,7 @@
handleType(C, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(A, null, ()
+ endConstructorReference(A, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
index 9dfd6b8..f79f784 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_22314.dart.intertwined.expect
@@ -203,7 +203,7 @@
parseNewExpression(=>)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(A, constructorReference)
listener: beginConstructorReference(A)
@@ -218,7 +218,7 @@
listener: handleType(C, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(A, null, ()
+ listener: endConstructorReference(A, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
index 0291006..a6a2fda 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.expect
@@ -154,7 +154,7 @@
handleType(List, null)
endTypeArguments(2, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Map, null, ()
+ endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -182,7 +182,7 @@
beginConstructorReference(Map)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Map, null, ()
+ endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
index 3d2e81d..dcf5d7e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_const.dart.intertwined.expect
@@ -191,7 +191,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)
@@ -209,7 +209,7 @@
listener: handleType(List, null)
listener: endTypeArguments(2, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Map, null, ()
+ listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@@ -247,14 +247,14 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+ parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)
parseQualifiedRestOpt(Map, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Map, null, ()
+ listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(Map)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
index 0f278c9..50b89e2 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.expect
@@ -133,7 +133,7 @@
handleType(List, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(List, null, ()
+ endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -158,7 +158,7 @@
beginConstructorReference(List)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(List, null, ()
+ endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
index 84d3ed8..cce2e11 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_const.dart.intertwined.expect
@@ -178,7 +178,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)
@@ -193,7 +193,7 @@
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(List, null, ()
+ listener: endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@@ -227,14 +227,14 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+ parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)
parseQualifiedRestOpt(List, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(List, null, ()
+ listener: endConstructorReference(List, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(List)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
index 447db69..afbfdbd 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.expect
@@ -140,7 +140,7 @@
handleType(List, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(List, null, ()
+ endConstructorReference(List, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -165,7 +165,7 @@
beginConstructorReference(List)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(List, null, ()
+ endConstructorReference(List, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
index a8ab4b7..a698701 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_list_new.dart.intertwined.expect
@@ -181,7 +181,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)
@@ -196,7 +196,7 @@
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(List, null, ()
+ listener: endConstructorReference(List, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@@ -231,14 +231,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+ parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(List, constructorReference)
listener: beginConstructorReference(List)
parseQualifiedRestOpt(List, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(List, null, ()
+ listener: endConstructorReference(List, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(List)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
index c1b095d..2010b9a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.expect
@@ -161,7 +161,7 @@
handleType(List, null)
endTypeArguments(2, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Map, null, ()
+ endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -189,7 +189,7 @@
beginConstructorReference(Map)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Map, null, ()
+ endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
index faa270d..61610fe1 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_new.dart.intertwined.expect
@@ -194,7 +194,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)
@@ -212,7 +212,7 @@
listener: handleType(List, null)
listener: endTypeArguments(2, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Map, null, ()
+ listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@@ -251,14 +251,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+ parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Map, constructorReference)
listener: beginConstructorReference(Map)
parseQualifiedRestOpt(Map, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Map, null, ()
+ listener: endConstructorReference(Map, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Map)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
index 7d01b7d5..4fa9c10 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.expect
@@ -133,7 +133,7 @@
handleType(List, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Set, null, ()
+ endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -158,7 +158,7 @@
beginConstructorReference(Set)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Set, null, ()
+ endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
index 7f9a6a5..bce083f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_const.dart.intertwined.expect
@@ -169,7 +169,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)
@@ -184,7 +184,7 @@
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Set, null, ()
+ listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@@ -218,14 +218,14 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, Instance of 'NoTypeParamOrArg')
+ parseConstructorReference(const, ConstructorReferenceContext.Const, Instance of 'NoTypeParamOrArg')
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)
parseQualifiedRestOpt(Set, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Set, null, ()
+ listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(Set)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
index 1df0d1b..8259775 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.expect
@@ -140,7 +140,7 @@
handleType(List, null)
endTypeArguments(1, <, >)
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Set, null, ()
+ endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -165,7 +165,7 @@
beginConstructorReference(Set)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Set, null, ()
+ endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
index 264c4d0..ae71f89 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_45251_set_new.dart.intertwined.expect
@@ -172,7 +172,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)
@@ -187,7 +187,7 @@
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Set, null, ()
+ listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(>)
parseArgumentsRest(()
listener: beginArguments(()
@@ -222,14 +222,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, Instance of 'NoTypeParamOrArg')
+ parseConstructorReference(new, ConstructorReferenceContext.New, Instance of 'NoTypeParamOrArg')
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Set, constructorReference)
listener: beginConstructorReference(Set)
parseQualifiedRestOpt(Set, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Set, null, ()
+ listener: endConstructorReference(Set, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Set)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
index 8fcefc7..39204f7 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect
@@ -1065,7 +1065,7 @@
beginConstructorReference()
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(, null, ()
+ endConstructorReference(, null, (, ConstructorReferenceContext.Const)
beginArguments(()
handleIdentifier(x, expression)
handleNoTypeArguments(-)
@@ -3049,7 +3049,7 @@
beginConstructorReference()
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(, null, ()
+ endConstructorReference(, null, (, ConstructorReferenceContext.New)
beginArguments(()
handleIdentifier(x, expression)
handleNoTypeArguments(-)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
index 25e2025..983ce33 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect
@@ -1465,7 +1465,7 @@
parsePrimary(return, expression)
parseConstExpression(return)
listener: beginConstExpression(const)
- parseConstructorReference(const, null)
+ parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -1476,7 +1476,7 @@
parseQualifiedRestOpt(, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(, null, ()
+ listener: endConstructorReference(, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments()
parseArgumentsRest(()
listener: beginArguments(()
@@ -6484,7 +6484,7 @@
parseNewExpression(return)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -6495,7 +6495,7 @@
parseQualifiedRestOpt(, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(, null, ()
+ listener: endConstructorReference(, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments()
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
index 0c446fc..cca2b0b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect
@@ -1035,7 +1035,7 @@
beginConstructorReference()
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(, null, ()
+ endConstructorReference(, null, (, ConstructorReferenceContext.Const)
beginArguments(()
handleIdentifier(x, expression)
handleNoTypeArguments(-)
@@ -2987,7 +2987,7 @@
beginConstructorReference()
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(, null, ()
+ endConstructorReference(, null, (, ConstructorReferenceContext.New)
beginArguments(()
handleIdentifier(x, expression)
handleNoTypeArguments(-)
diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
index 3e3f317..4b6c26a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect
@@ -1401,7 +1401,7 @@
parsePrimary(return, expression)
parseConstExpression(return)
listener: beginConstExpression(const)
- parseConstructorReference(const, null)
+ parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -1412,7 +1412,7 @@
parseQualifiedRestOpt(, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(, null, ()
+ listener: endConstructorReference(, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments()
parseArgumentsRest(()
listener: beginArguments(()
@@ -6291,7 +6291,7 @@
parseNewExpression(return)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], messageOnToken: null)
reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
@@ -6302,7 +6302,7 @@
parseQualifiedRestOpt(, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(, null, ()
+ listener: endConstructorReference(, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments()
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/extension_named_type.dart.expect b/pkg/front_end/parser_testcases/extension_named_type.dart.expect
index 1d63845..a502ee7 100644
--- a/pkg/front_end/parser_testcases/extension_named_type.dart.expect
+++ b/pkg/front_end/parser_testcases/extension_named_type.dart.expect
@@ -68,7 +68,7 @@
beginConstructorReference(A)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(A, null, ()
+ endConstructorReference(A, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect b/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
index ac6be71..dc87b68 100644
--- a/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extension_named_type.dart.intertwined.expect
@@ -139,14 +139,14 @@
parseNewExpression(()
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(A, constructorReference)
listener: beginConstructorReference(A)
parseQualifiedRestOpt(A, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(A, null, ()
+ listener: endConstructorReference(A, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(A)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
index b960510..9e0f65c 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.expect
@@ -425,7 +425,7 @@
handleType(b, null)
endTypeArguments(2, <, >)
handleIdentifier(toString, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(f, ., ()
+ endConstructorReference(f, ., (, ConstructorReferenceContext.Implicit)
beginArguments(()
endArguments(0, (, ))
endImplicitCreationExpression(=)
diff --git a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
index 9b580ea..dff1e80 100644
--- a/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_reference_following_token.dart.intertwined.expect
@@ -717,7 +717,7 @@
parseUnaryExpression(=, true)
parseImplicitCreationExpression(=, Instance of 'ComplexTypeParamOrArgInfo')
listener: beginImplicitCreationExpression(=)
- parseConstructorReference(=, Instance of 'ComplexTypeParamOrArgInfo')
+ parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'ComplexTypeParamOrArgInfo')
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(f, constructorReference)
listener: beginConstructorReference(f)
@@ -732,7 +732,7 @@
listener: endTypeArguments(2, <, >)
ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
listener: handleIdentifier(toString, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(f, ., ()
+ listener: endConstructorReference(f, ., (, ConstructorReferenceContext.Implicit)
parseConstructorInvocationArguments(toString)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
index da22a5b..f914b42 100644
--- a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
+++ b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.expect
@@ -193,7 +193,7 @@
handleQualified(.)
handleNoTypeArguments(;)
handleNoConstructorReferenceContinuationAfterTypeArguments(;)
- endConstructorReference(C, null, ;)
+ endConstructorReference(C, null, ;, ConstructorReferenceContext.RedirectingFactory)
endRedirectingFactoryBody(=, ;)
endClassFactoryMethod(factory, factory, ;)
endMember()
@@ -218,7 +218,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(C, ., ;)
+ endConstructorReference(C, ., ;, ConstructorReferenceContext.RedirectingFactory)
endRedirectingFactoryBody(=, ;)
endClassFactoryMethod(factory, factory, ;)
endMember()
@@ -241,7 +241,7 @@
handleNoTypeArguments(.)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ;)
+ endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
endRedirectingFactoryBody(=, ;)
endClassFactoryMethod(factory, factory, ;)
endMember()
@@ -268,7 +268,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ;)
+ endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
endRedirectingFactoryBody(=, ;)
endClassFactoryMethod(factory, factory, ;)
endMember()
@@ -344,7 +344,7 @@
handleQualified(.)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(C, null, ()
+ endConstructorReference(C, null, (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -368,7 +368,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(C, ., ()
+ endConstructorReference(C, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -390,7 +390,7 @@
handleNoTypeArguments(.)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ()
+ endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -416,7 +416,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ()
+ endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
beginArguments(()
endArguments(0, (, ))
endConstExpression(const)
@@ -438,7 +438,7 @@
handleQualified(.)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(C, null, ()
+ endConstructorReference(C, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -462,7 +462,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(C, ., ()
+ endConstructorReference(C, ., (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -484,7 +484,7 @@
handleNoTypeArguments(.)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ()
+ endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -510,7 +510,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ()
+ endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -555,7 +555,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(C, ., ()
+ endConstructorReference(C, ., (, ConstructorReferenceContext.Implicit)
beginArguments(()
endArguments(0, (, ))
endImplicitCreationExpression(=)
@@ -607,7 +607,7 @@
endTypeArguments(1, <, >)
handleNewAsIdentifier(new)
handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- endConstructorReference(prefix, ., ()
+ endConstructorReference(prefix, ., (, ConstructorReferenceContext.Implicit)
beginArguments(()
endArguments(0, (, ))
endImplicitCreationExpression(=)
diff --git a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
index 318a32c..d88fc9d 100644
--- a/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/new_as_identifier.dart.intertwined.expect
@@ -331,7 +331,7 @@
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
- parseConstructorReference(=, null)
+ parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -344,7 +344,7 @@
listener: handleQualified(.)
listener: handleNoTypeArguments(;)
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(;)
- listener: endConstructorReference(C, null, ;)
+ listener: endConstructorReference(C, null, ;, ConstructorReferenceContext.RedirectingFactory)
ensureSemicolon(new)
listener: endRedirectingFactoryBody(=, ;)
listener: endClassFactoryMethod(factory, factory, ;)
@@ -376,7 +376,7 @@
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
- parseConstructorReference(=, null)
+ parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -390,7 +390,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(C, ., ;)
+ listener: endConstructorReference(C, ., ;, ConstructorReferenceContext.RedirectingFactory)
ensureSemicolon(new)
listener: endRedirectingFactoryBody(=, ;)
listener: endClassFactoryMethod(factory, factory, ;)
@@ -422,7 +422,7 @@
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
- parseConstructorReference(=, null)
+ parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -436,7 +436,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ;)
+ listener: endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
ensureSemicolon(new)
listener: endRedirectingFactoryBody(=, ;)
listener: endClassFactoryMethod(factory, factory, ;)
@@ -468,7 +468,7 @@
inPlainSync()
parseRedirectingFactoryBody())
listener: beginRedirectingFactoryBody(=)
- parseConstructorReference(=, null)
+ parseConstructorReference(=, ConstructorReferenceContext.RedirectingFactory, null)
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -486,7 +486,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ;)
+ listener: endConstructorReference(prefix, ., ;, ConstructorReferenceContext.RedirectingFactory)
ensureSemicolon(new)
listener: endRedirectingFactoryBody(=, ;)
listener: endClassFactoryMethod(factory, factory, ;)
@@ -639,7 +639,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, null)
+ parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -652,7 +652,7 @@
listener: handleQualified(.)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(C, null, ()
+ listener: endConstructorReference(C, null, (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -680,7 +680,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, null)
+ parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -694,7 +694,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(C, ., ()
+ listener: endConstructorReference(C, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -722,7 +722,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, null)
+ parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -736,7 +736,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ()
+ listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -764,7 +764,7 @@
parsePrimary(=, expression)
parseConstExpression(=)
listener: beginConstExpression(const)
- parseConstructorReference(const, null)
+ parseConstructorReference(const, ConstructorReferenceContext.Const, null)
ensureIdentifier(const, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -782,7 +782,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ()
+ listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.Const)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -811,7 +811,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -824,7 +824,7 @@
listener: handleQualified(.)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(C, null, ()
+ listener: endConstructorReference(C, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -853,7 +853,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -867,7 +867,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(C, ., ()
+ listener: endConstructorReference(C, ., (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -896,7 +896,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -910,7 +910,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ()
+ listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -939,7 +939,7 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -957,7 +957,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ()
+ listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -1030,7 +1030,7 @@
parseUnaryExpression(=, true)
parseImplicitCreationExpression(=, Instance of 'SimpleTypeArgument1')
listener: beginImplicitCreationExpression(=)
- parseConstructorReference(=, Instance of 'SimpleTypeArgument1')
+ parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1')
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(C, constructorReference)
listener: beginConstructorReference(C)
@@ -1044,7 +1044,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(C, ., ()
+ listener: endConstructorReference(C, ., (, ConstructorReferenceContext.Implicit)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
@@ -1128,7 +1128,7 @@
parseUnaryExpression(=, true)
parseImplicitCreationExpression(=, Instance of 'SimpleTypeArgument1')
listener: beginImplicitCreationExpression(=)
- parseConstructorReference(=, Instance of 'SimpleTypeArgument1')
+ parseConstructorReference(=, ConstructorReferenceContext.Implicit, Instance of 'SimpleTypeArgument1')
ensureIdentifier(=, constructorReference)
listener: handleIdentifier(prefix, constructorReference)
listener: beginConstructorReference(prefix)
@@ -1146,7 +1146,7 @@
rewriter()
listener: handleNewAsIdentifier(new)
listener: handleIdentifier(new, constructorReferenceContinuationAfterTypeArguments)
- listener: endConstructorReference(prefix, ., ()
+ listener: endConstructorReference(prefix, ., (, ConstructorReferenceContext.Implicit)
parseConstructorInvocationArguments(new)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
index 4db9fb9..1295e65 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.expect
@@ -24,7 +24,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -67,7 +67,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -83,7 +83,7 @@
beginConstructorReference(Y)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Y, null, ()
+ endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
index b245255..e5b3775 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
@@ -52,14 +52,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -182,14 +182,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -228,14 +228,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)
parseQualifiedRestOpt(Y, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Y, null, ()
+ listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Y)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
index d7696f5..e8b4997 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.expect
@@ -24,7 +24,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -67,7 +67,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -83,7 +83,7 @@
beginConstructorReference(Y)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Y, null, ()
+ endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
index 43bc341..ef86be8 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
@@ -52,14 +52,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -182,14 +182,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -228,14 +228,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)
parseQualifiedRestOpt(Y, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Y, null, ()
+ listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Y)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
index ec54bee..4e2dc09 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.expect
@@ -24,7 +24,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -67,7 +67,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -83,7 +83,7 @@
beginConstructorReference(Y)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Y, null, ()
+ endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
index 0a4179e..b40afe0 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
@@ -52,14 +52,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -182,14 +182,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -228,14 +228,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)
parseQualifiedRestOpt(Y, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Y, null, ()
+ listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Y)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
index 7ef46c8..407ba51 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.expect
@@ -24,7 +24,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -67,7 +67,7 @@
beginConstructorReference(X)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(X, null, ()
+ endConstructorReference(X, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
@@ -83,7 +83,7 @@
beginConstructorReference(Y)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Y, null, ()
+ endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
index 0fd59b4..5bab2cc 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
@@ -52,14 +52,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -182,14 +182,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(X, constructorReference)
listener: beginConstructorReference(X)
parseQualifiedRestOpt(X, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(X, null, ()
+ listener: endConstructorReference(X, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(X)
parseArgumentsRest(()
listener: beginArguments(()
@@ -228,14 +228,14 @@
parseNewExpression(;)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Y, constructorReference)
listener: beginConstructorReference(Y)
parseQualifiedRestOpt(Y, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Y, null, ()
+ listener: endConstructorReference(Y, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Y)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
index 3854dcc..e6983f9 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.expect
@@ -86,7 +86,7 @@
beginConstructorReference(Foo)
handleNoTypeArguments(()
handleNoConstructorReferenceContinuationAfterTypeArguments(()
- endConstructorReference(Foo, null, ()
+ endConstructorReference(Foo, null, (, ConstructorReferenceContext.New)
beginArguments(()
endArguments(0, (, ))
endNewExpression(new)
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
index 158a83e..012f061 100644
--- a/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/no-triple-shift/define_triple_shift_method.dart.intertwined.expect
@@ -131,14 +131,14 @@
parseNewExpression(=)
isNextIdentifier(new)
listener: beginNewExpression(new)
- parseConstructorReference(new, null)
+ parseConstructorReference(new, ConstructorReferenceContext.New, null)
ensureIdentifier(new, constructorReference)
listener: handleIdentifier(Foo, constructorReference)
listener: beginConstructorReference(Foo)
parseQualifiedRestOpt(Foo, constructorReferenceContinuation)
listener: handleNoTypeArguments(()
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
- listener: endConstructorReference(Foo, null, ()
+ listener: endConstructorReference(Foo, null, (, ConstructorReferenceContext.New)
parseConstructorInvocationArguments(Foo)
parseArgumentsRest(()
listener: beginArguments(()
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index cb76069..3e5652c 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -4,6 +4,7 @@
import 'package:_fe_analyzer_shared/src/parser/assert.dart';
import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
@@ -324,8 +325,8 @@
indent++;
}
- void endConstructorReference(
- Token start, Token? periodBeforeName, Token endToken) {
+ void endConstructorReference(Token start, Token? periodBeforeName,
+ Token endToken, ConstructorReferenceContext constructorReferenceContext) {
indent--;
seen(start);
seen(periodBeforeName);
@@ -333,7 +334,8 @@
doPrint('endConstructorReference('
'$start, '
'$periodBeforeName, '
- '$endToken)');
+ '$endToken, '
+ '$constructorReferenceContext)');
}
void beginDoWhileStatement(Token token) {
diff --git a/pkg/front_end/test/parser_test_listener_creator.dart b/pkg/front_end/test/parser_test_listener_creator.dart
index b4f5fc9..4ab6ba5 100644
--- a/pkg/front_end/test/parser_test_listener_creator.dart
+++ b/pkg/front_end/test/parser_test_listener_creator.dart
@@ -45,6 +45,7 @@
import 'package:_fe_analyzer_shared/src/parser/assert.dart';
import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index 79afa41..dad75c5 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -4,6 +4,7 @@
import 'package:_fe_analyzer_shared/src/parser/assert.dart';
import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/directive_context.dart';
import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
@@ -1162,10 +1163,16 @@
return result;
}
- Token parseConstructorReference(Token token, [TypeParamOrArgInfo? typeArg]) {
- doPrint('parseConstructorReference(' '$token, ' '$typeArg)');
+ Token parseConstructorReference(
+ Token token, ConstructorReferenceContext constructorReferenceContext,
+ [TypeParamOrArgInfo? typeArg]) {
+ doPrint('parseConstructorReference('
+ '$token, '
+ '$constructorReferenceContext, '
+ '$typeArg)');
indent++;
- var result = super.parseConstructorReference(token, typeArg);
+ var result = super
+ .parseConstructorReference(token, constructorReferenceContext, typeArg);
indent--;
return result;
}
diff --git a/pkg/front_end/test/parser_test_parser_creator.dart b/pkg/front_end/test/parser_test_parser_creator.dart
index 806d113..e7a826f 100644
--- a/pkg/front_end/test/parser_test_parser_creator.dart
+++ b/pkg/front_end/test/parser_test_parser_creator.dart
@@ -44,6 +44,7 @@
import 'package:_fe_analyzer_shared/src/parser/assert.dart';
import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/directive_context.dart';
import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
diff --git a/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart b/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart
index 2021c88..e5a47ce 100644
--- a/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart
+++ b/pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart
@@ -325,7 +325,7 @@
cls.addProcedure(factoryConstructor);
testExpression(
- new FactoryConstructorInvocationJudgment(
+ new FactoryConstructorInvocation(
factoryConstructor, new ArgumentsImpl([])),
'''
new Class()''',
@@ -333,7 +333,7 @@
new library test:dummy::Class()''');
testExpression(
- new FactoryConstructorInvocationJudgment(
+ new FactoryConstructorInvocation(
factoryConstructor,
new ArgumentsImpl([new IntLiteral(0)],
types: [const VoidType()],
@@ -345,7 +345,7 @@
factoryConstructor.name = new Name('foo');
testExpression(
- new FactoryConstructorInvocationJudgment(
+ new FactoryConstructorInvocation(
factoryConstructor,
new ArgumentsImpl([new IntLiteral(0)],
types: [const VoidType()],
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
index 100d155..2c377ec 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
@@ -1,50 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.named<int>.toString();
-// ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-// A.named<int>.toString();
-// ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<int>.applyAndPrint([2]);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<String>.applyAndPrint(['three']);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -73,42 +27,31 @@
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
- A.named<int>.toString();
- ^^^^^^^^";
+ (#C4).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- self::FunctionApplier|applyAndPrint(#C4, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C5, <core::Object?>["three"]);
- (#C6).{core::Object::toString}(){() → core::String};
- (#C7).{core::Object::toString}(){() → core::String};
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C9, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C10, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+ (#C3).{core::Object::toString}(){() → core::String};
+ (#C4).{core::Object::toString}(){() → core::String};
}
constants {
#C1 = <dynamic>[]
#C2 = core::_ImmutableMap<core::Symbol, dynamic> {_kvPairs:#C1}
- #C3 = static-tearoff self::A::n
- #C4 = instantiation self::A::n <core::int>
- #C5 = instantiation self::A::n <core::String>
- #C6 = constructor-tearoff self::A::named
- #C7 = instantiation self::A::named <core::int>
+ #C3 = constructor-tearoff self::A::named
+ #C4 = instantiation self::A::named <core::int>
+ #C5 = static-tearoff self::A::n
+ #C6 = instantiation self::A::n <core::int>
+ #C7 = instantiation self::A::n <core::String>
+ #C8 = static-tearoff self::m
+ #C9 = instantiation self::m <core::int>
+ #C10 = instantiation self::m <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
index c514b30..67fea71 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
@@ -1,50 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.named<int>.toString();
-// ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-// A.named<int>.toString();
-// ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<int>.applyAndPrint([2]);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<String>.applyAndPrint(['three']);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -73,42 +27,31 @@
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
- A.named<int>.toString();
- ^^^^^^^^";
+ (#C4).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- self::FunctionApplier|applyAndPrint(#C4, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>("three"));
- (#C6).{core::Object::toString}(){() → core::String};
- (#C7).{core::Object::toString}(){() → core::String};
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C10, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+ (#C3).{core::Object::toString}(){() → core::String};
+ (#C4).{core::Object::toString}(){() → core::String};
}
constants {
#C1 = <dynamic>[]
#C2 = core::_ImmutableMap<core::Symbol, dynamic> {_kvPairs:#C1}
- #C3 = static-tearoff self::A::n
- #C4 = instantiation self::A::n <core::int>
- #C5 = instantiation self::A::n <core::String>
- #C6 = constructor-tearoff self::A::named
- #C7 = instantiation self::A::named <core::int>
+ #C3 = constructor-tearoff self::A::named
+ #C4 = instantiation self::A::named <core::int>
+ #C5 = static-tearoff self::A::n
+ #C6 = instantiation self::A::n <core::int>
+ #C7 = instantiation self::A::n <core::String>
+ #C8 = static-tearoff self::m
+ #C9 = instantiation self::m <core::int>
+ #C10 = instantiation self::m <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
index d900242..a112778 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
@@ -1,50 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.named<int>.toString();
-// ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-// A.named<int>.toString();
-// ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<int>.applyAndPrint([2]);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<String>.applyAndPrint(['three']);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -73,42 +27,31 @@
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
- A.named<int>.toString();
- ^^^^^^^^";
+ (#C4).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- self::FunctionApplier|applyAndPrint(#C4, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C5, <core::Object?>["three"]);
- (#C6).{core::Object::toString}(){() → core::String};
- (#C7).{core::Object::toString}(){() → core::String};
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C9, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C10, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+ (#C3).{core::Object::toString}(){() → core::String};
+ (#C4).{core::Object::toString}(){() → core::String};
}
constants {
#C1 = <dynamic>[]
#C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
- #C3 = static-tearoff self::A::n
- #C4 = instantiation self::A::n <core::int*>
- #C5 = instantiation self::A::n <core::String*>
- #C6 = constructor-tearoff self::A::named
- #C7 = instantiation self::A::named <core::int*>
+ #C3 = constructor-tearoff self::A::named
+ #C4 = instantiation self::A::named <core::int*>
+ #C5 = static-tearoff self::A::n
+ #C6 = instantiation self::A::n <core::int*>
+ #C7 = instantiation self::A::n <core::String*>
+ #C8 = static-tearoff self::m
+ #C9 = instantiation self::m <core::int*>
+ #C10 = instantiation self::m <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
index c7d67d3..ca0d633 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
@@ -1,50 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.named<int>.toString();
-// ^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
-// A.named<int>.toString();
-// ^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
-// a.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<int>.applyAndPrint([2]);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<String>.applyAndPrint(['three']);
-// ^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
-// A.n<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
-// self.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -73,42 +27,31 @@
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:16: Error: Couldn't find constructor 'A.named.toString'.
- A.named<int>.toString();
- ^^^^^^^^";
+ (#C4).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:29:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:30:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
- a.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:31:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:32:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
- A.n<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:33:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:34:3: Error: Couldn't find constructor 'm.applyAndPrint'.
- self.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- self::FunctionApplier|applyAndPrint(#C4, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>("three"));
- (#C6).{core::Object::toString}(){() → core::String};
- (#C7).{core::Object::toString}(){() → core::String};
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C10, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+ (#C3).{core::Object::toString}(){() → core::String};
+ (#C4).{core::Object::toString}(){() → core::String};
}
constants {
#C1 = <dynamic>[]
#C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
- #C3 = static-tearoff self::A::n
- #C4 = instantiation self::A::n <core::int*>
- #C5 = instantiation self::A::n <core::String*>
- #C6 = constructor-tearoff self::A::named
- #C7 = instantiation self::A::named <core::int*>
+ #C3 = constructor-tearoff self::A::named
+ #C4 = instantiation self::A::named <core::int*>
+ #C5 = static-tearoff self::A::n
+ #C6 = instantiation self::A::n <core::int*>
+ #C7 = instantiation self::A::n <core::String*>
+ #C8 = static-tearoff self::m
+ #C9 = instantiation self::m <core::int*>
+ #C10 = instantiation self::m <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
index 92ee53e..1c0eeb1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
@@ -1,11 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-// expect("${a<b, c>}, null", f(a<b, c>.toString()));
-// ^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -17,9 +10,7 @@
return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
}
static method main() → dynamic {
- self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
- expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
- ^^^^^^^^"));
+ self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
index 92ee53e..1c0eeb1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
@@ -1,11 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-// expect("${a<b, c>}, null", f(a<b, c>.toString()));
-// ^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -17,9 +10,7 @@
return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
}
static method main() → dynamic {
- self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
- expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
- ^^^^^^^^"));
+ self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
index a8a4b37..19cc640 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
@@ -1,11 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-// expect("${a<b, c>}, null", f(a<b, c>.toString()));
-// ^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -17,9 +10,7 @@
return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
}
static method main() → dynamic {
- self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
- expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
- ^^^^^^^^"));
+ self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
index a8a4b37..19cc640 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
@@ -1,11 +1,4 @@
library /*isNonNullableByDefault*/;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
-// expect("${a<b, c>}, null", f(a<b, c>.toString()));
-// ^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -17,9 +10,7 @@
return "a<${self::a::T1%}, ${self::a::T2%}>(${x})";
}
static method main() → dynamic {
- self::expect("${#C3}, null", self::f(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
- expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
- ^^^^^^^^"));
+ self::expect("${#C3}, null", self::f((#C3).{core::Object::toString}(){() → core::String}));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart
new file mode 100644
index 0000000..19d9464
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Test that redirecting factory invocations in default values are handled for
+// tear off parameters.
+
+class Class {
+ final List<Const> constants;
+
+ Class(
+ {this.constants = const [
+ Const.impl(),
+ Alias.impl(),
+ ImplAlias<String>()
+ ]});
+}
+
+typedef Alias = Const;
+
+abstract class Const {
+ const factory Const.impl() = _ConstImpl;
+}
+
+typedef ImplAlias<T extends num> = _ConstImpl<T>;
+
+class _ConstImpl<T> implements Const {
+ const _ConstImpl();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
new file mode 100644
index 0000000..c0c195f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+// ImplAlias<String>()
+// ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+ final field core::List<self::Const> constants;
+ constructor •({core::List<self::Const> constants = #C3}) → self::Class
+ : self::Class::constants = constants, super core::Object::•()
+ ;
+ static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+ return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static factory impl() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+ static method _#impl#tearOff() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/ {
+ const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+ return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+ return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants {
+ #C1 = self::_ConstImpl<dynamic> {}
+ #C2 = self::_ConstImpl<core::String> {}
+ #C3 = <self::Const>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
new file mode 100644
index 0000000..c0c195f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+// ImplAlias<String>()
+// ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+ final field core::List<self::Const> constants;
+ constructor •({core::List<self::Const> constants = #C3}) → self::Class
+ : self::Class::constants = constants, super core::Object::•()
+ ;
+ static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+ return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static factory impl() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+ static method _#impl#tearOff() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/ {
+ const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+ return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+ return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants {
+ #C1 = self::_ConstImpl<dynamic> {}
+ #C2 = self::_ConstImpl<core::String> {}
+ #C3 = <self::Const>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline.expect
new file mode 100644
index 0000000..2453b30
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline.expect
@@ -0,0 +1,23 @@
+class Class {
+ final List<Const> constants;
+ Class(
+ {this.constants = const [
+ Const.impl(),
+ Alias.impl(),
+ ImplAlias<String>()
+ ]});
+}
+
+typedef Alias = Const;
+
+abstract class Const {
+ const factory Const.impl() = _ConstImpl;
+}
+
+typedef ImplAlias<T extends num> = _ConstImpl<T>;
+
+class _ConstImpl<T> implements Const {
+ const _ConstImpl();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..615c4c2
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.textual_outline_modelled.expect
@@ -0,0 +1,21 @@
+abstract class Const {
+ const factory Const.impl() = _ConstImpl;
+}
+
+class Class {
+ Class(
+ {this.constants = const [
+ Const.impl(),
+ Alias.impl(),
+ ImplAlias<String>()
+ ]});
+ final List<Const> constants;
+}
+
+class _ConstImpl<T> implements Const {
+ const _ConstImpl();
+}
+
+main() {}
+typedef Alias = Const;
+typedef ImplAlias<T extends num> = _ConstImpl<T>;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
new file mode 100644
index 0000000..94ca00a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+// ImplAlias<String>()
+// ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+ final field core::List<self::Const> constants;
+ constructor •({core::List<self::Const> constants = #C3}) → self::Class
+ : self::Class::constants = constants, super core::Object::•()
+ ;
+ static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+ return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static factory impl() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+ static method _#impl#tearOff() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/ {
+ const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+ return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+ return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants {
+ #C1 = self::_ConstImpl<dynamic> {}
+ #C2 = self::_ConstImpl<core::String*> {}
+ #C3 = <self::Const*>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
new file mode 100644
index 0000000..f2eca4d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
@@ -0,0 +1,31 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+ final field core::List<self::Const> constants;
+ constructor •({core::List<self::Const> constants}) → self::Class
+ ;
+ static method _#new#tearOff({core::List<self::Const> constants}) → self::Class
+ return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static factory impl() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+ static method _#impl#tearOff() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/ {
+ const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+ return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic
+ ;
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+ return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
new file mode 100644
index 0000000..94ca00a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
@@ -0,0 +1,54 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:15:9: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'ImplAlias'.
+// Try changing type arguments so that they conform to the bounds.
+// ImplAlias<String>()
+// ^
+// pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart:25:19: Context: This is the type variable whose bound isn't conformed to.
+// typedef ImplAlias<T extends num> = _ConstImpl<T>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef Alias = self::Const;
+typedef ImplAlias<T extends core::num> = self::_ConstImpl<T>;
+class Class extends core::Object {
+ final field core::List<self::Const> constants;
+ constructor •({core::List<self::Const> constants = #C3}) → self::Class
+ : self::Class::constants = constants, super core::Object::•()
+ ;
+ static method _#new#tearOff({core::List<self::Const> constants = #C3}) → self::Class
+ return new self::Class::•(constants: constants);
+}
+abstract class Const extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static factory impl() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+ static method _#impl#tearOff() → self::Const
+ return new self::_ConstImpl::•<dynamic>();
+}
+class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const /*hasConstConstructor*/ {
+ const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::_ConstImpl<self::_ConstImpl::_#new#tearOff::T%>
+ return new self::_ConstImpl::•<self::_ConstImpl::_#new#tearOff::T%>();
+}
+static method main() → dynamic {}
+static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
+ return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+constants {
+ #C1 = self::_ConstImpl<dynamic> {}
+ #C2 = self::_ConstImpl<core::String*> {}
+ #C3 = <self::Const*>[#C1, #C1, #C2]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///const_redirect.dart:
+- _ConstImpl. (from org-dartlang-testcase:///const_redirect.dart:28:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart
new file mode 100644
index 0000000..9c53ca0
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A<T> {
+ A();
+ A.named();
+ factory A.fact() => new A();
+ factory A.redirect() = A;
+}
+
+typedef B<T extends num> = A<T>;
+
+test() {
+ A.new<int>;
+ A.named<int>;
+ A.fact<int>;
+ A.redirect<int>;
+ B.new<int>;
+ B.named<int>;
+ B.fact<int>;
+ B.redirect<int>;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.redirect<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.redirect<int>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ constructor •() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ constructor named() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+ return new self::A::•<self::A::_#new#tearOff::T%>();
+ static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+ return new self::A::named<self::A::_#named#tearOff::T%>();
+ static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+ return new self::A::•<self::A::fact::T%>();
+ static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+ return self::A::fact<self::A::_#fact#tearOff::T%>();
+ static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+ return new self::A::•<self::A::redirect::T%>();
+ static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+ return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.redirect<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.redirect<int>;
+ ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+ return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+ return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+ return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+ return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.redirect<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.redirect<int>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ constructor •() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ constructor named() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+ return new self::A::•<self::A::_#new#tearOff::T%>();
+ static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+ return new self::A::named<self::A::_#named#tearOff::T%>();
+ static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+ return new self::A::•<self::A::fact::T%>();
+ static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+ return self::A::fact<self::A::_#fact#tearOff::T%>();
+ static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+ return new self::A::•<self::A::redirect::T%>();
+ static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+ return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.redirect<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.redirect<int>;
+ ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+ return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+ return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+ return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+ return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline.expect
new file mode 100644
index 0000000..a06e869
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+class A<T> {
+ A();
+ A.named();
+ factory A.fact() => new A();
+ factory A.redirect() = A;
+}
+
+typedef B<T extends num> = A<T>;
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..fe289bf
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+class A<T> {
+ A();
+ A.named();
+ factory A.fact() => new A();
+ factory A.redirect() = A;
+}
+
+main() {}
+test() {}
+typedef B<T extends num> = A<T>;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.redirect<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.redirect<int>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ constructor •() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ constructor named() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+ return new self::A::•<self::A::_#new#tearOff::T%>();
+ static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+ return new self::A::named<self::A::_#named#tearOff::T%>();
+ static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+ return new self::A::•<self::A::fact::T%>();
+ static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+ return self::A::fact<self::A::_#fact#tearOff::T%>();
+ static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+ return new self::A::•<self::A::redirect::T%>();
+ static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+ return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.redirect<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.redirect<int>;
+ ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+ return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+ return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+ return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+ return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
new file mode 100644
index 0000000..ae23513
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ constructor •() → self::A<self::A::T%>
+ ;
+ constructor named() → self::A<self::A::T%>
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+ return new self::A::•<self::A::_#new#tearOff::T%>();
+ static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+ return new self::A::named<self::A::_#named#tearOff::T%>();
+ static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+ ;
+ static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+ return self::A::fact<self::A::_#fact#tearOff::T%>();
+ static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+ return new self::A::•<self::A::redirect::T%>();
+ static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+ return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic
+ ;
+static method main() → dynamic
+ ;
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+ return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+ return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+ return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+ return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
new file mode 100644
index 0000000..1970258
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
@@ -0,0 +1,112 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// A.redirect<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.new<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.named<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.fact<int>;
+// ^
+//
+// pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+// Try removing the type arguments or placing them after the class name.
+// B.redirect<int>;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef B<T extends core::num> = self::A<T>;
+class A<T extends core::Object? = dynamic> extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ constructor •() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ constructor named() → self::A<self::A::T%>
+ : super core::Object::•()
+ ;
+ static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>
+ return new self::A::•<self::A::_#new#tearOff::T%>();
+ static method _#named#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#named#tearOff::T%>
+ return new self::A::named<self::A::_#named#tearOff::T%>();
+ static factory fact<T extends core::Object? = dynamic>() → self::A<self::A::fact::T%>
+ return new self::A::•<self::A::fact::T%>();
+ static method _#fact#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#fact#tearOff::T%>
+ return self::A::fact<self::A::_#fact#tearOff::T%>();
+ static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
+ return new self::A::•<self::A::redirect::T%>();
+ static method _#redirect#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#redirect#tearOff::T%>
+ return new self::A::•<self::A::_#redirect#tearOff::T%>();
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:15:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:16:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:17:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:18:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ A.redirect<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:19:8: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.new<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:20:10: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.named<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:21:9: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.fact<int>;
+ ^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart:22:13: Error: A constructor tear-off can't have type arguments after the constructor name.
+Try removing the type arguments or placing them after the class name.
+ B.redirect<int>;
+ ^";
+}
+static method main() → dynamic {}
+static method _#B#new#tearOff<T extends core::num>() → self::A<self::_#B#new#tearOff::T>
+ return new self::A::•<self::_#B#new#tearOff::T>();
+static method _#B#named#tearOff<T extends core::num>() → self::A<self::_#B#named#tearOff::T>
+ return new self::A::named<self::_#B#named#tearOff::T>();
+static method _#B#fact#tearOff<T extends core::num>() → self::A<self::_#B#fact#tearOff::T>
+ return self::A::fact<self::_#B#fact#tearOff::T>();
+static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
+ return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart
new file mode 100644
index 0000000..96a42a8
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart
@@ -0,0 +1,159 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'unresolved_constructor_invocation.dart' as resolved_prefix;
+
+class Super {
+ Super.named();
+}
+
+class Class extends Super {
+ Class.constructor1() : super();
+ Class.constructor2() : super.unresolved();
+ Class.constructor3() : this();
+ Class.constructor4() : this.unresolved();
+}
+
+class ResolvedClass<T> {
+ ResolvedClass.named();
+}
+
+test() {
+ UnresolvedClass();
+ new UnresolvedClass();
+ const UnresolvedClass();
+
+ UnresolvedClass.unresolvedConstructor();
+ new UnresolvedClass.unresolvedConstructor();
+ const UnresolvedClass.unresolvedConstructor();
+ UnresolvedClass /**/ .unresolvedConstructor();
+ new UnresolvedClass. /**/ unresolvedConstructor();
+ const UnresolvedClass /**/ .unresolvedConstructor();
+
+ unresolved_prefix.UnresolvedClass();
+ new unresolved_prefix.UnresolvedClass();
+ const unresolved_prefix.UnresolvedClass();
+ unresolved_prefix. /**/ UnresolvedClass();
+ new unresolved_prefix /**/ .UnresolvedClass();
+ const unresolved_prefix. /**/ UnresolvedClass();
+
+ unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+
+ UnresolvedClass<int>();
+ new UnresolvedClass<int>();
+ const UnresolvedClass<int>();
+ UnresolvedClass /**/ <int>();
+ new UnresolvedClass<int> /**/ ();
+ const UnresolvedClass /**/ <int>();
+
+ UnresolvedClass<int>.unresolvedConstructor();
+ new UnresolvedClass<int>.unresolvedConstructor();
+ const UnresolvedClass<int>.unresolvedConstructor();
+ UnresolvedClass /**/ <int>.unresolvedConstructor();
+ new UnresolvedClass<int> /**/ .unresolvedConstructor();
+ const UnresolvedClass<int>. /**/ unresolvedConstructor();
+
+ unresolved_prefix.UnresolvedClass<int>();
+ new unresolved_prefix.UnresolvedClass<int>();
+ const unresolved_prefix.UnresolvedClass<int>();
+ unresolved_prefix /**/ .UnresolvedClass<int>();
+ new unresolved_prefix.UnresolvedClass /**/ <int>();
+ const unresolved_prefix.UnresolvedClass<int> /**/ ();
+
+ unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+ const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+
+ ResolvedClass();
+ new ResolvedClass();
+ const ResolvedClass();
+
+ ResolvedClass.unresolvedConstructor();
+ new ResolvedClass.unresolvedConstructor();
+ const ResolvedClass.unresolvedConstructor();
+ ResolvedClass /**/ .unresolvedConstructor();
+ new ResolvedClass. /**/ unresolvedConstructor();
+ const ResolvedClass /**/ .unresolvedConstructor();
+
+ resolved_prefix.UnresolvedClass();
+ new resolved_prefix.UnresolvedClass();
+ const resolved_prefix.UnresolvedClass();
+ resolved_prefix. /**/ UnresolvedClass();
+ new resolved_prefix /**/ .UnresolvedClass();
+ const resolved_prefix. /**/ UnresolvedClass();
+
+ resolved_prefix.ResolvedClass();
+ new resolved_prefix.ResolvedClass();
+ const resolved_prefix.ResolvedClass();
+ resolved_prefix. /**/ ResolvedClass();
+ new resolved_prefix /**/ .ResolvedClass();
+ const resolved_prefix. /**/ ResolvedClass();
+
+ resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+
+ resolved_prefix.ResolvedClass.unresolvedConstructor();
+ new resolved_prefix.ResolvedClass.unresolvedConstructor();
+ const resolved_prefix.ResolvedClass.unresolvedConstructor();
+ resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+ new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+ const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+
+ ResolvedClass<int>();
+ new ResolvedClass<int>();
+ const ResolvedClass<int>();
+ ResolvedClass /**/ <int>();
+ new ResolvedClass /**/ <int>();
+ const ResolvedClass /**/ <int>();
+
+ ResolvedClass<int>.unresolvedConstructor();
+ new ResolvedClass<int>.unresolvedConstructor();
+ const ResolvedClass<int>.unresolvedConstructor();
+ ResolvedClass<int> /**/ .unresolvedConstructor();
+ new ResolvedClass<int>. /**/ unresolvedConstructor();
+ const ResolvedClass /**/ <int>.unresolvedConstructor();
+
+ resolved_prefix.UnresolvedClass<int>();
+ new resolved_prefix.UnresolvedClass<int>();
+ const resolved_prefix.UnresolvedClass<int>();
+ resolved_prefix. /**/ UnresolvedClass<int>();
+ new resolved_prefix.UnresolvedClass /**/ <int>();
+ const resolved_prefix.UnresolvedClass<int> /**/ ();
+
+ resolved_prefix.ResolvedClass<int>();
+ new resolved_prefix.ResolvedClass<int>();
+ const resolved_prefix.ResolvedClass<int>();
+ resolved_prefix. /**/ ResolvedClass<int>();
+ new resolved_prefix.ResolvedClass /**/ <int>();
+ const resolved_prefix.ResolvedClass<int> /**/ ();
+
+ resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+ const resolved_prefix
+ . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+
+ resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+ new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+ const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+// Class.constructor1() : super();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+// Class.constructor2() : super.unresolved();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+// Class.constructor3() : this();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+// Class.constructor4() : this.unresolved();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix /**/ .ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+// . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ : super core::Object::•()
+ ;
+}
+class Class extends self::Super {
+ constructor constructor1() → self::Class
+ : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+ Class.constructor1() : super();
+ ^^^^^"
+ ;
+ constructor constructor2() → self::Class
+ : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+ Class.constructor2() : super.unresolved();
+ ^^^^^"
+ ;
+ constructor constructor3() → self::Class
+ : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+ Class.constructor3() : this();
+ ^^^^"
+ ;
+ constructor constructor4() → self::Class
+ : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+ Class.constructor4() : this.unresolved();
+ ^^^^"
+ ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+ constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+ : super core::Object::•()
+ ;
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix /**/ .ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+ . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+// Class.constructor1() : super();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+// Class.constructor2() : super.unresolved();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+// Class.constructor3() : this();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+// Class.constructor4() : this.unresolved();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix /**/ .ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+// . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ : super core::Object::•()
+ ;
+}
+class Class extends self::Super {
+ constructor constructor1() → self::Class
+ : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+ Class.constructor1() : super();
+ ^^^^^"
+ ;
+ constructor constructor2() → self::Class
+ : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+ Class.constructor2() : super.unresolved();
+ ^^^^^"
+ ;
+ constructor constructor3() → self::Class
+ : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+ Class.constructor3() : this();
+ ^^^^"
+ ;
+ constructor constructor4() → self::Class
+ : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+ Class.constructor4() : this.unresolved();
+ ^^^^"
+ ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+ constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+ : super core::Object::•()
+ ;
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix /**/ .ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+ . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline.expect
new file mode 100644
index 0000000..1981b9a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline.expect
@@ -0,0 +1,19 @@
+import 'unresolved_constructor_invocation.dart' as resolved_prefix;
+
+class Super {
+ Super.named();
+}
+
+class Class extends Super {
+ Class.constructor1() : super();
+ Class.constructor2() : super.unresolved();
+ Class.constructor3() : this();
+ Class.constructor4() : this.unresolved();
+}
+
+class ResolvedClass<T> {
+ ResolvedClass.named();
+}
+
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a8ffa5d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
@@ -0,0 +1,19 @@
+import 'unresolved_constructor_invocation.dart' as resolved_prefix;
+
+class Class extends Super {
+ Class.constructor1() : super();
+ Class.constructor2() : super.unresolved();
+ Class.constructor3() : this();
+ Class.constructor4() : this.unresolved();
+}
+
+class ResolvedClass<T> {
+ ResolvedClass.named();
+}
+
+class Super {
+ Super.named();
+}
+
+main() {}
+test() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+// Class.constructor1() : super();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+// Class.constructor2() : super.unresolved();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+// Class.constructor3() : this();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+// Class.constructor4() : this.unresolved();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix /**/ .ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+// . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ : super core::Object::•()
+ ;
+}
+class Class extends self::Super {
+ constructor constructor1() → self::Class
+ : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+ Class.constructor1() : super();
+ ^^^^^"
+ ;
+ constructor constructor2() → self::Class
+ : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+ Class.constructor2() : super.unresolved();
+ ^^^^^"
+ ;
+ constructor constructor3() → self::Class
+ : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+ Class.constructor3() : this();
+ ^^^^"
+ ;
+ constructor constructor4() → self::Class
+ : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+ Class.constructor4() : this.unresolved();
+ ^^^^"
+ ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+ constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+ : super core::Object::•()
+ ;
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix /**/ .ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+ . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.outline.expect
new file mode 100644
index 0000000..1532807
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.outline.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ ;
+}
+class Class extends self::Super {
+ constructor constructor1() → self::Class
+ ;
+ constructor constructor2() → self::Class
+ ;
+ constructor constructor3() → self::Class
+ ;
+ constructor constructor4() → self::Class
+ ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+ constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+ ;
+}
+static method test() → dynamic
+ ;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
new file mode 100644
index 0000000..c148623
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -0,0 +1,858 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+// Class.constructor1() : super();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+// Class.constructor2() : super.unresolved();
+// ^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+// Class.constructor3() : this();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+// Class.constructor4() : this.unresolved();
+// ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+// UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// new UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// const UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// new UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// const UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix /**/ .UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix /**/ .ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix. /**/ ResolvedClass();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+// ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const ResolvedClass /**/ <int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+// resolved_prefix. /**/ UnresolvedClass<int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+// resolved_prefix. /**/ ResolvedClass<int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+// new resolved_prefix.ResolvedClass /**/ <int>();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+// const resolved_prefix.ResolvedClass<int> /**/ ();
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+// . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///unresolved_constructor_invocation.dart" as resolved_prefix;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ : super core::Object::•()
+ ;
+}
+class Class extends self::Super {
+ constructor constructor1() → self::Class
+ : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+ Class.constructor1() : super();
+ ^^^^^"
+ ;
+ constructor constructor2() → self::Class
+ : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+ Class.constructor2() : super.unresolved();
+ ^^^^^"
+ ;
+ constructor constructor3() → self::Class
+ : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+ Class.constructor3() : this();
+ ^^^^"
+ ;
+ constructor constructor4() → self::Class
+ : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+ Class.constructor4() : this.unresolved();
+ ^^^^"
+ ;
+}
+class ResolvedClass<T extends core::Object? = dynamic> extends core::Object {
+ constructor named() → self::ResolvedClass<self::ResolvedClass::T%>
+ : super core::Object::•()
+ ;
+}
+static method test() → dynamic {
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+ UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ new UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+ const UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^"{dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+ UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+ new UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+ const UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+ unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+ const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix /**/ .UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix /**/ .ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix. /**/ ResolvedClass();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+ ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const ResolvedClass /**/ <int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+ resolved_prefix. /**/ UnresolvedClass<int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+ resolved_prefix. /**/ ResolvedClass<int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+ new resolved_prefix.ResolvedClass /**/ <int>();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+ const resolved_prefix.ResolvedClass<int> /**/ ();
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+ resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+ new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+ . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+ const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
+ ^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
index 1aa653d..d767009 100644
--- a/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_asserts.dart.weak.outline.expect
@@ -91,7 +91,7 @@
Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:12:59 -> StringConstant("foo was false")
Evaluated: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:13:50 -> BoolConstant(true)
Evaluated: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:15:73 -> StringConstant("btw foo was false")
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:19:21 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:21:22 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:19:21 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:21:22 -> NullConstant(null)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:31:24 -> InstanceConstant(const Foo{Foo.x: 1})
Extra constant evaluation: evaluated: 45, effectively constant: 7
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
index 28ec243..7b7e406 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.outline.expect
@@ -370,9 +370,9 @@
Extra constant evaluation status:
Evaluated: InstanceGet @ org-dartlang-testcase:///various.dart:111:26 -> IntConstant(5)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:6:31 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:7:30 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:9:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:6:31 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:7:30 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:9:11 -> NullConstant(null)
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:10:35 -> NullConstant(null)
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:11:32 -> NullConstant(null)
Evaluated: Let @ org-dartlang-testcase:///various.dart:12:51 -> BoolConstant(true)
@@ -385,24 +385,24 @@
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:19:24 -> NullConstant(null)
Evaluated: LogicalExpression @ org-dartlang-testcase:///various.dart:20:29 -> BoolConstant(true)
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:21:33 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:23:39 -> StringConstant("")
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:25:11 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:27:11 -> StringConstant("hello")
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:23:39 -> StringConstant("")
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:25:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:27:11 -> StringConstant("hello")
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:29:34 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:31:35 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:33:11 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:35:11 -> BoolConstant(true)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:31:35 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:33:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:35:11 -> BoolConstant(true)
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:36:57 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:38:33 -> IntConstant(0)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:40:11 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:42:11 -> IntConstant(42)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:38:33 -> IntConstant(0)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:40:11 -> NullConstant(null)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:42:11 -> IntConstant(42)
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:43:54 -> NullConstant(null)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:46:31 -> BoolConstant(false)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:47:30 -> BoolConstant(true)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:48:35 -> IntConstant(42)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:49:41 -> StringConstant("42")
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:53:35 -> BoolConstant(true)
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:54:36 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:46:31 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:47:30 -> BoolConstant(true)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:48:35 -> IntConstant(42)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:49:41 -> StringConstant("42")
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:53:35 -> BoolConstant(true)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:54:36 -> BoolConstant(false)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:58:41 -> BoolConstant(true)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:59:45 -> BoolConstant(false)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various.dart:60:39 -> BoolConstant(true)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect
index 4e4e0ec..3b295c8 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.outline.expect
@@ -50,12 +50,12 @@
Extra constant evaluation status:
Evaluated with empty environment: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:10:50 -> BoolConstant(true)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:10:22 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:10:22 -> BoolConstant(false)
Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:11:59 -> StringConstant("foo was false")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:11:30 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:11:30 -> BoolConstant(false)
Evaluated with empty environment: EqualsCall @ org-dartlang-testcase:///const_asserts.dart:12:50 -> BoolConstant(true)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:12:22 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:12:22 -> BoolConstant(false)
Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:14:73 -> StringConstant("btw foo was false")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_asserts.dart:14:44 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:14:44 -> BoolConstant(false)
Evaluated with empty environment: ConstructorInvocation @ org-dartlang-testcase:///const_asserts.dart:25:24 -> InstanceConstant(const Foo{Foo.x: 1})
Extra constant evaluation: evaluated: 36, effectively constant: 9
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect
index c2729313..d08ca5a 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.outline.expect
@@ -24,21 +24,21 @@
Extra constant evaluation status:
Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///const_collections.dart:5:40 -> ListConstant(const <bool*>[false, false, true])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:6:8 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:7:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:6:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:7:8 -> BoolConstant(false)
Evaluated with empty environment: ListConcatenation @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true, false, false, true, false])
Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true])
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///const_collections.dart:12:6 -> ListConstant(const <bool*>[false, false, true])
Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[false])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:17:8 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:18:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:17:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:18:8 -> BoolConstant(false)
Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:21:44 -> SetConstant(const <bool*>{true})
Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:21:44 -> SetConstant(const <bool*>{false})
Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:23:16 -> ListConstant(const <int*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:24:17 -> ListConstant(const <int?>[])
Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:25:26 -> SetConstant(const <List<int?>*>{const <int*>[], const <int?>[]})
Evaluated with empty environment: MapLiteral @ org-dartlang-testcase:///const_collections.dart:27:38 -> MapConstant(const <bool*, bool*>{false: false})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:28:8 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections.dart:28:37 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:28:8 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:28:37 -> BoolConstant(false)
Evaluated: MapLiteral @ org-dartlang-testcase:///const_collections.dart:31:26 -> MapConstant(const <List<int?>*, int*>{const <int*>[]: 0, const <int?>[]: 1})
Extra constant evaluation: evaluated: 21, effectively constant: 18
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect
index 9a289e2..0913c95 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.outline.expect
@@ -12,17 +12,17 @@
Extra constant evaluation status:
Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///const_collections_2.dart:5:58 -> ListConstant(const <String*>["", "", "hello", "world"])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:6:10 -> StringConstant("")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:7:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:6:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:7:10 -> StringConstant("")
Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///const_collections_2.dart:12:59 -> ListConstant(const <String*>["A", "few", "strings", "", "", "hello", "world", "and", "more"])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:16:10 -> StringConstant("")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:17:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:16:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:17:10 -> StringConstant("")
Evaluated with empty environment: SetLiteral @ org-dartlang-testcase:///const_collections_2.dart:24:56 -> SetConstant(const <String*>{"", "hello", "world"})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:27:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:27:10 -> StringConstant("")
Evaluated with empty environment: SetLiteral @ org-dartlang-testcase:///const_collections_2.dart:32:57 -> SetConstant(const <String*>{"A", "few", "strings", "", "hello", "world", "and", "more"})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:38:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:38:10 -> StringConstant("")
Evaluated with empty environment: MapLiteral @ org-dartlang-testcase:///const_collections_2.dart:45:61 -> MapConstant(const <String*, int*>{"": 42, "hello": 42, "world": 42})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:48:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:48:10 -> StringConstant("")
Evaluated with empty environment: MapLiteral @ org-dartlang-testcase:///const_collections_2.dart:53:62 -> MapConstant(const <String*, int*>{"A": 42, "few": 42, "strings": 42, "": 42, "hello": 42, "world": 42, "and": 42, "more": 42})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///const_collections_2.dart:59:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///const_collections_2.dart:59:10 -> StringConstant("")
Extra constant evaluation: evaluated: 14, effectively constant: 14
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect
index 8ea780a..9bd98d9 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.outline.expect
@@ -57,7 +57,7 @@
Extra constant evaluation status:
Evaluated with empty environment: ListLiteral @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:1:18 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:5:10 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:5:10 -> StringConstant("")
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:11:15 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:12:15 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///many_fields_pointing_to_previous_field.dart:13:15 -> ListConstant(const <String*>["lots", "of", "strings", "", "that", "are", "already", "constants"])
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect
index a4388e8..e236e5c 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.outline.expect
@@ -15,7 +15,7 @@
Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:5:20 -> IntConstant(1764)
Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///rudimentary_test_01.dart:7:27 -> StringConstant("world")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///rudimentary_test_01.dart:7:27 -> StringConstant("world")
Evaluated: LogicalExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:8:50 -> BoolConstant(true)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///rudimentary_test_01.dart:9:19 -> SymbolConstant(#_x)
Extra constant evaluation: evaluated: 5, effectively constant: 5
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect
index 7967bf9..aecdca6 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.outline.expect
@@ -159,21 +159,21 @@
Extra constant evaluation status:
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:32:27 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:32:27 -> BoolConstant(false)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:32:69 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:33:21 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:33:21 -> BoolConstant(false)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:33:63 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:7:31 -> BoolConstant(false)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:8:30 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:7:31 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:8:30 -> BoolConstant(false)
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:9:67 -> NullConstant(null)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:9:39 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:9:39 -> BoolConstant(false)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:11:53 -> NullConstant(null)
Evaluated: LogicalExpression @ org-dartlang-testcase:///various.dart:19:29 -> BoolConstant(true)
Evaluated: StaticGet @ org-dartlang-testcase:///various.dart:22:29 -> IntConstant(42)
Evaluated with empty environment: ConstructorInvocation @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: null, Foo.value: 42})
Evaluated: Not @ org-dartlang-testcase:///various.dart:40:16 -> BoolConstant(false)
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:42:46 -> BoolConstant(true)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:42:23 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:42:23 -> BoolConstant(false)
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:43:38 -> BoolConstant(false)
Evaluated with empty environment: IsExpression @ org-dartlang-testcase:///various.dart:43:31 -> BoolConstant(false)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:43:22 -> BoolConstant(true)
@@ -199,33 +199,33 @@
Evaluated: IsExpression @ org-dartlang-testcase:///various.dart:72:46 -> BoolConstant(true)
Evaluated: IsExpression @ org-dartlang-testcase:///various.dart:73:46 -> BoolConstant(true)
Evaluated with empty environment: ConstructorInvocation @ org-dartlang-testcase:///various.dart:76:11 -> SymbolConstant(#)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:76:25 -> StringConstant("")
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:76:25 -> StringConstant("")
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:77:44 -> SymbolConstant(#42)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:107:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:107:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:107:71 -> InstanceConstant(const C{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:108:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:108:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:108:69 -> InstanceConstant(const A{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:109:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:109:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:109:65 -> InstanceConstant(const C{})
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:110:38 -> InstanceConstant(const Class<A*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:110:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:110:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:110:53 -> InstanceConstant(const Class<A*>{})
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:111:38 -> InstanceConstant(const Class<B*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:111:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:111:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:111:53 -> InstanceConstant(const Class<B*>{})
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:112:38 -> InstanceConstant(const Subclass<A*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:112:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:112:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:112:53 -> InstanceConstant(const Subclass<A*>{})
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:113:38 -> InstanceConstant(const Subclass<B*>{})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:113:17 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:113:17 -> BoolConstant(false)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:113:53 -> InstanceConstant(const Subclass<B*>{})
Evaluated: TypeLiteral @ org-dartlang-testcase:///various.dart:116:11 -> TypeLiteralConstant(int* Function(int*, {named: int*})*)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various.dart:125:48 -> InstanceConstant(const ConstClassWithF{ConstClassWithF.foo: procedure})
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:127:35 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:127:35 -> BoolConstant(false)
Evaluated with empty environment: Not @ org-dartlang-testcase:///various.dart:128:33 -> BoolConstant(true)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:128:34 -> BoolConstant(false)
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various.dart:130:33 -> NullConstant(null)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various.dart:130:10 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various.dart:130:10 -> BoolConstant(false)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:130:35 -> BoolConstant(false)
Evaluated with empty environment: StaticGet @ org-dartlang-testcase:///various.dart:131:37 -> NullConstant(null)
Extra constant evaluation: evaluated: 108, effectively constant: 69
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect
index 373d6b4..b505038 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.outline.expect
@@ -112,7 +112,7 @@
Evaluated: TypeLiteral @ org-dartlang-testcase:///various_2_lib.dart:17:27 -> TypeLiteralConstant(Object*)
Evaluated: StaticTearOff @ org-dartlang-testcase:///various_2_lib.dart:18:12 -> StaticTearOffConstant(identical)
Evaluated with empty environment: ConditionalExpression @ org-dartlang-testcase:///various_2_lib.dart:20:39 -> InstantiationConstant(id2<int*>)
-Evaluated with empty environment: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///various_2_lib.dart:20:11 -> BoolConstant(false)
+Evaluated with empty environment: FactoryConstructorInvocation @ org-dartlang-testcase:///various_2_lib.dart:20:11 -> BoolConstant(false)
Evaluated with empty environment: Instantiation @ org-dartlang-testcase:///various_2_lib.dart:20:41 -> InstantiationConstant(id1<int*>)
Evaluated: StaticTearOff @ org-dartlang-testcase:///various_2_lib.dart:20:41 -> StaticTearOffConstant(id1)
Evaluated with empty environment: Instantiation @ org-dartlang-testcase:///various_2_lib.dart:20:47 -> InstantiationConstant(id2<int*>)
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect b/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
index 8602f0b..a487595 100644
--- a/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.expect
@@ -27,7 +27,7 @@
return 42;
}
static method test6() → FutureOr<FutureOr<void>> {
- return asy::Future::value<FutureOr<void>>(42);
+ return asy::Future::value<FutureOr<void>?>(42);
}
static method test() → FutureOr<FutureOr<void>> {
return asy::Future::value<asy::Future<asy::Future<void>>>(asy::Future::value<asy::Future<void>>(asy::Future::value<void>(null)));
diff --git a/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
index c8bea67..3d5fcf9 100644
--- a/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_new2.dart.weak.transformed.expect
@@ -27,7 +27,7 @@
return 42;
}
static method test6() → FutureOr<FutureOr<void>> {
- return asy::Future::value<FutureOr<void>>(42);
+ return asy::Future::value<FutureOr<void>?>(42);
}
static method test() → FutureOr<FutureOr<void>> {
return asy::Future::value<asy::Future<asy::Future<void>>>(asy::Future::value<asy::Future<void>>(asy::Future::value<void>(null)));
diff --git a/pkg/front_end/testcases/general/issue46334.dart b/pkg/front_end/testcases/general/issue46334.dart
new file mode 100644
index 0000000..d84c9a6
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class C {
+ factory C() = C;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue46334.dart.textual_outline.expect
new file mode 100644
index 0000000..0474482
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+class C {
+ factory C() = C;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue46334.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0474482
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+class C {
+ factory C() = C;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.expect
new file mode 100644
index 0000000..2fd5dea
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+// factory C() = C;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static factory •() → self::C
+ return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+ factory C() = C;
+ ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
new file mode 100644
index 0000000..2ac4318
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
@@ -0,0 +1,20 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+// factory C() = C;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static factory •() → self::C
+ return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+ factory C() = C;
+ ^";
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
new file mode 100644
index 0000000..2fd5dea
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+// factory C() = C;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static factory •() → self::C
+ return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
+ factory C() = C;
+ ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
index c76f68a..6c43742 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
@@ -2,39 +2,29 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
// a.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
// a.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:27:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<int>.applyAndPrint([2]);
-// ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
// A.n<int>.applyAndPrint([2]);
// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:28:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<String>.applyAndPrint(['three']);
-// ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
// A.n<String>.applyAndPrint(['three']);
// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
// self.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
// self.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/issue46719.dart:31:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
@@ -59,15 +49,10 @@
// A<int>.named.toString();
// ^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
+// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
// A.named<int>.toString();
// ^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
-// A.named<int>.toString();
-// ^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -97,24 +82,24 @@
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
self::A<dynamic> a = new self::A::•<dynamic>();
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
a.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
a.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
A.n<int>.applyAndPrint([2]);
^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
A.n<String>.applyAndPrint(['three']);
^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
self.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
self.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^";
self::FunctionApplier|applyAndPrint(#C3, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(#C3, <core::Object?>["three"]);
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
@@ -123,9 +108,9 @@
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
A<int>.named.toString();
^^^^^".{core::Object::toString}(){() → core::String};
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
A.named<int>.toString();
- ^^^^^^^^";
+ ^^^^^";
}
static method main() → void {}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
index f0fc296..ca845a7 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
@@ -2,39 +2,29 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
// a.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
// a.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:27:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<int>.applyAndPrint([2]);
-// ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
// A.n<int>.applyAndPrint([2]);
// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:28:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
-// A.n<String>.applyAndPrint(['three']);
-// ^
-//
-// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
// A.n<String>.applyAndPrint(['three']);
// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
// self.m<int>.applyAndPrint([2]);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
// self.m<String>.applyAndPrint(['three']);
-// ^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/issue46719.dart:31:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
@@ -59,15 +49,10 @@
// A<int>.named.toString();
// ^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: A constructor invocation can't have type arguments after the constructor name.
-// Try removing the type arguments or placing them after the class name.
+// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
// A.named<int>.toString();
// ^^^^^
//
-// pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
-// A.named<int>.toString();
-// ^^^^^^^^
-//
import self as self;
import "dart:core" as core;
@@ -97,24 +82,24 @@
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
self::A<dynamic> a = new self::A::•<dynamic>();
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
a.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:3: Error: Couldn't find constructor 'a.m.applyAndPrint'.
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
a.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
A.n<int>.applyAndPrint([2]);
^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'A.n.applyAndPrint'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
A.n<String>.applyAndPrint(['three']);
^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
self.m<int>.applyAndPrint([2]);
- ^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:3: Error: Couldn't find constructor 'm.applyAndPrint'.
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
self.m<String>.applyAndPrint(['three']);
- ^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^";
self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>(2));
self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>("three"));
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
@@ -123,9 +108,9 @@
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
A<int>.named.toString();
^^^^^".{core::Object::toString}(){() → core::String};
- invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:16: Error: Couldn't find constructor 'A.named.toString'.
+ invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
A.named<int>.toString();
- ^^^^^^^^";
+ ^^^^^";
}
static method main() → void {}
diff --git a/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect b/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
index 3755189..e6298bf 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
@@ -75,7 +75,7 @@
}
Extra constant evaluation status:
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///magic_const.dart:21:8 -> BoolConstant(false)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///magic_const.dart:21:8 -> BoolConstant(false)
Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
index f7a04b0..92a8aa8 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
@@ -108,7 +108,7 @@
Try correcting the operator to an existing operator, or defining a '+' operator.
var missingBinary = classWithProperty.property += 2;
^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass*}{<unresolved>}.+(2);
-static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final Never #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
+static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final invalid-type #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
- 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
var missingIndexGet = classWithIndexSet[0] ??= 2;
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect b/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
index 2f3683b..c14d8e6 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
@@ -140,7 +140,7 @@
^" in null;
}
{
- () →* Null x = let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
+ () →* Null x = let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
var x = T T() {};
^" in let final () →* Null T = () → Null {} in T;
}
@@ -150,7 +150,7 @@
^";
}
{
- <T extends core::Object* = dynamic>() →* Null x = let final Never #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
+ <T extends core::Object* = dynamic>() →* Null x = let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
var x = T<T>() {};
^" in let final <T extends core::Object* = dynamic>() →* Null T = <T extends core::Object* = dynamic>() → Null {} in T;
}
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
index ab987d2..2c8cde5 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
@@ -56,5 +56,5 @@
Extra constant evaluation status:
-Evaluated: FactoryConstructorInvocationJudgment @ org-dartlang-testcase:///nested_implicit_const_with_env_var.dart:5:23 -> IntConstant(0)
+Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///nested_implicit_const_with_env_var.dart:5:23 -> IntConstant(0)
Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart b/pkg/front_end/testcases/general/null_aware_super.dart
new file mode 100644
index 0000000..106fd43
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class Super {
+ Super.named();
+}
+
+class Class extends Super {
+ Class() : super?.named();
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.textual_outline.expect b/pkg/front_end/testcases/general/null_aware_super.dart.textual_outline.expect
new file mode 100644
index 0000000..903b3d4
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+class Super {
+ Super.named();
+}
+class Class extends Super {
+ Class() : super?.named();
+}
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_super.dart.weak.expect
new file mode 100644
index 0000000..2e47743
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.weak.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+// Try replacing '?.' with '.'
+// Class() : super?.named();
+// ^^
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: Cannot use '?.' here.
+// Try using '.'.
+// Class() : super?.named();
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ : super core::Object::•()
+ ;
+}
+class Class extends self::Super {
+ constructor •() → self::Class
+ : super self::Super::named()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_aware_super.dart.weak.outline.expect
new file mode 100644
index 0000000..a9cb459
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.weak.outline.expect
@@ -0,0 +1,22 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+// Try replacing '?.' with '.'
+// Class() : super?.named();
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ ;
+}
+class Class extends self::Super {
+ constructor •() → self::Class
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/null_aware_super.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_super.dart.weak.transformed.expect
new file mode 100644
index 0000000..2e47743
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_super.dart.weak.transformed.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: The operator '?.' cannot be used with 'super' because 'super' cannot be null.
+// Try replacing '?.' with '.'
+// Class() : super?.named();
+// ^^
+//
+// pkg/front_end/testcases/general/null_aware_super.dart:10:18: Error: Cannot use '?.' here.
+// Try using '.'.
+// Class() : super?.named();
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+ constructor named() → self::Super
+ : super core::Object::•()
+ ;
+}
+class Class extends self::Super {
+ constructor •() → self::Class
+ : super self::Super::named()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
index a155bab..6b88eff 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
@@ -82,25 +82,25 @@
// unresolved_prefix.UnresolvedClass.unresolvedConstructor();
// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
// unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
// UnresolvedClass<int>();
@@ -174,29 +174,37 @@
// const unresolved_prefix.UnresolvedClass<int> /**/ ();
// ^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
// ResolvedClass();
@@ -560,21 +568,21 @@
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
unresolved_prefix.UnresolvedClass.unresolvedConstructor();
^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
UnresolvedClass<int>();
^^^^^^^^^^^^^^^";
@@ -629,24 +637,24 @@
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
const unresolved_prefix.UnresolvedClass<int> /**/ ();
^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
ResolvedClass();
^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
index a155bab..6b88eff 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -82,25 +82,25 @@
// unresolved_prefix.UnresolvedClass.unresolvedConstructor();
// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
// unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
// UnresolvedClass<int>();
@@ -174,29 +174,37 @@
// const unresolved_prefix.UnresolvedClass<int> /**/ ();
// ^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
+// ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
// const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-// ^^^^^^^^^^^^^^^^^^^^^
+// ^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
// ResolvedClass();
@@ -560,21 +568,21 @@
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
unresolved_prefix.UnresolvedClass.unresolvedConstructor();
^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
UnresolvedClass<int>();
^^^^^^^^^^^^^^^";
@@ -629,24 +637,24 @@
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
const unresolved_prefix.UnresolvedClass<int> /**/ ();
^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+ ^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
- ^^^^^^^^^^^^^^^^^^^^^";
+ ^^^^^^^^^^^^^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
ResolvedClass();
^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
index bcd891f..cdde874 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
@@ -79,9 +79,25 @@
int topLevelMethodAndSetter2() => 1;
+var field = topLevelMethod;
+
+@topLevelMethod
test() {
topLevelMethod();
(topLevelMethod)();
+ if (topLevelMethod) {}
+ topLevelMethod;
+ @topLevelMethod
+ var foo;
+ switch (null) {
+ case topLevelMethod;
+ }
+ topLevelMethod || topLevelMethod;
+ topLevelMethod + 0;
+ topLevelMethod ~ 0;
+ topLevelMethod ?? topLevelMethod;
+ topLevelMethod?.foo;
+ topLevelMethod?.foo();
topLevelGetter;
topLevelSetter = 0;
topLevelField;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
@@ -112,55 +112,123 @@
// int topLevelMethodAndSetter2() => 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
// (topLevelMethod)();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// if (topLevelMethod) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod + 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+// topLevelMethod ~ 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo();
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
// topLevelGetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
// topLevelSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
// topLevelField;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
// topLevelField = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
// topLevelDuplicateFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
// topLevelDuplicateFieldAndSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
// topLevelFieldAndDuplicateSetter = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
// topLevelDuplicateFieldAndDuplicateSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
// topLevelDuplicateFieldAndDuplicateSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
// topLevelMethodAndSetter1 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
// topLevelMethodAndSetter2 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
@@ -176,6 +244,9 @@
static final field core::int topLevelDuplicateFieldAndSetter;
static final field core::int topLevelFieldAndDuplicateSetter = 1;
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+ ^";
static const field dynamic _exports# = #C1 /*isLegacy*/;
static method topLevelMethod() → core::int
return 1;
@@ -203,45 +274,89 @@
}
static method topLevelMethodAndSetter2() → core::int
return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
topLevelMethod();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
(topLevelMethod)();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+ if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ if (topLevelMethod) {}
+ ^") {
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod;
+ ^";
+ @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+ @topLevelMethod
+ ^" dynamic foo;
+ switch(null) {
+ #L1:
+ case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ case topLevelMethod;
+ ^":
+ {
+ ;
+ }
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod + 0;
+ ^"{<invalid>}.+(0);
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+ topLevelMethod ~ 0;
+ ^";
+ let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" : #t1;
+ let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo;
+ ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+ let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo();
+ ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
topLevelGetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
topLevelSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
topLevelField;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
topLevelField = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
topLevelDuplicateFieldAndSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
topLevelDuplicateFieldAndSetter = 0;
^";
self::topLevelFieldAndDuplicateSetter;
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
topLevelFieldAndDuplicateSetter = 0;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
topLevelDuplicateFieldAndDuplicateSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
topLevelDuplicateFieldAndDuplicateSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
topLevelMethodAndSetter1 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
topLevelMethodAndSetter2 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
@@ -112,55 +112,123 @@
// int topLevelMethodAndSetter2() => 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
// (topLevelMethod)();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// if (topLevelMethod) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod + 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+// topLevelMethod ~ 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo();
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
// topLevelGetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
// topLevelSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
// topLevelField;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
// topLevelField = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
// topLevelDuplicateFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
// topLevelDuplicateFieldAndSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
// topLevelFieldAndDuplicateSetter = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
// topLevelDuplicateFieldAndDuplicateSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
// topLevelDuplicateFieldAndDuplicateSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
// topLevelMethodAndSetter1 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
// topLevelMethodAndSetter2 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
@@ -176,6 +244,9 @@
static final field core::int topLevelDuplicateFieldAndSetter;
static final field core::int topLevelFieldAndDuplicateSetter = 1;
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+ ^";
static const field dynamic _exports# = #C1 /*isLegacy*/;
static method topLevelMethod() → core::int
return 1;
@@ -203,45 +274,89 @@
}
static method topLevelMethodAndSetter2() → core::int
return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
topLevelMethod();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
(topLevelMethod)();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+ if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ if (topLevelMethod) {}
+ ^") {
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod;
+ ^";
+ @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+ @topLevelMethod
+ ^" dynamic foo;
+ switch(null) {
+ #L1:
+ case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ case topLevelMethod;
+ ^":
+ {
+ ;
+ }
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod + 0;
+ ^"{<invalid>}.+(0);
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+ topLevelMethod ~ 0;
+ ^";
+ let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" : #t1;
+ let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo;
+ ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+ let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo();
+ ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
topLevelGetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
topLevelSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
topLevelField;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
topLevelField = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
topLevelDuplicateFieldAndSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
topLevelDuplicateFieldAndSetter = 0;
^";
self::topLevelFieldAndDuplicateSetter;
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
topLevelFieldAndDuplicateSetter = 0;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
topLevelDuplicateFieldAndDuplicateSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
topLevelDuplicateFieldAndDuplicateSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
topLevelMethodAndSetter1 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
topLevelMethodAndSetter2 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
index 20b935d..591960d 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
@@ -29,6 +29,8 @@
void set topLevelMethodAndSetter1(int value) {}
void set topLevelMethodAndSetter2(int value) {}
int topLevelMethodAndSetter2() => 1;
+var field = topLevelMethod;
+@topLevelMethod
test() {}
main() {}
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
index bb9a9a2..b5d58c1 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
@@ -32,7 +32,9 @@
int topLevelMethodAndSetter1() => 1;
int topLevelMethodAndSetter2() => 1;
main() {}
+@topLevelMethod
test() {}
+var field = topLevelMethod;
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
void set topLevelMethodAndSetter1(int value) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
@@ -112,55 +112,123 @@
// int topLevelMethodAndSetter2() => 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
// (topLevelMethod)();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// if (topLevelMethod) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod + 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+// topLevelMethod ~ 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo();
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
// topLevelGetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
// topLevelSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
// topLevelField;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
// topLevelField = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
// topLevelDuplicateFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
// topLevelDuplicateFieldAndSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
// topLevelFieldAndDuplicateSetter = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
// topLevelDuplicateFieldAndDuplicateSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
// topLevelDuplicateFieldAndDuplicateSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
// topLevelMethodAndSetter1 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
// topLevelMethodAndSetter2 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
@@ -176,6 +244,9 @@
static final field core::int topLevelDuplicateFieldAndSetter;
static final field core::int topLevelFieldAndDuplicateSetter = 1;
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+ ^";
static const field dynamic _exports# = #C1 /*isLegacy*/;
static method topLevelMethod() → core::int
return 1;
@@ -203,45 +274,89 @@
}
static method topLevelMethodAndSetter2() → core::int
return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
topLevelMethod();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
(topLevelMethod)();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+ if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ if (topLevelMethod) {}
+ ^") {
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod;
+ ^";
+ @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+ @topLevelMethod
+ ^" dynamic foo;
+ switch(null) {
+ #L1:
+ case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ case topLevelMethod;
+ ^":
+ {
+ ;
+ }
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod + 0;
+ ^"{<invalid>}.+(0);
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+ topLevelMethod ~ 0;
+ ^";
+ let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" : #t1;
+ let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo;
+ ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+ let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo();
+ ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
topLevelGetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
topLevelSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
topLevelField;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
topLevelField = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
topLevelDuplicateFieldAndSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
topLevelDuplicateFieldAndSetter = 0;
^";
self::topLevelFieldAndDuplicateSetter;
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
topLevelFieldAndDuplicateSetter = 0;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
topLevelDuplicateFieldAndDuplicateSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
topLevelDuplicateFieldAndDuplicateSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
topLevelMethodAndSetter1 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
topLevelMethodAndSetter2 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect
index 2540f70..25e0d01 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.outline.expect
@@ -112,6 +112,18 @@
// int topLevelMethodAndSetter2() => 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -124,6 +136,7 @@
static final field core::int topLevelDuplicateFieldAndSetter;
static final field core::int topLevelFieldAndDuplicateSetter;
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field;
static const field dynamic _exports# = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}" /*isLegacy*/;
static method topLevelMethod() → core::int
;
@@ -145,6 +158,11 @@
;
static method topLevelMethodAndSetter2() → core::int
;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^" in invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+@topLevelMethod
+ ^"
static method test() → dynamic
;
static method main() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
index ca55581..85c4c69 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
@@ -112,55 +112,123 @@
// int topLevelMethodAndSetter2() => 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// var field = topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
// (topLevelMethod)();
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// if (topLevelMethod) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @topLevelMethod
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:24: Error: Expected ':' before this.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// case topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod || topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod + 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+// topLevelMethod ~ 0;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod ?? topLevelMethod;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+// topLevelMethod?.foo();
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
// topLevelGetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
// topLevelSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
// topLevelField;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
// topLevelField = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
// topLevelDuplicateFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
// topLevelDuplicateFieldAndSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
// topLevelFieldAndDuplicateSetter = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
// topLevelDuplicateFieldAndDuplicateSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
// topLevelDuplicateFieldAndDuplicateSetter = 0;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
// topLevelMethodAndSetter1 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
// topLevelMethodAndSetter2 = 0;
// ^^^^^^^^^^^^^^^^^^^^^^^^
//
@@ -176,6 +244,9 @@
static final field core::int topLevelDuplicateFieldAndSetter;
static final field core::int topLevelFieldAndDuplicateSetter = 1;
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
+var field = topLevelMethod;
+ ^";
static const field dynamic _exports# = #C1 /*isLegacy*/;
static method topLevelMethod() → core::int
return 1;
@@ -203,45 +274,89 @@
}
static method topLevelMethodAndSetter2() → core::int
return 1;
+@invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@topLevelMethod
+ ^"
static method test() → dynamic {
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
topLevelMethod();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
(topLevelMethod)();
^"{dynamic}.call();
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+ if(invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:7: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ if (topLevelMethod) {}
+ ^") {
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod;
+ ^";
+ @invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:4: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+ @topLevelMethod
+ ^" dynamic foo;
+ switch(null) {
+ #L1:
+ case invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:10: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ case topLevelMethod;
+ ^":
+ {
+ ;
+ }
+ }
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^" || invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod || topLevelMethod;
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod + 0;
+ ^"{<invalid>}.+(0);
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:97:18: Error: '~' isn't a binary operator.
+ topLevelMethod ~ 0;
+ ^";
+ let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" in #t1 == null ?{invalid-type} invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:98:21: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod ?? topLevelMethod;
+ ^" : #t1;
+ let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:99:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo;
+ ^" in #t2 == null ?{invalid-type} null : #t2{<invalid>}.foo;
+ let final invalid-type #t3 = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:100:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+ topLevelMethod?.foo();
+ ^" in #t3 == null ?{dynamic} null : #t3{dynamic}.foo();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:101:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
topLevelGetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:102:18: Error: Can't assign to this.
topLevelSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:103:3: Error: Can't use 'topLevelField' because it is declared more than once.
topLevelField;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:104:17: Error: Can't assign to this.
topLevelField = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:105:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
topLevelDuplicateFieldAndSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:106:35: Error: Can't assign to this.
topLevelDuplicateFieldAndSetter = 0;
^";
self::topLevelFieldAndDuplicateSetter;
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:108:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
topLevelFieldAndDuplicateSetter = 0;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:109:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
topLevelDuplicateFieldAndDuplicateSetter;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:110:44: Error: Can't assign to this.
topLevelDuplicateFieldAndDuplicateSetter = 0;
^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:111:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
topLevelMethodAndSetter1 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:112:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
topLevelMethodAndSetter2 = 0;
^^^^^^^^^^^^^^^^^^^^^^^^";
}
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 42c7fc9..47b80dd 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -9,8 +9,6 @@
dart2js/late_statics: SemiFuzzFailure # dartbug.com/45854
constructor_tearoffs/call_instantiation: TypeCheckError
-constructor_tearoffs/issue46719: RuntimeError
-constructor_tearoffs/issue46887: RuntimeError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 4fdbf7c..dc74759 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -7,8 +7,6 @@
# Kernel files are produced by compiling Dart code via Fasta.
constructor_tearoffs/call_instantiation: TypeCheckError
-constructor_tearoffs/issue46719: RuntimeError
-constructor_tearoffs/issue46887: RuntimeError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index e2c8473..8675902 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -76,6 +76,7 @@
general/issue45700.crash: FormatterCrash
general/many_errors: FormatterCrash
general/missing_prefix_name: FormatterCrash
+general/null_aware_super: FormatterCrash
general/null_safety_invalid_experiment: FormatterCrash
general/null_safety_invalid_experiment_and_language_version: FormatterCrash
general/type_parameters_on_void: FormatterCrash
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index a641ff3..7263971 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -12,8 +12,6 @@
dart2js/late_statics: SemiFuzzFailure # dartbug.com/45854
constructor_tearoffs/call_instantiation: TypeCheckError
-constructor_tearoffs/issue46719: RuntimeError
-constructor_tearoffs/issue46887: RuntimeError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
index 0d705a2..ce22dc6 100644
--- a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
+++ b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
@@ -42,6 +42,7 @@
import 'package:_fe_analyzer_shared/src/parser/assert.dart';
import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
+import 'package:_fe_analyzer_shared/src/parser/constructor_reference_context.dart';
import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/formal_parameter_kind.dart';
import 'package:_fe_analyzer_shared/src/parser/identifier_context.dart';
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index b2c5e0e..9a9f894 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -6096,9 +6096,14 @@
@override
DartType getStaticTypeInternal(StaticTypeContext context) {
- FunctionType type = expression.getStaticType(context) as FunctionType;
- return Substitution.fromPairs(type.typeParameters, typeArguments)
- .substituteType(type.withoutTypeParameters);
+ DartType type = expression.getStaticType(context);
+ if (type is FunctionType) {
+ return Substitution.fromPairs(type.typeParameters, typeArguments)
+ .substituteType(type.withoutTypeParameters);
+ }
+ assert(type is InvalidType || type is NeverType,
+ "Unexpected operand type $type for $expression");
+ return type;
}
@override
diff --git a/pkg/kernel/lib/type_checker.dart b/pkg/kernel/lib/type_checker.dart
index 401b4ef..8d9cacc 100644
--- a/pkg/kernel/lib/type_checker.dart
+++ b/pkg/kernel/lib/type_checker.dart
@@ -253,7 +253,7 @@
while (type is TypeParameterType) {
type = type.bound;
}
- if (type is NeverType || type is NullType) {
+ if (type is NeverType || type is NullType || type is InvalidType) {
// The bottom type is a subtype of all types, so it should be allowed.
return Substitution.bottomForClass(superclass);
}
@@ -479,7 +479,7 @@
@override
DartType visitInvalidExpression(InvalidExpression node) {
// Don't type check `node.expression`.
- return const NeverType.nonNullable();
+ return const InvalidType();
}
@override
@@ -506,6 +506,9 @@
@override
DartType visitInstantiation(Instantiation node) {
DartType type = visitExpression(node.expression);
+ if (type is InvalidType || type is NeverType) {
+ return type;
+ }
if (type is! FunctionType) {
fail(node, 'Not a function type: $type');
return NeverType.fromNullability(currentLibrary!.nonNullable);
@@ -533,6 +536,9 @@
@override
DartType visitTypedefTearOff(TypedefTearOff node) {
DartType type = visitExpression(node.expression);
+ if (type is InvalidType || type is NeverType) {
+ return type;
+ }
if (type is! FunctionType) {
fail(node, 'Not a function type: $type');
return NeverType.fromNullability(currentLibrary!.nonNullable);
@@ -1061,7 +1067,15 @@
DartType visitDynamicGet(DynamicGet node) {
DartType receiverType = visitExpression(node.receiver);
checkUnresolvedInvocation(receiverType, node);
- return const DynamicType();
+ switch (node.kind) {
+ case DynamicAccessKind.Dynamic:
+ return const DynamicType();
+ case DynamicAccessKind.Never:
+ return new NeverType.internal(currentLibrary!.nonNullable);
+ case DynamicAccessKind.Invalid:
+ case DynamicAccessKind.Unresolved:
+ return const InvalidType();
+ }
}
@override
@@ -1071,7 +1085,15 @@
node.arguments.positional.forEach(visitExpression);
node.arguments.named
.forEach((NamedExpression n) => visitExpression(n.value));
- return const DynamicType();
+ switch (node.kind) {
+ case DynamicAccessKind.Dynamic:
+ return const DynamicType();
+ case DynamicAccessKind.Never:
+ return new NeverType.internal(currentLibrary!.nonNullable);
+ case DynamicAccessKind.Invalid:
+ case DynamicAccessKind.Unresolved:
+ return const InvalidType();
+ }
}
@override
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 355d3ba..ba9c4bb 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -909,6 +909,7 @@
":dart_snapshot_cc",
":standalone_dart_io",
"..:libdart_precompiler",
+ "//third_party/boringssl", # for secure_socket_utils_test
"//third_party/zlib",
]
include_dirs = [
diff --git a/runtime/bin/builtin_impl_sources.gni b/runtime/bin/builtin_impl_sources.gni
index d1f7d95..9c14afb 100644
--- a/runtime/bin/builtin_impl_sources.gni
+++ b/runtime/bin/builtin_impl_sources.gni
@@ -4,7 +4,7 @@
# This file contains all C++ sources for the dart:_builtin library and
# some of the C++ sources for the dart:io library. The rest are in
-# io_impl_sources.gypi.
+# io_impl_sources.gni.
builtin_impl_sources = [
"crypto.cc",
diff --git a/runtime/bin/io_impl_sources.gni b/runtime/bin/io_impl_sources.gni
index 846c775..8c368bb 100644
--- a/runtime/bin/io_impl_sources.gni
+++ b/runtime/bin/io_impl_sources.gni
@@ -3,7 +3,7 @@
# BSD-style license that can be found in the LICENSE file.
# This file contains some C++ sources for the dart:io library. The other
-# implementation files are in builtin_impl_sources.gypi.
+# implementation files are in builtin_impl_sources.gni.
io_impl_sources = [
"console.h",
"console_posix.cc",
@@ -109,4 +109,7 @@
"typed_data_utils.h",
]
-io_impl_tests = [ "platform_macos_test.cc" ]
+io_impl_tests = [
+ "platform_macos_test.cc",
+ "secure_socket_utils_test.cc",
+]
diff --git a/runtime/bin/secure_socket_utils.cc b/runtime/bin/secure_socket_utils.cc
index ce38f8f..ad738e97 100644
--- a/runtime/bin/secure_socket_utils.cc
+++ b/runtime/bin/secure_socket_utils.cc
@@ -89,6 +89,22 @@
SecureSocketUtils::CheckStatusSSL(status, type, message, NULL);
}
+bool SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(X509* root_cert) {
+ ASN1_TIME* not_before = X509_get_notBefore(root_cert);
+ ASN1_TIME* not_after = X509_get_notAfter(root_cert);
+ int days_since_valid = 0;
+ int secs_since_valid = 0;
+ int days_before_invalid = 0;
+ int secs_before_invalid = 0;
+ // nullptr indicates current date/time
+ ASN1_TIME_diff(&days_since_valid, &secs_since_valid, not_before,
+ /*to=*/nullptr);
+ ASN1_TIME_diff(&days_before_invalid, &secs_before_invalid,
+ /*from=*/nullptr, not_after);
+ return days_since_valid >= 0 && secs_since_valid >= 0 &&
+ days_before_invalid >= 0 && secs_before_invalid >= 0;
+}
+
} // namespace bin
} // namespace dart
diff --git a/runtime/bin/secure_socket_utils.h b/runtime/bin/secure_socket_utils.h
index ddbd2b6..e8e306e 100644
--- a/runtime/bin/secure_socket_utils.h
+++ b/runtime/bin/secure_socket_utils.h
@@ -39,6 +39,8 @@
static void CheckStatus(int status, const char* type, const char* message);
+ static bool IsCurrentTimeInsideCertValidDateRange(X509* root_cert);
+
static bool NoPEMStartLine() {
uint32_t last_error = ERR_peek_last_error();
return (ERR_GET_LIB(last_error) == ERR_LIB_PEM) &&
diff --git a/runtime/bin/secure_socket_utils_test.cc b/runtime/bin/secure_socket_utils_test.cc
new file mode 100644
index 0000000..89bbb12
--- /dev/null
+++ b/runtime/bin/secure_socket_utils_test.cc
@@ -0,0 +1,152 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
+
+#include <openssl/bio.h>
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+
+#include "bin/secure_socket_utils.h"
+#include "platform/globals.h"
+#include "vm/unit_test.h"
+
+namespace dart {
+namespace bin {
+
+TEST_CASE(SecureSocketUtils_CertNotYetValid) {
+ const char* valid_after_2121 =
+ "-----BEGIN CERTIFICATE-----\n"
+ "MIIFbzCCA1egAwIBAgIUO6PLWc8zatZF5Cc07uYdjDy4UGowDQYJKoZIhvcNAQEL\n"
+ "BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
+ "GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAiGA8yMTIxMDgwMTE3MDUwNFoYDzIx\n"
+ "MzEwNzMwMTcwNTA0WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0\n"
+ "ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG\n"
+ "9w0BAQEFAAOCAg8AMIICCgKCAgEAvgmd8v2K4ngOI/dOa/sn63uetG9sUhzTdViO\n"
+ "87q7s4XeFmziS3BMQyMqTmrIHJAKuZp66ZH6ZOno54UX2KedI4hf0He3NbAitGgI\n"
+ "o6z/WBglH+ByORUEU1Yzh03akja5C8Hp9IUpC6PGJEolPsZeoBMZs1bCxwD9miHy\n"
+ "bs/NYsUGsDJwUZFEW2UTjYuyeTPSdkIgoZIPCp8tp9E6jy7fb2H2XE0Z+rJ4rU/e\n"
+ "0aQ1Q7gNBnBWrJAGgYfQj9XbFx6nNEW6XUBqIV/uUmz9y64pMQ21I9e64Qn5KHDo\n"
+ "08CzQ651dGY1GJkziUuQITkPN4EqS6D5R74ruTJW0lp/cg7RNPoTAXBXI+Nqz7WE\n"
+ "bscerDKFGgaAZ8WXqvwpHqwGeiilZT/OwSwjrN8zaW6eLljAStGhLgn6j/Te8rfW\n"
+ "9+AGSjesJ8dJ+dppFG8A+1Auvtii12Jk8hj/IM/udt5ZLs6meSOYPeNF3UqHrA7s\n"
+ "O39KsMy7ppFQPwBBXgKZMXQlt6uMmi/2s/OHXZRpf7c09n6+3NKYutMsYHO6SrlD\n"
+ "hYcWdpjlv632O5WAdjehohDLfYLugsPPt/hJC3UAA8QfNrEXVHx3D2qgowLB9Brx\n"
+ "zC7aT/0rmVQu2wXvekc8tIRUnDgr8tLjSuEyj9nBb7cWUOWi/1YiEb5T1x7/zyhP\n"
+ "5p8g8l8CAwEAAaNTMFEwHQYDVR0OBBYEFN1Mf9EDYiYYds9IB9qvOYEmDhs5MB8G\n"
+ "A1UdIwQYMBaAFN1Mf9EDYiYYds9IB9qvOYEmDhs5MA8GA1UdEwEB/wQFMAMBAf8w\n"
+ "DQYJKoZIhvcNAQELBQADggIBAA8DjwXFECGFKPNc//kTSUUcMxRLORBH/oSe2hml\n"
+ "dNRtjkVHWcPDsn5Md0cM6e0kOXw2AEqRK9keYN/27JGHBvzu1MbzSHd1czeGx46d\n"
+ "5QI5MyI0U8iiYoW8IJURrnAuD+9yS6O4b7c9qnTwwdsAy98gzfWZbrb++mgoWDrt\n"
+ "Ma4V1zKMUZYezV95zlBmB9sKxbJlLP6pMGPENsbNuqB1KK8uAYnd4YYdEx97lt7o\n"
+ "SeUySohZQasheI73jJuYdDwqDcGCtRvwaOyDuOsDZVNqjNiqiI3aaGVII2lNbjOO\n"
+ "g85pN4pWB+1b3wdEt+c5VETYX3SiJNOyhy3rp68liegeeNVTgNdp5vSxmogWxtCN\n"
+ "uv6uim0Lw//Ezz6acc15CLdaS1msS2V/5Ogk7/cYEajtWp8l7/dy9Gf8ekzRBaET\n"
+ "3vw7sla+YhsUI+NZQG79gfkDfYmRMpW6djaWgY9c5l/NJ8ev1ZQWj1i5t4w7lW5h\n"
+ "3wB8qVV7BQ3zY36iEes4hvmXmykCOgQ2yXTOVZVhKYAxoaRMgkJSWL9rsPvmHEM8\n"
+ "b3gjUC/5nwTzLZAw0iYLtPpSnFwhprZPPWF+k5FQAx/UQ+0qjqY8EbfWLzexm+7P\n"
+ "Sm35NlpFHH6vyyj48RVYQcw8KvDvbuUwjiauydhYCCLoQVdywec8d3fUu6NdBusm\n"
+ "q8uu\n"
+ "-----END CERTIFICATE-----\n";
+ size_t len = strlen(valid_after_2121);
+ BIO* cert_bio = BIO_new(BIO_s_mem());
+ BIO_write(cert_bio, valid_after_2121, len);
+ X509* cert_X509 = PEM_read_bio_X509(cert_bio, NULL, NULL, NULL);
+ EXPECT(cert_X509 != nullptr);
+ EXPECT(!SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(cert_X509));
+ BIO_free(cert_bio);
+ X509_free(cert_X509);
+}
+
+TEST_CASE(SecureSocketUtils_CertValid) {
+ const char* valid_in_2021 =
+ "-----BEGIN CERTIFICATE-----\n"
+ "MIIFbTCCA1WgAwIBAgIUFmzKjF/PfpFX+5+pF1LXzbFzL/4wDQYJKoZIhvcNAQEL\n"
+ "BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
+ "GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yMTA4MjUxNzA1NTNaGA8yMTIx\n"
+ "MDgwMTE3MDU1M1owRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx\n"
+ "ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCAiIwDQYJKoZIhvcN\n"
+ "AQEBBQADggIPADCCAgoCggIBAMdupz2RQB1fHii6EACZq8MPbDk+xoxHb111Z85C\n"
+ "VK47tC+Sn16DmWKwmcMp7mbPIO8jUSJOk8FrZWsSFZ9xBzXb/H2W6kFNb8XqKyhH\n"
+ "vweeTekPuONrpJIqBJiIEXqyMoxiqwbtl38ZVo5DwFvc8mriFVYapMLb3DKQxOMR\n"
+ "uM32R40VVf1S/LcYab/UTdxdtoI6MINv5SFsmp7Cd+8nUMXdetCTdlu5aoHSTUE0\n"
+ "EzsYG4WTQqi3WpvnTuFlFq4LLd7NYmWUoiUJiB5u7vSEZM91u/eGtOm9Y7OzwJUp\n"
+ "Obv3hEIrNS0c/qXuG89+7vlcW5AqJkyWhNgoMRXFXYlqPFKWwYOU0t/vjSlFlB3u\n"
+ "8a0zNur6d95IC/9XSGFgW3FYnEzTPiorR8y/dbw8P5ioP2yMrm1b6v+TlyOyQ3Hu\n"
+ "gCKJy7Ah1IpUG7wefZIpTN8CaumusUwJdCcGBPfwyOD1yvF8UyETJ5ZB7JC7jXgj\n"
+ "KUpytSeN79m15s+ksn6tS9uLqTHr3Yr7J7ha3m2UO4gl2QOa20/fdmenVqEsq+Z7\n"
+ "1PuDaitEVaCQE3/286rwNQPgoDgDbIckZOzOzYq0b3lZZBlSZRpcsrBEf3KJIz9Y\n"
+ "X5R5bLvw/qtCVjHDankA2EqMYKf9LBCLkQ0GUMpu3aS7xZhn4A6tIcqtRpe1+ruZ\n"
+ "k5GdAgMBAAGjUzBRMB0GA1UdDgQWBBRzt8cxhCiZoLnnKWgLDt5nPctfYTAfBgNV\n"
+ "HSMEGDAWgBRzt8cxhCiZoLnnKWgLDt5nPctfYTAPBgNVHRMBAf8EBTADAQH/MA0G\n"
+ "CSqGSIb3DQEBCwUAA4ICAQCUzlwgMiwnNo4VM2FCroJpGP/8gEsMcUUpfeQnKALm\n"
+ "MudiNPWVQk7uHeAKXvzoSlq/7/ZYKqlXxqiNXhkawnBl0lyR4Bnj8GbQMkujZzUS\n"
+ "EUI5UlPqlvy4WJw9ybgPPyl5D/0D7dkK0xAVxMktjaCGKtPQ/UCY2APxyoISmhSl\n"
+ "0+ql1YpHM1XIty/mzlTAIZ7bnbKDPA3J3OjaCP0Skhf2g4Wkch3+6Wx5xfYnyRv1\n"
+ "UbihStrvN1dH9d+D642C45qpRa2l3GJvDxdyr6xSa3l9IajUYbpMFe0yymuxqWhX\n"
+ "bDLi0ouKmowKNiiqUmUEJhJBbt/XdTIeeyTcaz2ZHVmMU9E72OhsjzxAvajoDBv9\n"
+ "FJ3THlLlh7iHBv24Hghx5V6FCliO6uLUdLB1d8WNUtEWdzf17ZlPqRIkjSY+6kSJ\n"
+ "dNwQhl5kYL0caOKWvEEP9f2HondKxtVpYGHgtKvcvCj/hz8UCk9R3odcwweq48RK\n"
+ "fKNRHy3nQfWttSSbBH8SwSmtX2VesMu6jMcqwU/8YSrWTJa/5UexlNR9qRrDnhya\n"
+ "kqZCaETfx15LUkPPuyn+z76z2+hNW0VDpnUVRystHHkDz+q2cbH/bsfY47Et0Bsb\n"
+ "TozWCPRzEkmzTTaAZLtqXa5MzWsZweBzK5owXlOPTD2eo1UphgtOqsKPE/RB/Qgq\n"
+ "dw==\n"
+ "-----END CERTIFICATE-----\n";
+ size_t len = strlen(valid_in_2021);
+ BIO* cert_bio = BIO_new(BIO_s_mem());
+ BIO_write(cert_bio, valid_in_2021, len);
+ X509* cert_X509 = PEM_read_bio_X509(cert_bio, NULL, NULL, NULL);
+ EXPECT(cert_X509 != nullptr);
+ EXPECT(SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(cert_X509));
+ BIO_free(cert_bio);
+ X509_free(cert_X509);
+}
+
+TEST_CASE(SecureSocketUtils_CertAlreadyExpired) {
+ const char* valid_before_2021 =
+ "-----BEGIN CERTIFICATE-----\n"
+ "MIIFazCCA1OgAwIBAgIUY+S+GbniK1WC9821VgAJusuF33UwDQYJKoZIhvcNAQEL\n"
+ "BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM\n"
+ "GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDA4MjUxNzAyNDFaFw0yMDA5\n"
+ "MjQxNzAyNDFaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw\n"
+ "HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEB\n"
+ "AQUAA4ICDwAwggIKAoICAQDNfCrlXNeGKpF0PHzjkG5UfsSYvwfNUTqnzC3AkTMY\n"
+ "AZyyqDCA780TPZH48aZ/QFegFdIBUkEijFLuRKUqAv5jHxaVhMQcr5ujdCAJWT+e\n"
+ "5jc0cvukdWnFFqZwJWur4/3RsUnaWXY+oDk0pGuZD7VeNm9PTi1pQogwAivhSynM\n"
+ "YxCq0cO0JPM0Dr7ks99V1gDWrEOqjJGeEzvRlwdx+GPkvMvmrSHxWOphN/ji2MRx\n"
+ "tZ0T5FrrrGEtfp8gtTe5q5V+di1GvbuE6Y+MVYGIJeu3yqHkoh/TTS9Ex+QRm9nh\n"
+ "QM1Pm4hi2PofSSEdj15cUw6vfPJWewZiytcVJFTt2in1YuYufZMwPLP/ylnAQLkM\n"
+ "dq3TIF1g4ym9xLgQ/ZgnMX6g6ReOqG/1Au5InPUXMo3n56N959gQD1K8J2C4xtQP\n"
+ "MxrDAbGuYOmCterPAmW4aIVgbxIXwEK7lzTZyHUOvwjNaEfu0fuVOd9NC2B+g8So\n"
+ "I188ty96/BVwQO5bAzGekJn9xHVcTUU067b5zNfCpo4XGKaKVNGGR+AXhtjRXbrX\n"
+ "N9/BOHdABlV5W32HkhT4fr/BSSp/UyCnBZRPvLcI3Nvraok8snn/eGt6IW3y171O\n"
+ "3tYx4Gz7+M2K/T1rMuujVXOx6srtZ8oQIqFgZTR0sKKsim1umHAmoTJrG3wEOlUs\n"
+ "awIDAQABo1MwUTAdBgNVHQ4EFgQUzTOEhm+P6rWyBkKAkctA9FvheC8wHwYDVR0j\n"
+ "BBgwFoAUzTOEhm+P6rWyBkKAkctA9FvheC8wDwYDVR0TAQH/BAUwAwEB/zANBgkq\n"
+ "hkiG9w0BAQsFAAOCAgEABYYIBheuGRbmRhsS39zy0jDhqmDbsyIFd3/NoMZ+WvW4\n"
+ "NFcVRATalIX6ScXl7RGs1p855OiqOHij1tCzBClZXZ1zWD2v0KfWMFjR/S79HJOI\n"
+ "w3RGaMvALUJtOCz5in5Odryuo3GBkxKNonS+HAjnrWosqBCorerjn/TdIscTbA6h\n"
+ "7Iwy5umyyY63E69ehD7aANc/mxk++BWdAs3kPSXMI7PDpWUW5WV0hPUpe3sf0eY8\n"
+ "skfXa+UJ2qDmVkMmHUIOhi92zTRv6ROQXGY52JhHZOFSFxvqjWkk1M8q6Vm2ln2s\n"
+ "2GUa2j4emp+zti2JuFAwDgEK8wyqlq14hA8hTHL27mxpht990QGAU+qmcfhUf/qd\n"
+ "cIPkbz53Dpezzd96SuHQyjALaTbEw2vis9WpsejOKiaAp8264t0DgtLUndj4wVfC\n"
+ "3xti1jubmouUEdbNh7bnDfXxdxuAECFzhEG9mrosnTemuUVQSXIyrNfHRKDEaGv1\n"
+ "zh2Jij4HI+OKnJuao/9vsbNPib7k8tR0JKbXZD3HvOfQi5wMtlCUedu9eZ3Cq9Mu\n"
+ "1NwIwFoSU5pwO4PopiYL2hAEJXd0SN6TnWZThU28qTulrCb8enNU6BfkokTlkmYs\n"
+ "HUzvFarVyhKbQkyD/P3ckC/p2mg9aE7iLO5wTY1gegcSDF4R4479t/aDWMmevis=\n"
+ "-----END CERTIFICATE-----\n";
+ size_t len = strlen(valid_before_2021);
+ BIO* cert_bio = BIO_new(BIO_s_mem());
+ BIO_write(cert_bio, valid_before_2021, len);
+ X509* cert_X509 = PEM_read_bio_X509(cert_bio, NULL, NULL, NULL);
+ EXPECT(cert_X509 != nullptr);
+ EXPECT(!SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(cert_X509));
+ BIO_free(cert_bio);
+ X509_free(cert_X509);
+}
+
+} // namespace bin
+} // namespace dart
+
+#endif // !defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/security_context_win.cc b/runtime/bin/security_context_win.cc
index f61ae55..2be09d4 100644
--- a/runtime/bin/security_context_win.cc
+++ b/runtime/bin/security_context_win.cc
@@ -111,6 +111,14 @@
Syslog::Print("\n");
}
+ if (!SecureSocketUtils::IsCurrentTimeInsideCertValidDateRange(root_cert)) {
+ if (SSL_LOG_STATUS) {
+ Syslog::Print("...certificate is outside of its valid date range\n");
+ }
+ X509_free(root_cert);
+ continue;
+ }
+
int status = X509_STORE_add_cert(store, root_cert);
if (status == 0) {
int error = ERR_get_error();
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index db0c8fc..14d202d 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -212,6 +212,9 @@
[ $arch != simarm && $arch != simarm64 && $arch != simarm64c && $compiler == dartk ]
complex_reload_test: RuntimeError
+[ $compiler == app_jitk && $system == linux ]
+get_vm_timeline_rpc_test: Skip # Timeout.
+
[ $compiler == dartk && $mode == debug ]
isolate_lifecycle_test: Skip # Flaky.
pause_idle_isolate_test: Skip # Flaky
diff --git a/runtime/observatory_2/tests/service_2/service_2_kernel.status b/runtime/observatory_2/tests/service_2/service_2_kernel.status
index d0bfe512..6b1b364 100644
--- a/runtime/observatory_2/tests/service_2/service_2_kernel.status
+++ b/runtime/observatory_2/tests/service_2/service_2_kernel.status
@@ -212,6 +212,9 @@
[ $arch != simarm && $arch != simarm64 && $arch != simarm64c && $compiler == dartk ]
complex_reload_test: RuntimeError
+[ $compiler == app_jitk && $system == linux ]
+get_vm_timeline_rpc_test: Skip # Timeout.
+
[ $compiler == dartk && $mode == debug ]
isolate_lifecycle_test: Skip # Flaky.
pause_idle_isolate_test: Skip # Flaky
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index 916604b..128d968 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -3175,15 +3175,14 @@
}
// Does identical check (object references are equal or not equal) with special
-// checks for boxed numbers.
-// Left and right are pushed on stack.
-// Return Zero condition flag set if equal.
-// Note: A Mint cannot contain a value that would fit in Smi.
+// checks for boxed numbers and returns with ZF set iff left and right are
+// identical.
static void GenerateIdenticalWithNumberCheckStub(Assembler* assembler,
const Register left,
const Register right) {
- Label reference_compare, done, check_mint;
+ Label reference_compare, check_mint;
// If any of the arguments is Smi do reference compare.
+ // Note: A Mint cannot contain a value that would fit in Smi.
__ BranchIfSmi(left, &reference_compare);
__ BranchIfSmi(right, &reference_compare);
@@ -3191,27 +3190,31 @@
__ CompareClassId(left, kDoubleCid);
__ b(&check_mint, NE);
__ CompareClassId(right, kDoubleCid);
- __ b(&done, NE);
+ __ b(&reference_compare, NE); // Do not branch directly to ret! See below.
// Double values bitwise compare.
__ LoadFieldFromOffset(left, left, target::Double::value_offset());
__ LoadFieldFromOffset(right, right, target::Double::value_offset());
__ CompareRegisters(left, right);
- __ b(&done);
+ __ ret();
__ Bind(&check_mint);
__ CompareClassId(left, kMintCid);
__ b(&reference_compare, NE);
__ CompareClassId(right, kMintCid);
- __ b(&done, NE);
+ __ b(&reference_compare, NE); // Do not branch directly to ret! See below.
__ LoadFieldFromOffset(left, left, target::Mint::value_offset());
__ LoadFieldFromOffset(right, right, target::Mint::value_offset());
__ CompareRegisters(left, right);
- __ b(&done);
+ __ ret();
__ Bind(&reference_compare);
__ CompareObjectRegisters(left, right);
- __ Bind(&done);
+ // None of the branches above go directly here to avoid generating a conditional
+ // branch to a ret instruction.
+ // This is an attempt to work-around a possible CPU on Exynos 2100 SoC.
+ // See https://github.com/flutter/flutter/issues/88261
+ __ ret();
}
// Called only from unoptimized code. All relevant registers have been saved.
@@ -3237,7 +3240,6 @@
__ LoadFromOffset(left, SP, 1 * target::kWordSize);
__ LoadFromOffset(right, SP, 0 * target::kWordSize);
GenerateIdenticalWithNumberCheckStub(assembler, left, right);
- __ ret();
#if !defined(PRODUCT)
__ Bind(&stepping);
@@ -3261,7 +3263,6 @@
__ LoadFromOffset(left, SP, 1 * target::kWordSize);
__ LoadFromOffset(right, SP, 0 * target::kWordSize);
GenerateIdenticalWithNumberCheckStub(assembler, left, right);
- __ ret();
}
// Called from megamorphic call sites.
diff --git a/tests/language/constructor/named_constructor_test.dart b/tests/language/constructor/named_constructor_test.dart
index 033b3d8..5b37427 100644
--- a/tests/language/constructor/named_constructor_test.dart
+++ b/tests/language/constructor/named_constructor_test.dart
@@ -37,25 +37,26 @@
new prefix<int>.Class().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
+ // ^
// [cfe] Couldn't find constructor 'prefix.Class'.
new prefix.Class<int>().value;
// 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
new prefix<int>.Class<int>().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
// [cfe] A constructor invocation can't have type arguments after the constructor name.
+ // [cfe] Couldn't find constructor 'prefix.Class'.
new prefix.Class.named().value;
// 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
new prefix<int>.Class.named().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+ // [cfe] Couldn't find constructor 'prefix.Class'.
// [cfe] Expected '(' after this.
@@ -71,19 +72,19 @@
new prefix<int>.Class<int>.named().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
// [cfe] A constructor invocation can't have type arguments after the constructor name.
+ // [cfe] Couldn't find constructor 'prefix.Class'.
// 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
new prefix<int>.Class.named<int>().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+ // [cfe] Couldn't find constructor 'prefix.Class'.
// [cfe] Expected '(' after this.
@@ -97,8 +98,8 @@
new prefix<int>.Class<int>.named<int>().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
// [cfe] A constructor invocation can't have type arguments after the constructor name.
+ // [cfe] Couldn't find constructor 'prefix.Class'.
}
diff --git a/tests/language/constructor/reference_test.dart b/tests/language/constructor/reference_test.dart
index 55c1f01..0a7cb37 100644
--- a/tests/language/constructor/reference_test.dart
+++ b/tests/language/constructor/reference_test.dart
@@ -33,8 +33,6 @@
new Foo.bar<int>.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // ^
- // [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
new Foo.bar.baz<int>();
@@ -69,8 +67,6 @@
const Foo.bar<int>.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // ^
- // [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
const Foo.bar.baz<int>();
@@ -107,10 +103,9 @@
//^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
// ^
-// [cfe] A constructor invocation can't have type arguments after the constructor name.
+// [cfe] Couldn't find constructor 'bar'.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Couldn't find constructor 'Foo.bar.baz'.
Foo.bar.baz<int>();
// ^
// [cfe] Member not found: 'bar'.
diff --git a/tests/language_2/constructor/named_constructor_test.dart b/tests/language_2/constructor/named_constructor_test.dart
index c69961f..0cad797 100644
--- a/tests/language_2/constructor/named_constructor_test.dart
+++ b/tests/language_2/constructor/named_constructor_test.dart
@@ -39,25 +39,26 @@
new prefix<int>.Class().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
+ // ^
// [cfe] Couldn't find constructor 'prefix.Class'.
new prefix.Class<int>().value;
// 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
new prefix<int>.Class<int>().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
// [cfe] A constructor invocation can't have type arguments after the constructor name.
+ // [cfe] Couldn't find constructor 'prefix.Class'.
new prefix.Class.named().value;
// 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
new prefix<int>.Class.named().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+ // [cfe] Couldn't find constructor 'prefix.Class'.
// [cfe] Expected '(' after this.
@@ -73,19 +74,19 @@
new prefix<int>.Class<int>.named().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
// [cfe] A constructor invocation can't have type arguments after the constructor name.
+ // [cfe] Couldn't find constructor 'prefix.Class'.
// 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
new prefix<int>.Class.named<int>().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
+ // [cfe] Couldn't find constructor 'prefix.Class'.
// [cfe] Expected '(' after this.
@@ -99,8 +100,8 @@
new prefix<int>.Class<int>.named<int>().value;
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // [cfe] Couldn't find constructor 'prefix.Class'.
// ^^^^^
// [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
// [cfe] A constructor invocation can't have type arguments after the constructor name.
+ // [cfe] Couldn't find constructor 'prefix.Class'.
}
diff --git a/tests/language_2/constructor/reference_test.dart b/tests/language_2/constructor/reference_test.dart
index b371419..776fe8b 100644
--- a/tests/language_2/constructor/reference_test.dart
+++ b/tests/language_2/constructor/reference_test.dart
@@ -35,8 +35,6 @@
new Foo.bar<int>.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // ^
- // [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
new Foo.bar.baz<int>();
@@ -71,8 +69,6 @@
const Foo.bar<int>.baz();
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.CREATION_WITH_NON_TYPE
- // ^
- // [cfe] A constructor invocation can't have type arguments after the constructor name.
// ^
// [cfe] Couldn't find constructor 'Foo.bar.baz'.
const Foo.bar.baz<int>();
@@ -109,10 +105,9 @@
//^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.DISALLOWED_TYPE_INSTANTIATION_EXPRESSION
// ^
-// [cfe] A constructor invocation can't have type arguments after the constructor name.
+// [cfe] Couldn't find constructor 'bar'.
// ^^^
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD
-// [cfe] Couldn't find constructor 'Foo.bar.baz'.
Foo.bar.baz<int>();
// ^
// [cfe] Member not found: 'bar'.
diff --git a/tools/VERSION b/tools/VERSION
index f2a156c..d596d4b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 59
+PRERELEASE 60
PRERELEASE_PATCH 0
\ No newline at end of file