Version 2.18.0-1.0.dev
Merge commit '08b776ac47d7dc14d2bd7414048904a47227dc7b' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
index 8375411..ccaf338 100644
--- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
@@ -251,6 +251,8 @@
IncrementalKernelTarget? get kernelTargetForTesting => _lastGoodKernelTarget;
+ bool get skipExperimentalInvalidationChecksForTesting => false;
+
/// Returns the [Package] used for the package [packageName] in the most
/// recent compilation.
Package? getPackageForPackageName(String packageName) =>
@@ -1245,52 +1247,54 @@
// procedures, if the changed file is used as a mixin anywhere else
// we can't only recompile the changed file.
// TODO(jensj): Check for mixins in a smarter and faster way.
- for (LibraryBuilder builder in reusedResult.notReusedLibraries) {
- if (missingSources!.contains(builder.fileUri)) {
- continue;
- }
- Library lib = builder.library;
- for (Class c in lib.classes) {
- if (!c.isAnonymousMixin && !c.isEliminatedMixin) {
+ if (!skipExperimentalInvalidationChecksForTesting) {
+ for (LibraryBuilder builder in reusedResult.notReusedLibraries) {
+ if (missingSources!.contains(builder.fileUri)) {
continue;
}
- for (Supertype supertype in c.implementedTypes) {
- if (missingSources.contains(supertype.classNode.fileUri)) {
- // This is probably a mixin from one of the libraries we want
- // to rebuild only the body of.
- // TODO(jensj): We can probably add this to the rebuildBodies
- // list and just rebuild that library too.
- // print("Usage of mixin in ${lib.importUri}");
- return null;
+ Library lib = builder.library;
+ for (Class c in lib.classes) {
+ if (!c.isAnonymousMixin && !c.isEliminatedMixin) {
+ continue;
+ }
+ for (Supertype supertype in c.implementedTypes) {
+ if (missingSources.contains(supertype.classNode.fileUri)) {
+ // This is probably a mixin from one of the libraries we want
+ // to rebuild only the body of.
+ // TODO(jensj): We can probably add this to the rebuildBodies
+ // list and just rebuild that library too.
+ // print("Usage of mixin in ${lib.importUri}");
+ return null;
+ }
}
}
}
- }
- // Special case FFI: Because the VM ffi transformation inlines
- // size and position, if the changed file contains ffi structs
- // we can't only recompile the changed file.
- // TODO(jensj): Come up with something smarter for this. E.g. we might
- // check if the FFI-classes are used in other libraries, or as actual nested
- // structures in other FFI-classes etc.
- // Alternatively (https://github.com/dart-lang/sdk/issues/45899) we might
- // do something else entirely that doesn't require special handling.
- if (_importsFfi()) {
- for (LibraryBuilder builder in rebuildBodies!) {
- Library lib = builder.library;
- for (LibraryDependency dependency in lib.dependencies) {
- Library importLibrary = dependency.targetLibrary;
- if (importLibrary.importUri == dartFfiUri) {
- // Explicitly imports dart:ffi.
- return null;
- }
- for (Reference exportReference in importLibrary.additionalExports) {
- NamedNode? export = exportReference.node;
- if (export is Class) {
- Class c = export;
- if (c.enclosingLibrary.importUri == dartFfiUri) {
- // Implicitly imports a dart:ffi class.
- return null;
+ // Special case FFI: Because the VM ffi transformation inlines
+ // size and position, if the changed file contains ffi structs
+ // we can't only recompile the changed file.
+ // TODO(jensj): Come up with something smarter for this. E.g. we might
+ // check if the FFI-classes are used in other libraries, or as actual
+ // nested structures in other FFI-classes etc.
+ // Alternatively (https://github.com/dart-lang/sdk/issues/45899) we might
+ // do something else entirely that doesn't require special handling.
+ if (_importsFfi()) {
+ for (LibraryBuilder builder in rebuildBodies!) {
+ Library lib = builder.library;
+ for (LibraryDependency dependency in lib.dependencies) {
+ Library importLibrary = dependency.targetLibrary;
+ if (importLibrary.importUri == dartFfiUri) {
+ // Explicitly imports dart:ffi.
+ return null;
+ }
+ for (Reference exportReference in importLibrary.additionalExports) {
+ NamedNode? export = exportReference.node;
+ if (export is Class) {
+ Class c = export;
+ if (c.enclosingLibrary.importUri == dartFfiUri) {
+ // Implicitly imports a dart:ffi class.
+ return null;
+ }
}
}
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
index e177ba8..b18526f 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
@@ -2,8 +2,10 @@
// 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:_fe_analyzer_shared/src/macros/executor.dart' as macro;
import 'package:_fe_analyzer_shared/src/messages/codes.dart';
import 'package:_fe_analyzer_shared/src/parser/parser.dart';
+import 'package:_fe_analyzer_shared/src/parser/quote.dart';
import 'package:_fe_analyzer_shared/src/scanner/error_token.dart';
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
@@ -15,7 +17,6 @@
import '../../scope.dart';
import '../../source/diet_parser.dart';
import '../../source/source_library_builder.dart';
-
import 'macro.dart';
List<MacroApplication>? prebuildAnnotations(
@@ -78,7 +79,35 @@
}
class _ArgumentsNode implements _Node {
- _ArgumentsNode();
+ final List<Object?> positionalArguments;
+ final Map<String, Object?> namedArguments;
+
+ _ArgumentsNode(this.positionalArguments, this.namedArguments);
+}
+
+class _PrimitiveValueNode implements _Node {
+ final Object? value;
+
+ _PrimitiveValueNode(this.value);
+}
+
+class _TokenNode implements _Node {
+ final Token token;
+
+ _TokenNode(this.token);
+}
+
+class _NamedArgumentIdentifierNode implements _Node {
+ final String name;
+
+ _NamedArgumentIdentifierNode(this.name);
+}
+
+class _NamedArgumentNode implements _Node {
+ final String name;
+ final Object? value;
+
+ _NamedArgumentNode(this.name, this.value);
}
class _MacroListener implements Listener {
@@ -154,8 +183,11 @@
if (macroClass != null &&
constructorName != null &&
argumentsNode is _ArgumentsNode) {
- push(new _MacroApplicationNode(
- new MacroApplication(macroClass, constructorName)));
+ push(new _MacroApplicationNode(new MacroApplication(
+ macroClass,
+ constructorName,
+ new macro.Arguments(argumentsNode.positionalArguments,
+ argumentsNode.namedArguments))));
return;
}
}
@@ -211,6 +243,9 @@
pushUnsupported();
}
break;
+ case IdentifierContext.namedArgumentReference:
+ push(new _NamedArgumentIdentifierNode(token.lexeme));
+ break;
default:
pushUnsupported();
break;
@@ -224,11 +259,27 @@
@override
void endArguments(int count, Token beginToken, Token endToken) {
- if (count == 0) {
- push(new _ArgumentsNode());
- } else {
- // TODO(johnniwinther): Handle arguments.
+ if (unrecognized) {
pushUnsupported();
+ return;
+ }
+ List<Object?> positionalArguments = [];
+ Map<String, Object?> namedArguments = {};
+ for (int i = 0; i < count; i++) {
+ _Node node = pop();
+ if (node is _PrimitiveValueNode) {
+ positionalArguments.add(node.value);
+ } else if (node is _NamedArgumentNode &&
+ !namedArguments.containsKey(node.name)) {
+ namedArguments[node.name] = node.value;
+ } else {
+ _unsupported();
+ }
+ }
+ if (unrecognized) {
+ pushUnsupported();
+ } else {
+ push(new _ArgumentsNode(positionalArguments, namedArguments));
}
}
@@ -248,6 +299,99 @@
// context.
}
+ @override
+ void handleNamedArgument(Token colon) {
+ if (unrecognized) {
+ pushUnsupported();
+ } else {
+ _Node value = pop();
+ _Node name = pop();
+ if (name is _NamedArgumentIdentifierNode &&
+ value is _PrimitiveValueNode) {
+ push(new _NamedArgumentNode(name.name, value.value));
+ } else {
+ pushUnsupported();
+ }
+ }
+ }
+
+ @override
+ void handleLiteralNull(Token token) {
+ push(new _PrimitiveValueNode(null));
+ }
+
+ @override
+ void handleLiteralBool(Token token) {
+ push(new _PrimitiveValueNode(token.lexeme == 'true'));
+ }
+
+ @override
+ void handleLiteralDouble(Token token) {
+ push(new _PrimitiveValueNode(double.parse(token.lexeme)));
+ }
+
+ @override
+ void handleLiteralInt(Token token) {
+ push(new _PrimitiveValueNode(int.parse(token.lexeme)));
+ }
+
+ @override
+ void beginLiteralString(Token token) {
+ push(new _TokenNode(token));
+ }
+
+ @override
+ void endLiteralString(int interpolationCount, Token endToken) {
+ if (unrecognized) {
+ pushUnsupported();
+ return;
+ }
+ if (interpolationCount == 0) {
+ _Node node = pop();
+ if (node is _TokenNode) {
+ String text = unescapeString(node.token.lexeme, node.token, this);
+ if (unrecognized) {
+ pushUnsupported();
+ } else {
+ push(new _PrimitiveValueNode(text));
+ }
+ } else {
+ pushUnsupported();
+ }
+ } else {
+ // TODO(johnniwinther): Should we support this?
+ pushUnsupported();
+ }
+ }
+
+ @override
+ void handleStringPart(Token token) {
+ // TODO(johnniwinther): Should we support this?
+ _unhandled();
+ }
+
+ @override
+ void handleStringJuxtaposition(Token startToken, int literalCount) {
+ if (unrecognized) {
+ pushUnsupported();
+ } else {
+ List<String> values = [];
+ for (int i = 0; i < literalCount; i++) {
+ _Node node = pop();
+ if (node is _PrimitiveValueNode && node.value is String) {
+ values.add(node.value as String);
+ } else {
+ _unsupported();
+ }
+ }
+ if (unrecognized) {
+ pushUnsupported();
+ } else {
+ push(new _PrimitiveValueNode(values.reversed.join()));
+ }
+ }
+ }
+
//////////////////////////////////////////////////////////////////////////////
// Stub implementation
//////////////////////////////////////////////////////////////////////////////
@@ -553,11 +697,6 @@
}
@override
- void beginLiteralString(Token token) {
- _unhandled();
- }
-
- @override
void beginLiteralSymbol(Token token) {
_unhandled();
}
@@ -1126,11 +1265,6 @@
}
@override
- void endLiteralString(int interpolationCount, Token endToken) {
- _unhandled();
- }
-
- @override
void endLiteralSymbol(Token hashToken, int identifierCount) {
_unhandled();
}
@@ -1637,21 +1771,6 @@
}
@override
- void handleLiteralBool(Token token) {
- _unhandled();
- }
-
- @override
- void handleLiteralDouble(Token token) {
- _unhandled();
- }
-
- @override
- void handleLiteralInt(Token token) {
- _unhandled();
- }
-
- @override
void handleLiteralList(
int count, Token leftBracket, Token? constKeyword, Token rightBracket) {
_unhandled();
@@ -1663,11 +1782,6 @@
}
@override
- void handleLiteralNull(Token token) {
- _unhandled();
- }
-
- @override
void handleLiteralSetOrMap(int count, Token leftBrace, Token? constKeyword,
Token rightBrace, bool hasSetEntry) {
_unhandled();
@@ -1684,11 +1798,6 @@
}
@override
- void handleNamedArgument(Token colon) {
- _unhandled();
- }
-
- @override
void handleNamedMixinApplicationWithClause(Token withKeyword) {
_unexpected();
}
@@ -1840,16 +1949,6 @@
}
@override
- void handleStringJuxtaposition(Token startToken, int literalCount) {
- _unhandled();
- }
-
- @override
- void handleStringPart(Token token) {
- _unhandled();
- }
-
- @override
void handleSuperExpression(Token token, IdentifierContext context) {
_unsupported();
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart b/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart
index 9d67f00..18a3e34 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart
@@ -65,10 +65,11 @@
class MacroApplication {
final ClassBuilder classBuilder;
final String constructorName;
+ final macro.Arguments arguments;
// TODO(johnniwinther): Add support for arguments.
- MacroApplication(this.classBuilder, this.constructorName);
+ MacroApplication(this.classBuilder, this.constructorName, this.arguments);
late macro.MacroInstanceIdentifier instanceIdentifier;
@@ -152,8 +153,7 @@
libraryUri,
macroClassName,
application.constructorName,
- // TODO(johnniwinther): Support macro arguments.
- new macro.Arguments([], {}));
+ application.arguments);
benchmarker?.endSubdivide();
} catch (e) {
throw "Error instantiating macro `${application}`: $e";
diff --git a/pkg/front_end/lib/src/fasta/util/textual_outline.dart b/pkg/front_end/lib/src/fasta/util/textual_outline.dart
index 8194d15..203dcd4 100644
--- a/pkg/front_end/lib/src/fasta/util/textual_outline.dart
+++ b/pkg/front_end/lib/src/fasta/util/textual_outline.dart
@@ -24,6 +24,8 @@
import 'package:_fe_analyzer_shared/src/scanner/token.dart' show Token;
+import '../fasta_codes.dart' show codeNativeClauseShouldBeAnnotation;
+
import '../messages.dart' show Message;
abstract class _Chunk implements Comparable<_Chunk> {
@@ -884,6 +886,10 @@
@override
void handleRecoverableError(
Message message, Token startToken, Token endToken) {
+ // We ignore this message, as done by stack_listener.dart.
+ if (message.code == codeNativeClauseShouldBeAnnotation) {
+ return;
+ }
gotError = true;
}
}
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index c2ab5a9..498d457 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -117,6 +117,8 @@
StdioProcess;
import 'package:vm/target/vm.dart' show VmTarget;
+import '../../incremental_suite.dart' show TestRecorderForTesting;
+
import '../../testing_utils.dart' show checkEnvironment;
import '../../utils/kernel_chain.dart'
show
@@ -176,6 +178,10 @@
"group": "Fail"
},
{
+ "name": "semiFuzzFailureOnForceRebuildBodies",
+ "group": "Fail"
+ },
+ {
"name": "SemiFuzzCrash",
"group": "Fail"
}
@@ -221,6 +227,8 @@
final ExpectationSet staticExpectationSet =
new ExpectationSet.fromJsonList(jsonDecode(EXPECTATIONS));
final Expectation semiFuzzFailure = staticExpectationSet["SemiFuzzFailure"];
+final Expectation semiFuzzFailureOnForceRebuildBodies =
+ staticExpectationSet["semiFuzzFailureOnForceRebuildBodies"];
final Expectation semiFuzzCrash = staticExpectationSet["SemiFuzzCrash"];
/// Options used for all tests within a given folder.
@@ -701,9 +709,11 @@
// If not semi-fuzzing we can't get semi-fuzz errors.
if (!semiFuzz &&
(outcomes.contains(semiFuzzFailure) ||
+ outcomes.contains(semiFuzzFailureOnForceRebuildBodies) ||
outcomes.contains(semiFuzzCrash))) {
result ??= new Set.from(outcomes);
result.remove(semiFuzzFailure);
+ result.remove(semiFuzzFailureOnForceRebuildBodies);
result.remove(semiFuzzCrash);
}
@@ -1157,20 +1167,71 @@
Component platform =
context.loadPlatform(backendTarget, compilationSetup.options.nnbdMode);
- Result<ComponentResult>? passResult = await performFileInvalidation(
+
+ final bool hasErrors;
+ {
+ bool foundErrors = false;
+ if ((result.component.problemsAsJson?.length ?? 0) > 0) {
+ foundErrors = true;
+ } else {
+ for (Library library in result.component.libraries) {
+ if ((library.problemsAsJson?.length ?? 0) > 0) {
+ foundErrors = true;
+ break;
+ }
+ }
+ }
+ hasErrors = foundErrors;
+ }
+
+ try {
+ Result<ComponentResult>? passResult = await performFileInvalidation(
+ compilationSetup,
+ platform,
+ uriTranslator,
+ context,
+ originalCompilationResult: result,
+ forceAndCheckRebuildBodiesOnly: false,
+ );
+ if (passResult != null) return passResult;
+
+ passResult = await performChunkReordering(
compilationSetup,
platform,
uriTranslator,
result,
context,
- originalFlag);
- if (passResult != null) return passResult;
+ );
+ if (passResult != null) return passResult;
- passResult = await performChunkReordering(compilationSetup, platform,
- uriTranslator, result, context, originalFlag);
- if (passResult != null) return passResult;
+ if (!hasErrors) {
+ // To get proper splitting (between dill and not dill builders) we need
+ // experimental invalidation - it doesn't work when there's errors
+ // though, so skip those up front.
+ // Note also that because of splitting and privacy this might fail with
+ // an error --- so it should probably be the last one. At some point we
+ // might swallow that so we can continue, but for now it will be good
+ // to know when it's not run because of that.
+ passResult = await performFileSplitting(
+ compilationSetup,
+ platform,
+ uriTranslator,
+ result,
+ context,
+ );
+ if (passResult != null) return passResult;
+ }
- return pass(result);
+ return pass(result);
+ } finally {
+ if (originalFlag != null) {
+ context.explicitExperimentalFlags[
+ ExperimentalFlag.alternativeInvalidationStrategy] = originalFlag;
+ } else {
+ context.explicitExperimentalFlags
+ .remove(ExperimentalFlag.alternativeInvalidationStrategy);
+ }
+ }
}
/// Perform a number of compilations where each user-file is invalidated
@@ -1181,51 +1242,87 @@
CompilationSetup compilationSetup,
Component platform,
UriTranslator uriTranslator,
- ComponentResult result,
FastaContext context,
- bool? originalFlag) async {
+ {ComponentResult? originalCompilationResult,
+ required bool forceAndCheckRebuildBodiesOnly}) async {
compilationSetup.errors.clear();
- IncrementalCompiler incrementalCompiler =
- new IncrementalCompiler.fromComponent(
+ SemiForceExperimentalInvalidationIncrementalCompiler incrementalCompiler =
+ new SemiForceExperimentalInvalidationIncrementalCompiler.fromComponent(
new CompilerContext(compilationSetup.options), platform);
+ incrementalCompiler.skipExperimentalInvalidationChecksForTesting =
+ forceAndCheckRebuildBodiesOnly;
IncrementalCompilerResult incrementalCompilerResult =
await incrementalCompiler.computeDelta();
final Component component = incrementalCompilerResult.component;
+ print("Compiled and got ${component.libraries.length} libs");
if (!canSerialize(component)) {
- return new Result<ComponentResult>(result, semiFuzzFailure,
- "Couldn't serialize initial component for fuzzing");
+ return new Result<ComponentResult>(originalCompilationResult,
+ semiFuzzFailure, "Couldn't serialize initial component for fuzzing");
}
final Set<Uri> userLibraries =
createUserLibrariesImportUriSet(component, uriTranslator);
final bool expectErrors = compilationSetup.errors.isNotEmpty;
+
+ if (expectErrors && forceAndCheckRebuildBodiesOnly) {
+ return new Result<ComponentResult>(
+ originalCompilationResult,
+ semiFuzzFailureOnForceRebuildBodies,
+ "Errors upon compilation not compatible "
+ "with forcing rebuild bodies. Got ${compilationSetup.errors}");
+ }
+
List<Iterable<String>> originalErrors =
new List<Iterable<String>>.from(compilationSetup.errors);
- Set<Uri> intersectionUserLibraries =
- result.userLibraries.intersection(userLibraries);
- if (intersectionUserLibraries.length != userLibraries.length ||
- userLibraries.length != result.userLibraries.length) {
- return new Result<ComponentResult>(
- result,
- semiFuzzFailure,
- "Got a different amount of user libraries on first compile "
- "compared to 'original' compilation:\n\n"
- "This compile:\n"
- "${userLibraries.map((e) => e.toString()).join("\n")}\n\n"
- "Original compile:\n"
- "${result.userLibraries.map((e) => e.toString()).join("\n")}");
+ if (originalCompilationResult != null) {
+ Set<Uri> intersectionUserLibraries =
+ originalCompilationResult.userLibraries.intersection(userLibraries);
+ if (intersectionUserLibraries.length != userLibraries.length ||
+ userLibraries.length !=
+ originalCompilationResult.userLibraries.length) {
+ String originalCompileString = originalCompilationResult.userLibraries
+ .map((e) => e.toString())
+ .join("\n");
+ return new Result<ComponentResult>(
+ originalCompilationResult,
+ semiFuzzFailure,
+ "Got a different amount of user libraries on first compile "
+ "compared to 'original' compilation:\n\n"
+ "This compile:\n"
+ "${userLibraries.map((e) => e.toString()).join("\n")}\n\n"
+ "Original compile:\n"
+ "$originalCompileString");
+ }
}
compilationSetup.errors.clear();
for (Uri importUri in userLibraries) {
+ print(" -> invalidating $importUri");
incrementalCompiler.invalidate(importUri);
- final IncrementalCompilerResult newResult =
- await incrementalCompiler.computeDelta(fullComponent: true);
- final Component newComponent = newResult.component;
- if (!canSerialize(newComponent)) {
+ final IncrementalCompilerResult newResult;
+ try {
+ newResult = await incrementalCompiler.computeDelta(fullComponent: true);
+ } catch (e, st) {
return new Result<ComponentResult>(
- result, semiFuzzFailure, "Couldn't serialize fuzzed component");
+ originalCompilationResult,
+ semiFuzzCrash,
+ "Crashed with '$e' on recompilation after invalidating "
+ "'$importUri'.\n\n$st");
+ }
+ if (forceAndCheckRebuildBodiesOnly) {
+ bool didRebuildBodiesOnly =
+ incrementalCompiler.recorderForTesting.rebuildBodiesCount! > 0;
+ if (!didRebuildBodiesOnly) {
+ return new Result<ComponentResult>(originalCompilationResult,
+ semiFuzzFailure, "Didn't rebuild bodies only!");
+ }
+ }
+ final Component newComponent = newResult.component;
+ print(" -> and got ${newComponent.libraries.length} libs");
+ if (!canSerialize(newComponent)) {
+ return new Result<ComponentResult>(originalCompilationResult,
+ semiFuzzFailure, "Couldn't serialize fuzzed component");
}
final Set<Uri> newUserLibraries =
@@ -1237,7 +1334,7 @@
String errorsString =
originalErrors.map((error) => error.join('\n')).join('\n\n');
return new Result<ComponentResult>(
- result,
+ originalCompilationResult,
semiFuzzFailure,
"Expected these errors:\n${errorsString}\n\n"
"but didn't get any after invalidating $importUri");
@@ -1246,7 +1343,7 @@
.map((error) => error.join('\n'))
.join('\n\n');
return new Result<ComponentResult>(
- result,
+ originalCompilationResult,
semiFuzzFailure,
"Unexpected errors:\n${errorsString}\n\n"
"after invalidating $importUri");
@@ -1257,27 +1354,25 @@
userLibraries.intersection(newUserLibraries);
if (intersectionUserLibraries.length != newUserLibraries.length ||
newUserLibraries.length != userLibraries.length) {
+ String originalCompileString = "";
+ if (originalCompilationResult != null) {
+ originalCompileString = "Original compile:\n" +
+ originalCompilationResult.userLibraries
+ .map((e) => e.toString())
+ .join("\n");
+ }
return new Result<ComponentResult>(
- result,
+ originalCompilationResult,
semiFuzzFailure,
"Got a different amount of user libraries on recompile "
"compared to 'original' compilation after having invalidated "
"$importUri.\n\n"
"This compile:\n"
"${newUserLibraries.map((e) => e.toString()).join("\n")}\n\n"
- "Original compile:\n"
- "${result.userLibraries.map((e) => e.toString()).join("\n")}");
+ "${originalCompileString}");
}
}
- if (originalFlag != null) {
- context.explicitExperimentalFlags[
- ExperimentalFlag.alternativeInvalidationStrategy] = originalFlag;
- } else {
- context.explicitExperimentalFlags
- .remove(ExperimentalFlag.alternativeInvalidationStrategy);
- }
-
return null;
}
@@ -1302,8 +1397,7 @@
Component platform,
UriTranslator uriTranslator,
ComponentResult result,
- FastaContext context,
- bool? originalFlag) async {
+ FastaContext context) async {
compilationSetup.errors.clear();
FileSystem orgFileSystem = compilationSetup.options.fileSystem;
@@ -1430,14 +1524,152 @@
compilationSetup.compilerOptions.fileSystem = orgFileSystem;
return null;
}
+
+ /// Splits all files into "sub files" that all import and export each other
+ /// so everything should still work (except for privacy).
+ /// Then invalidate one file at a time with forced experimental invalidation.
+ ///
+ /// Prerequisite: No errors should be present, as that doesn't work with
+ /// experimental invalidation.
+ Future<Result<ComponentResult>?> performFileSplitting(
+ CompilationSetup compilationSetup,
+ Component platform,
+ UriTranslator uriTranslator,
+ ComponentResult result,
+ FastaContext context) async {
+ FileSystem orgFileSystem = compilationSetup.options.fileSystem;
+ compilationSetup.options.clearFileSystemCache();
+ _FakeFileSystem fs = new _FakeFileSystem(orgFileSystem);
+ compilationSetup.compilerOptions.fileSystem = fs;
+ IncrementalCompiler incrementalCompiler =
+ new IncrementalCompiler.fromComponent(
+ new CompilerContext(compilationSetup.options), platform);
+ IncrementalCompilerResult initialResult =
+ await incrementalCompiler.computeDelta();
+ Component initialComponent = initialResult.component;
+ if (!canSerialize(initialComponent)) {
+ return new Result<ComponentResult>(result, semiFuzzFailure,
+ "Couldn't serialize initial component for fuzzing");
+ }
+
+ // Create lookup-table from file uri to whatever.
+ Map<Uri, LibraryBuilder> builders = {};
+ for (LibraryBuilder builder
+ in incrementalCompiler.kernelTargetForTesting!.loader.libraryBuilders) {
+ if (builder.importUri.isScheme("dart") && !builder.isSynthetic) continue;
+ if (builder.importUri.isScheme("package") &&
+ !builder.fileUri.toString().contains("/pkg/front_end/testcases/")) {
+ // A package uri where the file uri is *not* inside out testcases.
+ // This for instance ignores "package:expect/expect.dart" etc.
+ continue;
+ }
+ builders[builder.fileUri] = builder;
+ for (LibraryPart part in builder.library.parts) {
+ Uri thisPartUri = builder.importUri.resolve(part.partUri);
+ if (thisPartUri.isScheme("package")) {
+ thisPartUri = incrementalCompiler
+ .kernelTargetForTesting!.uriTranslator
+ .translate(thisPartUri)!;
+ }
+ builders[thisPartUri] = builder;
+ }
+ }
+
+ List<Uri> originalUris = List<Uri>.of(fs.data.keys);
+ for (Uri uri in originalUris) {
+ print("Work on $uri");
+ LibraryBuilder? builder = builders[uri];
+ if (builder == null) {
+ print("Skipping $uri -- couldn't find builder for it.");
+ continue;
+ }
+ Uint8List orgData = fs.data[uri] as Uint8List;
+ FuzzAstVisitorSorter fuzzAstVisitorSorter;
+ try {
+ fuzzAstVisitorSorter =
+ new FuzzAstVisitorSorter(orgData, builder.isNonNullableByDefault);
+ } on FormatException catch (e, st) {
+ // UTF-16-LE formatted test crashes `utf8.decode(bytes)` --- catch that
+ return new Result<ComponentResult>(
+ result,
+ semiFuzzCrash,
+ "$e\n\n"
+ "$st");
+ }
+
+ // Put each chunk into its own file.
+ StringBuffer headerSb = new StringBuffer();
+ List<FuzzAstVisitorSorterChunk> nonHeaderChunks = [];
+
+ for (FuzzAstVisitorSorterChunk chunk in fuzzAstVisitorSorter.chunks) {
+ if (chunk.originalType == FuzzOriginalType.Import ||
+ chunk.originalType == FuzzOriginalType.Export ||
+ chunk.originalType == FuzzOriginalType.LibraryName ||
+ chunk.originalType == FuzzOriginalType.Part ||
+ chunk.originalType == FuzzOriginalType.PartOf ||
+ chunk.originalType == FuzzOriginalType.LanguageVersion) {
+ headerSb.writeln(chunk.getSource());
+ } else {
+ nonHeaderChunks.add(chunk);
+ }
+ }
+
+ Uri getUriForChunk(int chunkNum) {
+ return uri.resolve(uri.pathSegments.last + ".split.$chunkNum.dart");
+ }
+
+ int totalSubFiles = nonHeaderChunks.length;
+ int currentSubFile = 0;
+ for (FuzzAstVisitorSorterChunk chunk in nonHeaderChunks) {
+ // We need to have special handling for dart versions, imports,
+ // exports, etc.
+ StringBuffer sb = new StringBuffer();
+ sb.writeln(headerSb.toString());
+ for (int i = 0; i < totalSubFiles; i++) {
+ if (i == currentSubFile) continue;
+ sb.writeln("import '${getUriForChunk(i)}';");
+ sb.writeln("export '${getUriForChunk(i)}';");
+ }
+ sb.writeln(chunk.getSource());
+ fs.data[getUriForChunk(currentSubFile)] =
+ utf8.encode(sb.toString()) as Uint8List;
+ currentSubFile++;
+ }
+
+ // Rewrite main file.
+ StringBuffer sb = new StringBuffer();
+ sb.writeln(headerSb.toString());
+ for (int i = 0; i < totalSubFiles; i++) {
+ sb.writeln("import '${getUriForChunk(i)}';");
+ sb.writeln("export '${getUriForChunk(i)}';");
+ }
+ fs.data[uri] = utf8.encode(sb.toString()) as Uint8List;
+ }
+
+ Result<ComponentResult>? passResult = await performFileInvalidation(
+ compilationSetup,
+ platform,
+ uriTranslator,
+ context,
+ originalCompilationResult: null,
+ forceAndCheckRebuildBodiesOnly: true,
+ );
+ if (passResult != null) return passResult;
+
+ compilationSetup.options.clearFileSystemCache();
+ compilationSetup.compilerOptions.fileSystem = orgFileSystem;
+ return null;
+ }
}
class FuzzAstVisitorSorterChunk {
+ final FuzzOriginalType originalType;
final String data;
final String? metadataAndComments;
final int layer;
- FuzzAstVisitorSorterChunk(this.data, this.metadataAndComments, this.layer);
+ FuzzAstVisitorSorterChunk(
+ this.originalType, this.data, this.metadataAndComments, this.layer);
@override
String toString() {
@@ -1454,6 +1686,23 @@
enum FuzzSorterState { nonSortable, importExportSortable, sortableRest }
+enum FuzzOriginalType {
+ Import,
+ Export,
+ LanguageVersion,
+ AdditionalMetadata,
+ Class,
+ Mixin,
+ Enum,
+ Extension,
+ LibraryName,
+ Part,
+ PartOf,
+ TopLevelFields,
+ TopLevelMethod,
+ TypeDef,
+}
+
class FuzzAstVisitorSorter extends ParserAstVisitor {
final Uint8List bytes;
final String asString;
@@ -1471,6 +1720,7 @@
metadataStart!.charOffset, metadataEndInclusive!.charEnd);
layer++;
chunks.add(new FuzzAstVisitorSorterChunk(
+ FuzzOriginalType.AdditionalMetadata,
"",
metadata,
layer,
@@ -1519,6 +1769,7 @@
if (hasLanguageVersion) {
layer++;
chunks.add(new FuzzAstVisitorSorterChunk(
+ FuzzOriginalType.LanguageVersion,
asString.substring(
fromToken.precedingComments!.charOffset, comment.charEnd),
null,
@@ -1528,8 +1779,8 @@
}
}
- void handleData(
- FuzzSorterState thisState, Token startInclusive, Token endInclusive) {
+ void handleData(FuzzOriginalType originalType, FuzzSorterState thisState,
+ Token startInclusive, Token endInclusive) {
// Non-sortable things always gets a new layer.
if (state != thisState || thisState == FuzzSorterState.nonSortable) {
state = thisState;
@@ -1560,6 +1811,7 @@
metadataStart!.charOffset, metadataEndInclusive!.charEnd);
}
chunks.add(new FuzzAstVisitorSorterChunk(
+ originalType,
asString.substring(startInclusive.charOffset, endInclusive.charEnd),
metadata,
layer,
@@ -1570,39 +1822,43 @@
@override
void visitExport(ExportEnd node, Token startInclusive, Token endInclusive) {
- handleData(
- FuzzSorterState.importExportSortable, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Export, FuzzSorterState.importExportSortable,
+ startInclusive, endInclusive);
}
@override
void visitImport(ImportEnd node, Token startInclusive, Token? endInclusive) {
- handleData(
- FuzzSorterState.importExportSortable, startInclusive, endInclusive!);
+ handleData(FuzzOriginalType.Import, FuzzSorterState.importExportSortable,
+ startInclusive, endInclusive!);
}
@override
void visitClass(
ClassDeclarationEnd node, Token startInclusive, Token endInclusive) {
// TODO(jensj): Possibly sort stuff inside of this too.
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Class, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitEnum(EnumEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Enum, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitExtension(
ExtensionDeclarationEnd node, Token startInclusive, Token endInclusive) {
// TODO(jensj): Possibly sort stuff inside of this too.
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Extension, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitLibraryName(
LibraryNameEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.nonSortable, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.LibraryName, FuzzSorterState.nonSortable,
+ startInclusive, endInclusive);
}
@override
@@ -1620,44 +1876,65 @@
void visitMixin(
MixinDeclarationEnd node, Token startInclusive, Token endInclusive) {
// TODO(jensj): Possibly sort stuff inside of this too.
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Mixin, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitNamedMixin(
NamedMixinApplicationEnd node, Token startInclusive, Token endInclusive) {
// TODO(jensj): Possibly sort stuff inside of this too.
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Mixin, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitPart(PartEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.nonSortable, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.Part, FuzzSorterState.nonSortable,
+ startInclusive, endInclusive);
}
@override
void visitPartOf(PartOfEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.nonSortable, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.PartOf, FuzzSorterState.nonSortable,
+ startInclusive, endInclusive);
}
@override
void visitTopLevelFields(
TopLevelFieldsEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.TopLevelFields, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitTopLevelMethod(
TopLevelMethodEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.TopLevelMethod, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
@override
void visitTypedef(TypedefEnd node, Token startInclusive, Token endInclusive) {
- handleData(FuzzSorterState.sortableRest, startInclusive, endInclusive);
+ handleData(FuzzOriginalType.TypeDef, FuzzSorterState.sortableRest,
+ startInclusive, endInclusive);
}
}
+class SemiForceExperimentalInvalidationIncrementalCompiler
+ extends IncrementalCompiler {
+ @override
+ final TestRecorderForTesting recorderForTesting =
+ new TestRecorderForTesting();
+
+ @override
+ bool skipExperimentalInvalidationChecksForTesting = true;
+
+ SemiForceExperimentalInvalidationIncrementalCompiler.fromComponent(
+ CompilerContext context, Component? componentToInitializeFrom)
+ : super.fromComponent(context, componentToInitializeFrom);
+}
+
class _FakeFileSystem extends FileSystem {
bool redirectAndRecord = true;
final Map<Uri, Uint8List?> data = {};
diff --git a/pkg/front_end/test/macros/declaration/data/pkgs/macro/lib/macro.dart b/pkg/front_end/test/macros/declaration/data/pkgs/macro/lib/macro.dart
index c7fc7d5..99bcb57 100644
--- a/pkg/front_end/test/macros/declaration/data/pkgs/macro/lib/macro.dart
+++ b/pkg/front_end/test/macros/declaration/data/pkgs/macro/lib/macro.dart
@@ -25,3 +25,10 @@
class NonMacro {
const NonMacro();
}
+
+macro class Macro4 implements Macro {
+ final field;
+ final named;
+
+ const Macro4(this.field, {this.named});
+}
\ No newline at end of file
diff --git a/pkg/front_end/test/macros/declaration/data/tests/all_precompiled.dart b/pkg/front_end/test/macros/declaration/data/tests/all_precompiled.dart
index 2da2a58..6e2aea0 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/all_precompiled.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/all_precompiled.dart
@@ -10,6 +10,6 @@
import 'package:precompiled_macro/precompiled_macro.dart';
-/*member: main:appliedMacros=[PrecompiledMacro.new]*/
+/*member: main:appliedMacros=[PrecompiledMacro.new()]*/
@PrecompiledMacro()
void main() {}
diff --git a/pkg/front_end/test/macros/declaration/data/tests/applications.dart b/pkg/front_end/test/macros/declaration/data/tests/applications.dart
index 1f03c5a..228b1f1 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/applications.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/applications.dart
@@ -21,7 +21,7 @@
package:macro/macro.dart/Macro3/named()],
macrosAreApplied,
macrosAreAvailable,
- neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)]
+ neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)|Macro4(new)]
*/
import 'package:macro/macro.dart';
@@ -29,10 +29,10 @@
/*class: Class:
appliedMacros=[
- Macro1.new,
- Macro2.named,
- Macro2.new,
- Macro3.named],
+ Macro1.new(),
+ Macro2.named(),
+ Macro2.new(),
+ Macro3.named()],
macrosAreApplied
*/
@Macro2.named()
@@ -41,31 +41,31 @@
@Macro1()
class Class {
/*member: Class.:appliedMacros=[
- Macro1.named,
- Macro1.new,
- Macro2.named,
- Macro3.new]*/
+ Macro1.named(),
+ Macro1.new(),
+ Macro2.named(),
+ Macro3.new()]*/
@Macro1.named()
@prefix.Macro1()
@prefix.Macro2.named()
@Macro3()
Class();
- /*member: Class.method:appliedMacros=[Macro3.named]*/
+ /*member: Class.method:appliedMacros=[Macro3.named()]*/
@Macro3.named()
void method() {}
- /*member: Class.field:appliedMacros=[Macro3.new]*/
+ /*member: Class.field:appliedMacros=[Macro3.new()]*/
@prefix.Macro3()
var field;
}
-/*member: method:appliedMacros=[Macro2.named]*/
+/*member: method:appliedMacros=[Macro2.named()]*/
@Macro2.named()
void method() {}
@Macro3()
-/*member: field:appliedMacros=[Macro3.new]*/
+/*member: field:appliedMacros=[Macro3.new()]*/
var field;
main() {}
diff --git a/pkg/front_end/test/macros/declaration/data/tests/declare_vs_apply/apply_lib.dart b/pkg/front_end/test/macros/declaration/data/tests/declare_vs_apply/apply_lib.dart
index fc6ae56..1ae6cfa 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/declare_vs_apply/apply_lib.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/declare_vs_apply/apply_lib.dart
@@ -11,7 +11,7 @@
import 'apply_lib_dep.dart';
/*class: Class:
- appliedMacros=[Macro1.new],
+ appliedMacros=[Macro1.new()],
macrosAreApplied
*/
@Macro1()
diff --git a/pkg/front_end/test/macros/declaration/data/tests/import_macro_package.dart b/pkg/front_end/test/macros/declaration/data/tests/import_macro_package.dart
index 64d7efc..daf3f12 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/import_macro_package.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/import_macro_package.dart
@@ -7,7 +7,7 @@
package:_fe_analyzer_shared/src/macros/api.dart|package:macro/macro.dart,
main.dart],
macrosAreAvailable,
- neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)]
+ neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)|Macro4(new)]
*/
// ignore: unused_import
diff --git a/pkg/front_end/test/macros/declaration/data/tests/macro_arguments.dart b/pkg/front_end/test/macros/declaration/data/tests/macro_arguments.dart
new file mode 100644
index 0000000..3f14d68
--- /dev/null
+++ b/pkg/front_end/test/macros/declaration/data/tests/macro_arguments.dart
@@ -0,0 +1,79 @@
+// Copyright (c) 2022, 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.
+
+/*library:
+ compilationSequence=[
+ package:_fe_analyzer_shared/src/macros/api.dart|package:macro/macro.dart,
+ main.dart],
+ macroInstanceIds=[
+ package:macro/macro.dart/Macro4/(3.14),
+ package:macro/macro.dart/Macro4/(3.14,named:1.41),
+ package:macro/macro.dart/Macro4/(42),
+ package:macro/macro.dart/Macro4/(87,named:42),
+ package:macro/macro.dart/Macro4/(bar,named:baz),
+ package:macro/macro.dart/Macro4/(false),
+ package:macro/macro.dart/Macro4/(false,named:true),
+ package:macro/macro.dart/Macro4/(foo),
+ package:macro/macro.dart/Macro4/(foobar),
+ package:macro/macro.dart/Macro4/(foobar,named:boz_qux),
+ package:macro/macro.dart/Macro4/(null),
+ package:macro/macro.dart/Macro4/(null,named:null),
+ package:macro/macro.dart/Macro4/(qux,named:boz),
+ package:macro/macro.dart/Macro4/(true)],
+ macrosAreApplied,
+ macrosAreAvailable,
+ neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)|Macro4(new)]
+*/
+
+import 'package:macro/macro.dart';
+
+/*member: function1:appliedMacros=[
+ Macro4.new(null),
+ Macro4.new(null,named:null)]*/
+@Macro4(null)
+@Macro4(null, named: null)
+function1() {}
+
+/*member: function2:appliedMacros=[
+ Macro4.new(42),
+ Macro4.new(87,named:42)]*/
+@Macro4(42)
+@Macro4(87, named: 42)
+function2() {}
+
+/*member: function3:appliedMacros=[
+ Macro4.new(false,named:true),
+ Macro4.new(true)]*/
+@Macro4(true)
+@Macro4(false, named: true)
+function3() {}
+
+/*member: function4:appliedMacros=[Macro4.new(false)]*/
+@Macro4(false)
+function4() {}
+
+/*member: function5:appliedMacros=[
+ Macro4.new(bar,named:baz),
+ Macro4.new(foo),
+ Macro4.new(qux,named:boz)]*/
+@Macro4("foo")
+@Macro4("bar", named: "baz")
+@Macro4(named: "boz", "qux")
+function5() {}
+
+/*member: function6:appliedMacros=[
+ Macro4.new(3.14),
+ Macro4.new(3.14,named:1.41)]*/
+@Macro4(3.14)
+@Macro4(3.14, named: 1.41)
+function6() {}
+
+/*member: function7:appliedMacros=[
+ Macro4.new(foobar),
+ Macro4.new(foobar,named:boz_qux)]*/
+@Macro4("foo" "bar")
+@Macro4("foo" "bar", named: "boz" "_" "qux")
+function7() {}
+
+main() {}
diff --git a/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/macro_lib2b.dart b/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/macro_lib2b.dart
index 3aa757c..e220fb9d 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/macro_lib2b.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/macro_lib2b.dart
@@ -12,7 +12,7 @@
import 'macro_lib2a.dart';
/*class: Macro2b:
- appliedMacros=[Macro2a.new],
+ appliedMacros=[Macro2a.new()],
macrosAreApplied
*/
@Macro2a()
diff --git a/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/main.dart b/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/main.dart
index 1e9ac81..73727a0 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/main.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/multiple_macros/main.dart
@@ -22,9 +22,9 @@
import 'macro_lib2b.dart';
/*member: main:appliedMacros=[
- Macro1.new,
- Macro2a.new,
- Macro2b.new]*/
+ Macro1.new(),
+ Macro2a.new(),
+ Macro2b.new()]*/
@Macro1()
@Macro2a()
@Macro2b()
diff --git a/pkg/front_end/test/macros/declaration/data/tests/precompiled.dart b/pkg/front_end/test/macros/declaration/data/tests/precompiled.dart
index 1311d4c..075dd0a 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/precompiled.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/precompiled.dart
@@ -11,15 +11,15 @@
package:precompiled_macro/precompiled_macro.dart/PrecompiledMacro/()],
macrosAreApplied,
macrosAreAvailable,
- neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)]
+ neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)|Macro4(new)]
*/
import 'package:precompiled_macro/precompiled_macro.dart';
import 'package:macro/macro.dart';
/*member: main:appliedMacros=[
- Macro1.new,
- PrecompiledMacro.new]*/
+ Macro1.new(),
+ PrecompiledMacro.new()]*/
@PrecompiledMacro()
@Macro1()
void main() {}
diff --git a/pkg/front_end/test/macros/declaration/data/tests/use_macro_package.dart b/pkg/front_end/test/macros/declaration/data/tests/use_macro_package.dart
index 1db43d7..608039c 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/use_macro_package.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/use_macro_package.dart
@@ -16,29 +16,29 @@
package:macro/macro.dart/Macro3/()],
macrosAreApplied,
macrosAreAvailable,
- neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)]
+ neededPrecompilations=[package:macro/macro.dart=Macro1(named/new)|Macro2(named/new)|Macro3(named/new)|Macro4(new)]
*/
library use_macro_package;
import 'package:macro/macro.dart';
-/*member: main:appliedMacros=[Macro1.new]*/
+/*member: main:appliedMacros=[Macro1.new()]*/
@Macro1()
void main() {}
/*class: Class1:
- appliedMacros=[Macro2.new],
+ appliedMacros=[Macro2.new()],
macrosAreApplied
*/
@Macro2()
class Class1 {
- /*member: Class1.:appliedMacros=[Macro3.new]*/
+ /*member: Class1.:appliedMacros=[Macro3.new()]*/
@Macro3()
Class1();
/*member: Class1.method:appliedMacros=[
- Macro1.new,
- Macro2.new]*/
+ Macro1.new(),
+ Macro2.new()]*/
@Macro1()
@Macro2()
void method() {}
@@ -49,7 +49,7 @@
/*class: Class3:macrosAreApplied*/
class Class3 {
- /*member: Class3.field:appliedMacros=[Macro3.new]*/
+ /*member: Class3.field:appliedMacros=[Macro3.new()]*/
@Macro3()
var field;
}
@@ -59,7 +59,7 @@
var field;
}
-/*member: field:appliedMacros=[Macro1.new]*/
+/*member: field:appliedMacros=[Macro1.new()]*/
@Macro1()
var field;
diff --git a/pkg/front_end/test/macros/declaration/data/tests/use_macro_source/main.dart b/pkg/front_end/test/macros/declaration/data/tests/use_macro_source/main.dart
index fb50380..819b982 100644
--- a/pkg/front_end/test/macros/declaration/data/tests/use_macro_source/main.dart
+++ b/pkg/front_end/test/macros/declaration/data/tests/use_macro_source/main.dart
@@ -19,19 +19,19 @@
import 'macro_lib.dart';
-/*member: main:appliedMacros=[Macro1.new]*/
+/*member: main:appliedMacros=[Macro1.new()]*/
@Macro1()
void main() {}
/*class: Class1:
- appliedMacros=[Macro2.new],
+ appliedMacros=[Macro2.new()],
macrosAreApplied
*/
@Macro2()
class Class1 {
/*member: Class1.method:appliedMacros=[
- Macro1.new,
- Macro2.new]*/
+ Macro1.new(),
+ Macro2.new()]*/
@Macro1()
@Macro2()
void method() {}
@@ -42,7 +42,7 @@
/*class: Class3:macrosAreApplied*/
class Class3 {
- /*member: Class3.field:appliedMacros=[Macro1.new]*/
+ /*member: Class3.field:appliedMacros=[Macro1.new()]*/
@Macro1()
var field;
}
diff --git a/pkg/front_end/test/macros/declaration/macro_declaration_test.dart b/pkg/front_end/test/macros/declaration/macro_declaration_test.dart
index 746e1a6..de7512f 100644
--- a/pkg/front_end/test/macros/declaration/macro_declaration_test.dart
+++ b/pkg/front_end/test/macros/declaration/macro_declaration_test.dart
@@ -198,11 +198,12 @@
Features features, List<MacroApplication>? macroApplications) {
if (macroApplications != null) {
for (MacroApplication application in macroApplications) {
- String className = application.classBuilder.name;
- String constructorName =
- constructorNameToString(application.constructorName);
- features.addElement(
- Tags.appliedMacros, '${className}.${constructorName}');
+ StringBuffer sb = new StringBuffer();
+ sb.write(application.classBuilder.name);
+ sb.write('.');
+ sb.write(constructorNameToString(application.constructorName));
+ sb.write(application.arguments.toText());
+ features.addElement(Tags.appliedMacros, sb.toString());
}
}
}
@@ -347,7 +348,8 @@
_MacroInstanceIdentifier(
this.library, this.name, this.constructor, this.arguments);
- String toText() => '${importUriToString(library)}/${name}/${constructor}()';
+ String toText() => '${importUriToString(library)}/${name}/'
+ '${constructor}${arguments.toText()}';
@override
void serialize(Serializer serializer) => throw UnimplementedError();
@@ -374,3 +376,25 @@
throw UnimplementedError();
}
}
+
+extension on Arguments {
+ String toText() {
+ StringBuffer sb = new StringBuffer();
+ sb.write('(');
+ String comma = '';
+ for (Object? positional in positional) {
+ sb.write(comma);
+ sb.write(positional);
+ comma = ',';
+ }
+ for (MapEntry<String, Object?> named in named.entries) {
+ sb.write(comma);
+ sb.write(named.key);
+ sb.write(':');
+ sb.write(named.value);
+ comma = ',';
+ }
+ sb.write(')');
+ return sb.toString();
+ }
+}
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 5f1144f..38d1b02 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -490,6 +490,7 @@
pp
preliminary
prematurely
+prerequisite
press
pretends
printouts
@@ -514,6 +515,7 @@
quux
quuz
reality
+recompilation
recompiles
redir
redirections
@@ -620,6 +622,7 @@
supermixin
supplement
suspension
+swallow
t\b\f\u
t\u
ta
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart b/pkg/front_end/testcases/extensions/ambiguous.dart
index 58c25ea..df66ba8 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension A on C {
void method() {}
int get getter => 42;
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline.expect
index 64d21ffcd..cdead34 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension A on C {
void method() {}
int get getter => 42;
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline_modelled.expect
index 56bcb51..181cba7e 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {}
errors(C c) {}
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.expect
index 1dca435..3e35b2e 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -150,21 +150,11 @@
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A on self::C* {
+extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -174,7 +164,7 @@
operator [] = self::A|[];
set setter = self::A|set#setter;
}
-extension B on self::C* {
+extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -184,33 +174,33 @@
set setter = self::B|set#setter;
set property = self::B|set#property;
}
-static method A|method(lowered final self::C* #this) → void {}
-static method A|get#method(lowered final self::C* #this) → () →* void
+static method A|method(lowered final self::C #this) → void {}
+static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
-static method A|get#getter(lowered final self::C* #this) → core::int*
+static method A|get#getter(lowered final self::C #this) → core::int
return 42;
-static method A|set#setter(lowered final self::C* #this, core::int* value) → void {}
-static method A|get#property(lowered final self::C* #this) → core::int*
+static method A|set#setter(lowered final self::C #this, core::int value) → void {}
+static method A|get#property(lowered final self::C #this) → core::int
return 42;
-static method A|+(lowered final self::C* #this, core::int* i) → core::int*
+static method A|+(lowered final self::C #this, core::int i) → core::int
return i;
-static method A|unary-(lowered final self::C* #this) → core::int*
+static method A|unary-(lowered final self::C #this) → core::int
return 0;
-static method A|[](lowered final self::C* #this, core::int* i) → core::int*
+static method A|[](lowered final self::C #this, core::int i) → core::int
return i;
-static method B|method(lowered final self::C* #this) → void {}
-static method B|get#method(lowered final self::C* #this) → () →* void
+static method B|method(lowered final self::C #this) → void {}
+static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
-static method B|get#getter(lowered final self::C* #this) → core::int*
+static method B|get#getter(lowered final self::C #this) → core::int
return 42;
-static method B|set#setter(lowered final self::C* #this, core::int* value) → void {}
-static method B|set#property(lowered final self::C* #this, core::int* value) → void {}
-static method B|+(lowered final self::C* #this, core::int* i) → core::int*
+static method B|set#setter(lowered final self::C #this, core::int value) → void {}
+static method B|set#property(lowered final self::C #this, core::int value) → void {}
+static method B|+(lowered final self::C #this, core::int i) → core::int
return i;
-static method B|unary-(lowered final self::C* #this) → core::int*
+static method B|unary-(lowered final self::C #this) → core::int
return 0;
-static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void {}
-static method errors(self::C* c) → dynamic {
+static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void {}
+static method errors(self::C c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/ambiguous.dart:28:5: Error: The method 'method' is defined in multiple extensions for 'C' and neither is more specific.
- 'C' is from 'pkg/front_end/testcases/extensions/ambiguous.dart'.
Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.modular.expect
index 1dca435..3e35b2e 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -150,21 +150,11 @@
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A on self::C* {
+extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -174,7 +164,7 @@
operator [] = self::A|[];
set setter = self::A|set#setter;
}
-extension B on self::C* {
+extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -184,33 +174,33 @@
set setter = self::B|set#setter;
set property = self::B|set#property;
}
-static method A|method(lowered final self::C* #this) → void {}
-static method A|get#method(lowered final self::C* #this) → () →* void
+static method A|method(lowered final self::C #this) → void {}
+static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
-static method A|get#getter(lowered final self::C* #this) → core::int*
+static method A|get#getter(lowered final self::C #this) → core::int
return 42;
-static method A|set#setter(lowered final self::C* #this, core::int* value) → void {}
-static method A|get#property(lowered final self::C* #this) → core::int*
+static method A|set#setter(lowered final self::C #this, core::int value) → void {}
+static method A|get#property(lowered final self::C #this) → core::int
return 42;
-static method A|+(lowered final self::C* #this, core::int* i) → core::int*
+static method A|+(lowered final self::C #this, core::int i) → core::int
return i;
-static method A|unary-(lowered final self::C* #this) → core::int*
+static method A|unary-(lowered final self::C #this) → core::int
return 0;
-static method A|[](lowered final self::C* #this, core::int* i) → core::int*
+static method A|[](lowered final self::C #this, core::int i) → core::int
return i;
-static method B|method(lowered final self::C* #this) → void {}
-static method B|get#method(lowered final self::C* #this) → () →* void
+static method B|method(lowered final self::C #this) → void {}
+static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
-static method B|get#getter(lowered final self::C* #this) → core::int*
+static method B|get#getter(lowered final self::C #this) → core::int
return 42;
-static method B|set#setter(lowered final self::C* #this, core::int* value) → void {}
-static method B|set#property(lowered final self::C* #this, core::int* value) → void {}
-static method B|+(lowered final self::C* #this, core::int* i) → core::int*
+static method B|set#setter(lowered final self::C #this, core::int value) → void {}
+static method B|set#property(lowered final self::C #this, core::int value) → void {}
+static method B|+(lowered final self::C #this, core::int i) → core::int
return i;
-static method B|unary-(lowered final self::C* #this) → core::int*
+static method B|unary-(lowered final self::C #this) → core::int
return 0;
-static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void {}
-static method errors(self::C* c) → dynamic {
+static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void {}
+static method errors(self::C c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/ambiguous.dart:28:5: Error: The method 'method' is defined in multiple extensions for 'C' and neither is more specific.
- 'C' is from 'pkg/front_end/testcases/extensions/ambiguous.dart'.
Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.outline.expect
index 8ac03b2..a4095ab 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.outline.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A on self::C* {
+extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -26,7 +16,7 @@
operator [] = self::A|[];
set setter = self::A|set#setter;
}
-extension B on self::C* {
+extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -36,39 +26,39 @@
set setter = self::B|set#setter;
set property = self::B|set#property;
}
-static method A|method(lowered final self::C* #this) → void
+static method A|method(lowered final self::C #this) → void
;
-static method A|get#method(lowered final self::C* #this) → () →* void
+static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
-static method A|get#getter(lowered final self::C* #this) → core::int*
+static method A|get#getter(lowered final self::C #this) → core::int
;
-static method A|set#setter(lowered final self::C* #this, core::int* value) → void
+static method A|set#setter(lowered final self::C #this, core::int value) → void
;
-static method A|get#property(lowered final self::C* #this) → core::int*
+static method A|get#property(lowered final self::C #this) → core::int
;
-static method A|+(lowered final self::C* #this, core::int* i) → core::int*
+static method A|+(lowered final self::C #this, core::int i) → core::int
;
-static method A|unary-(lowered final self::C* #this) → core::int*
+static method A|unary-(lowered final self::C #this) → core::int
;
-static method A|[](lowered final self::C* #this, core::int* i) → core::int*
+static method A|[](lowered final self::C #this, core::int i) → core::int
;
-static method B|method(lowered final self::C* #this) → void
+static method B|method(lowered final self::C #this) → void
;
-static method B|get#method(lowered final self::C* #this) → () →* void
+static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
-static method B|get#getter(lowered final self::C* #this) → core::int*
+static method B|get#getter(lowered final self::C #this) → core::int
;
-static method B|set#setter(lowered final self::C* #this, core::int* value) → void
+static method B|set#setter(lowered final self::C #this, core::int value) → void
;
-static method B|set#property(lowered final self::C* #this, core::int* value) → void
+static method B|set#property(lowered final self::C #this, core::int value) → void
;
-static method B|+(lowered final self::C* #this, core::int* i) → core::int*
+static method B|+(lowered final self::C #this, core::int i) → core::int
;
-static method B|unary-(lowered final self::C* #this) → core::int*
+static method B|unary-(lowered final self::C #this) → core::int
;
-static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void
+static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void
;
-static method errors(self::C* c) → dynamic
+static method errors(self::C c) → dynamic
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.transformed.expect
index 1dca435..3e35b2e 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -150,21 +150,11 @@
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A on self::C* {
+extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -174,7 +164,7 @@
operator [] = self::A|[];
set setter = self::A|set#setter;
}
-extension B on self::C* {
+extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -184,33 +174,33 @@
set setter = self::B|set#setter;
set property = self::B|set#property;
}
-static method A|method(lowered final self::C* #this) → void {}
-static method A|get#method(lowered final self::C* #this) → () →* void
+static method A|method(lowered final self::C #this) → void {}
+static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
-static method A|get#getter(lowered final self::C* #this) → core::int*
+static method A|get#getter(lowered final self::C #this) → core::int
return 42;
-static method A|set#setter(lowered final self::C* #this, core::int* value) → void {}
-static method A|get#property(lowered final self::C* #this) → core::int*
+static method A|set#setter(lowered final self::C #this, core::int value) → void {}
+static method A|get#property(lowered final self::C #this) → core::int
return 42;
-static method A|+(lowered final self::C* #this, core::int* i) → core::int*
+static method A|+(lowered final self::C #this, core::int i) → core::int
return i;
-static method A|unary-(lowered final self::C* #this) → core::int*
+static method A|unary-(lowered final self::C #this) → core::int
return 0;
-static method A|[](lowered final self::C* #this, core::int* i) → core::int*
+static method A|[](lowered final self::C #this, core::int i) → core::int
return i;
-static method B|method(lowered final self::C* #this) → void {}
-static method B|get#method(lowered final self::C* #this) → () →* void
+static method B|method(lowered final self::C #this) → void {}
+static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
-static method B|get#getter(lowered final self::C* #this) → core::int*
+static method B|get#getter(lowered final self::C #this) → core::int
return 42;
-static method B|set#setter(lowered final self::C* #this, core::int* value) → void {}
-static method B|set#property(lowered final self::C* #this, core::int* value) → void {}
-static method B|+(lowered final self::C* #this, core::int* i) → core::int*
+static method B|set#setter(lowered final self::C #this, core::int value) → void {}
+static method B|set#property(lowered final self::C #this, core::int value) → void {}
+static method B|+(lowered final self::C #this, core::int i) → core::int
return i;
-static method B|unary-(lowered final self::C* #this) → core::int*
+static method B|unary-(lowered final self::C #this) → core::int
return 0;
-static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void {}
-static method errors(self::C* c) → dynamic {
+static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void {}
+static method errors(self::C c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/ambiguous.dart:28:5: Error: The method 'method' is defined in multiple extensions for 'C' and neither is more specific.
- 'C' is from 'pkg/front_end/testcases/extensions/ambiguous.dart'.
Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
diff --git a/pkg/front_end/testcases/extensions/annotations.dart b/pkg/front_end/testcases/extensions/annotations.dart
index 5144d09..0e0b623 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart
+++ b/pkg/front_end/testcases/extensions/annotations.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart=2.9
-
class Class {
@pragma('dart2js:noInline')
instanceMethod() {}
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/annotations.dart.textual_outline.expect
index a48748b..29e0b7f 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
@pragma('dart2js:noInline')
instanceMethod() {}
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/annotations.dart.textual_outline_modelled.expect
index 3c38648..ad11530 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
@pragma('dart2js:noInline')
instanceMethod() {}
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.weak.expect b/pkg/front_end/testcases/extensions/annotations.dart.weak.expect
index 61a26a4..665bd67 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.weak.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
@#C3
method instanceMethod() → dynamic {}
@#C3
static method staticMethod() → dynamic {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
-static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/annotations.dart.weak.modular.expect
index 61a26a4..665bd67 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.weak.modular.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
@#C3
method instanceMethod() → dynamic {}
@#C3
static method staticMethod() → dynamic {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
-static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/annotations.dart.weak.outline.expect
index 1ab642c..5f35a3a 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.weak.outline.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
@core::pragma::_("dart2js:noInline")
method instanceMethod() → dynamic
@@ -11,26 +11,16 @@
@core::pragma::_("dart2js:noInline")
static method staticMethod() → dynamic
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@core::pragma::_("dart2js:noInline")
-static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic
+static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic
;
-static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@core::pragma::_("dart2js:noInline")
static method Extension|extensionStaticMethod() → dynamic
@@ -43,9 +33,9 @@
Extra constant evaluation status:
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:8:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:11:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:16:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:19:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
-Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:23:2 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:6:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:9:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:14:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:17:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:21:2 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Extra constant evaluation: evaluated: 8, effectively constant: 5
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect
index 61a26a4..665bd67 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
@#C3
method instanceMethod() → dynamic {}
@#C3
static method staticMethod() → dynamic {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
-static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart b/pkg/front_end/testcases/extensions/async_extensions.dart
index 5c884cb..a958690 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension Extension on int {
syncStarMethod() sync* {}
asyncMethod() async {}
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline.expect
index 34b69e8..101e634 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension on int {
syncStarMethod() sync* {}
asyncMethod() async {}
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline_modelled.expect
index a4561c1..52c36dd 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension on int {
asyncMethod() async {}
asyncStarMethod() async* {}
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect
index 1cd81f5..bf6bac9 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -10,14 +10,14 @@
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
-static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync* {}
-static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
+static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
-static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async /* futureValueType= dynamic */ {}
-static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
+static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
-static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async* {}
-static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
+static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
self::Extension|syncStarMethod(0);
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect
index 1cd81f5..bf6bac9 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -10,14 +10,14 @@
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
-static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync* {}
-static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
+static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
-static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async /* futureValueType= dynamic */ {}
-static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
+static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
-static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async* {}
-static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
+static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
self::Extension|syncStarMethod(0);
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.outline.expect
index cc28afd..5a806b1 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -10,17 +10,17 @@
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
-static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync*
+static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync*
;
-static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
-static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async
+static method Extension|asyncMethod(lowered final core::int #this) → dynamic async
;
-static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
-static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async*
+static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async*
;
-static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
index c9d8f91..66e1488 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-extension Extension on core::int* {
+extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -11,11 +11,11 @@
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
-static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
- core::int* :await_jump_var = 0;
+static method Extension|syncStarMethod(lowered final core::int #this) → dynamic /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>* :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
{}
return false;
}
@@ -23,15 +23,15 @@
}
return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
}
-static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
-static method Extension|asyncMethod(lowered final core::int* #this) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+static method Extension|asyncMethod(lowered final core::int #this) → dynamic /* futureValueType= dynamic */ /* originally async */ {
+ final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
core::bool* :is_sync = false;
dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
+ (dynamic) → dynamic :async_op_then;
+ (core::Object, core::StackTrace) → dynamic :async_op_error;
+ core::int :await_jump_var = 0;
dynamic :await_ctx_var;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
try {
@@ -40,23 +40,23 @@
asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
return;
}
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+ on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
}
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
+ :async_op(null, null){() → dynamic};
:is_sync = true;
return :async_future;
}
-static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
-static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>* :controller;
+static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic /* originally async* */ {
+ asy::_AsyncStarStreamController<dynamic>? :controller;
dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
+ (dynamic) → dynamic :async_op_then;
+ (core::Object, core::StackTrace) → dynamic :async_op_error;
+ core::int :await_jump_var = 0;
dynamic :await_ctx_var;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
try
@@ -65,7 +65,7 @@
{}
return;
}
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+ on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
:controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
}
finally {
@@ -77,7 +77,7 @@
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
return :controller_stream;
}
-static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
+static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
self::Extension|syncStarMethod(0);
diff --git a/pkg/front_end/testcases/extensions/bounds.dart b/pkg/front_end/testcases/extensions/bounds.dart
index 104117b..ee4308a 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart
+++ b/pkg/front_end/testcases/extensions/bounds.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension Extension1<T extends Object> on T {
method1<S extends Object>() {}
method2<S extends String>() {}
diff --git a/pkg/front_end/testcases/extensions/bounds.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/bounds.dart.textual_outline.expect
index e32a7f7..fe4b2b0 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/bounds.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension1<T extends Object> on T {
method1<S extends Object>() {}
method2<S extends String>() {}
diff --git a/pkg/front_end/testcases/extensions/bounds.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/bounds.dart.textual_outline_modelled.expect
index e32a7f7..fe4b2b0 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/bounds.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension1<T extends Object> on T {
method1<S extends Object>() {}
method2<S extends String>() {}
diff --git a/pkg/front_end/testcases/extensions/bounds.dart.weak.expect b/pkg/front_end/testcases/extensions/bounds.dart.weak.expect
index 8c13b5c..bcf36b9 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/bounds.dart.weak.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension1<T extends core::Object*> on T* {
+extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
-extension Extension2<T extends core::String*> on T* {
+extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
-extension Extension3<T extends dynamic> on T* {
+extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
-extension Extension4<T extends core::Object* = dynamic> on T* {
+extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,52 +42,52 @@
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
-static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic {}
-static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
-static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic {}
-static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
-static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic {}
-static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
-static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic {}
-static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
-static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic {}
-static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
-static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic {}
-static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
-static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic {}
-static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
-static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic {}
-static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
-static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic {}
-static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
-static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic {}
-static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
-static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic {}
-static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
+static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic {}
+static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
+static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic {}
+static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
+static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic {}
+static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
+static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic {}
+static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
+static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic {}
+static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
+static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic {}
+static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
+static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic {}
+static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
+static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic {}
+static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
+static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic {}
+static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
+static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic {}
+static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
+static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic {}
+static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
-static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic {}
-static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
-static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic {}
-static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
-static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic {}
-static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
-static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic {}
-static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
-static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic {}
-static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
+static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic {}
+static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
+static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic {}
+static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
+static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic {}
+static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
+static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic {}
+static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
+static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic {}
+static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/bounds.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/bounds.dart.weak.modular.expect
index 8c13b5c..bcf36b9 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/bounds.dart.weak.modular.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension1<T extends core::Object*> on T* {
+extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
-extension Extension2<T extends core::String*> on T* {
+extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
-extension Extension3<T extends dynamic> on T* {
+extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
-extension Extension4<T extends core::Object* = dynamic> on T* {
+extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,52 +42,52 @@
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
-static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic {}
-static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
-static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic {}
-static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
-static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic {}
-static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
-static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic {}
-static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
-static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic {}
-static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
-static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic {}
-static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
-static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic {}
-static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
-static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic {}
-static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
-static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic {}
-static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
-static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic {}
-static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
-static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic {}
-static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
+static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic {}
+static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
+static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic {}
+static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
+static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic {}
+static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
+static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic {}
+static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
+static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic {}
+static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
+static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic {}
+static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
+static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic {}
+static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
+static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic {}
+static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
+static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic {}
+static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
+static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic {}
+static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
+static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic {}
+static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
-static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic {}
-static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
-static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic {}
-static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
-static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic {}
-static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
-static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic {}
-static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
-static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic {}
-static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
+static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic {}
+static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
+static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic {}
+static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
+static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic {}
+static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
+static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic {}
+static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
+static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic {}
+static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/bounds.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/bounds.dart.weak.outline.expect
index 923a293..f0bd53d 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/bounds.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension1<T extends core::Object*> on T* {
+extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
-extension Extension2<T extends core::String*> on T* {
+extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
-extension Extension3<T extends dynamic> on T* {
+extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
-extension Extension4<T extends core::Object* = dynamic> on T* {
+extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,69 +42,69 @@
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
-static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic
+static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic
;
-static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
-static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic
+static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
+static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic
;
-static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
-static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic
+static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
+static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic
;
-static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
-static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic
+static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
+static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic
;
-static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
-static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic
+static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
+static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic
;
-static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
-static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic
+static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
+static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic
;
-static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
-static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic
+static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
+static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic
;
-static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
-static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic
+static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
+static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic
;
-static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
-static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic
+static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
+static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic
;
-static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
-static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic
+static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
+static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic
;
-static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
-static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic
+static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
+static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic
;
-static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
+static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
-static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic
+static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic
;
-static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
-static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic
+static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
+static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic
;
-static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
-static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic
+static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
+static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic
;
-static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
-static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic
+static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
+static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic
;
-static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
-static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic
+static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
+static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic
;
-static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
+static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/bounds.dart.weak.transformed.expect
index 8c13b5c..bcf36b9 100644
--- a/pkg/front_end/testcases/extensions/bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/bounds.dart.weak.transformed.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension1<T extends core::Object*> on T* {
+extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
-extension Extension2<T extends core::String*> on T* {
+extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
-extension Extension3<T extends dynamic> on T* {
+extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
-extension Extension4<T extends core::Object* = dynamic> on T* {
+extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,52 +42,52 @@
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
-static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic {}
-static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
-static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic {}
-static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
-static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic {}
-static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
-static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic {}
-static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
-static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic {}
-static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
-static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic {}
-static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
-static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic {}
-static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
-static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic {}
-static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
-static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic {}
-static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
-static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic {}
-static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
-static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic {}
-static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
+static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic {}
+static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
+static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic {}
+static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
+static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic {}
+static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
+static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic {}
+static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
+static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic {}
+static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
+static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic {}
+static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
+static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic {}
+static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
+static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic {}
+static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
+static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic {}
+static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
+static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic {}
+static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
+static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic {}
+static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
-static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic {}
-static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
-static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic {}
-static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
- return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
-static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic {}
-static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
- return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
-static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic {}
-static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
- return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
-static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic {}
-static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
- return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
+static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic {}
+static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
+static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic {}
+static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
+ return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
+static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic {}
+static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
+ return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
+static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic {}
+static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
+ return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
+static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic {}
+static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
+ return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart b/pkg/front_end/testcases/extensions/builtin_identifiers.dart
index 452cea3..ada520d 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension mixin on int {}
extension extension on int {}
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline.expect
index 2e6f837..3fef925 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension mixin on int {}
extension extension on int {}
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline_modelled.expect
index b1fc88b..94a2d44 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension as on int {}
extension extension on int {}
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.expect b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.expect
index dba880e..0b269da 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@
import self as self;
import "dart:core" as core;
-extension mixin on core::int* {
+extension mixin on core::int {
}
-extension extension on core::int* {
+extension extension on core::int {
}
-extension as on core::int* {
+extension as on core::int {
}
static method main() → void {}
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.modular.expect
index dba880e..0b269da 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@
import self as self;
import "dart:core" as core;
-extension mixin on core::int* {
+extension mixin on core::int {
}
-extension extension on core::int* {
+extension extension on core::int {
}
-extension as on core::int* {
+extension as on core::int {
}
static method main() → void {}
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.outline.expect
index deff425..97d86db 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,11 +17,11 @@
import self as self;
import "dart:core" as core;
-extension mixin on core::int* {
+extension mixin on core::int {
}
-extension extension on core::int* {
+extension extension on core::int {
}
-extension as on core::int* {
+extension as on core::int {
}
static method main() → void
;
diff --git a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.transformed.expect
index dba880e..0b269da 100644
--- a/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/builtin_identifiers.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@
import self as self;
import "dart:core" as core;
-extension mixin on core::int* {
+extension mixin on core::int {
}
-extension extension on core::int* {
+extension extension on core::int {
}
-extension as on core::int* {
+extension as on core::int {
}
static method main() → void {}
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart b/pkg/front_end/testcases/extensions/call_methods.dart
index d3db2f7..3ae8fe3 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart
+++ b/pkg/front_end/testcases/extensions/call_methods.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class A {
String get call => "My name is A";
}
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline.expect
index fd2596a..cb13225 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A {
String get call => "My name is A";
}
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline_modelled.expect
index ac089e2..30be637 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
A a = new A();
B b = new B();
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect b/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect
index d38841f..4373c84 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -76,84 +76,64 @@
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- get call() → core::String*
+ get call() → core::String
return "My name is A";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super core::Object::•()
;
- get call() → () →* core::String*
- return () → core::String* => "My name is B";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ get call() → () → core::String
+ return () → core::String => "My name is B";
}
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
-extension _extension#1 on core::num* {
+extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
-extension _extension#2 on core::String* {
+extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
-static field core::String* topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel1 = 1(10);
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
-static field core::String* topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel2 = 1(\"10\");
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
-static field core::String* topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel3 = 1.0(10);
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
-static field core::String* topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel4 = 1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
-static field self::A* a = new self::A::•();
+static field self::A a = new self::A::•();
static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel5 = a(2);
^";
-static field self::B* b = new self::B::•();
+static field self::B b = new self::B::•();
static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel6 = a(2, \"3\");
^";
-static method _extension#0|get#call(lowered final core::int* #this) → core::String*
+static method _extension#0|get#call(lowered final core::int #this) → core::String
return "My name is int";
-static method _extension#1|get#call(lowered final core::num* #this) → core::String*
+static method _extension#1|get#call(lowered final core::num #this) → core::String
return "My name is num";
-static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
- return () → core::String* => "My name is String";
+static method _extension#2|get#call(lowered final core::String #this) → () → core::String
+ return () → core::String => "My name is String";
static method main() → dynamic {
- self::_extension#2|get#call("")(){() →* core::String*};
+ self::_extension#2|get#call("")(){() → core::String};
}
static method errors() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
@@ -172,7 +152,7 @@
Try removing the extra positional arguments.
1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
- self::A* a = new self::A::•();
+ self::A a = new self::A::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -183,7 +163,7 @@
Try changing 'call' to a method or explicitly invoke 'call'.
a(2, \"3\");
^";
- self::B* b = new self::B::•();
+ self::B b = new self::B::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/call_methods.dart.weak.modular.expect
index d38841f..4373c84 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -76,84 +76,64 @@
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- get call() → core::String*
+ get call() → core::String
return "My name is A";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super core::Object::•()
;
- get call() → () →* core::String*
- return () → core::String* => "My name is B";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ get call() → () → core::String
+ return () → core::String => "My name is B";
}
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
-extension _extension#1 on core::num* {
+extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
-extension _extension#2 on core::String* {
+extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
-static field core::String* topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel1 = 1(10);
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
-static field core::String* topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel2 = 1(\"10\");
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
-static field core::String* topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel3 = 1.0(10);
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
-static field core::String* topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel4 = 1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
-static field self::A* a = new self::A::•();
+static field self::A a = new self::A::•();
static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel5 = a(2);
^";
-static field self::B* b = new self::B::•();
+static field self::B b = new self::B::•();
static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel6 = a(2, \"3\");
^";
-static method _extension#0|get#call(lowered final core::int* #this) → core::String*
+static method _extension#0|get#call(lowered final core::int #this) → core::String
return "My name is int";
-static method _extension#1|get#call(lowered final core::num* #this) → core::String*
+static method _extension#1|get#call(lowered final core::num #this) → core::String
return "My name is num";
-static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
- return () → core::String* => "My name is String";
+static method _extension#2|get#call(lowered final core::String #this) → () → core::String
+ return () → core::String => "My name is String";
static method main() → dynamic {
- self::_extension#2|get#call("")(){() →* core::String*};
+ self::_extension#2|get#call("")(){() → core::String};
}
static method errors() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
@@ -172,7 +152,7 @@
Try removing the extra positional arguments.
1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
- self::A* a = new self::A::•();
+ self::A a = new self::A::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -183,7 +163,7 @@
Try changing 'call' to a method or explicitly invoke 'call'.
a(2, \"3\");
^";
- self::B* b = new self::B::•();
+ self::B b = new self::B::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/call_methods.dart.weak.outline.expect
index 1745cce..88c97e4 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.weak.outline.expect
@@ -1,61 +1,41 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
;
- get call() → core::String*
+ get call() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
;
- get call() → () →* core::String*
+ get call() → () → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
-extension _extension#1 on core::num* {
+extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
-extension _extension#2 on core::String* {
+extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
-static field core::String* topLevel1;
-static field core::String* topLevel2;
-static field core::String* topLevel3;
-static field core::String* topLevel4;
-static field self::A* a;
+static field core::String topLevel1;
+static field core::String topLevel2;
+static field core::String topLevel3;
+static field core::String topLevel4;
+static field self::A a;
static field invalid-type topLevel5;
-static field self::B* b;
+static field self::B b;
static field invalid-type topLevel6;
-static method _extension#0|get#call(lowered final core::int* #this) → core::String*
+static method _extension#0|get#call(lowered final core::int #this) → core::String
;
-static method _extension#1|get#call(lowered final core::num* #this) → core::String*
+static method _extension#1|get#call(lowered final core::num #this) → core::String
;
-static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
+static method _extension#2|get#call(lowered final core::String #this) → () → core::String
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect
index d38841f..4373c84 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -76,84 +76,64 @@
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- get call() → core::String*
+ get call() → core::String
return "My name is A";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super core::Object::•()
;
- get call() → () →* core::String*
- return () → core::String* => "My name is B";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ get call() → () → core::String
+ return () → core::String => "My name is B";
}
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
-extension _extension#1 on core::num* {
+extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
-extension _extension#2 on core::String* {
+extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
-static field core::String* topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel1 = 1(10);
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
-static field core::String* topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel2 = 1(\"10\");
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
-static field core::String* topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel3 = 1.0(10);
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
-static field core::String* topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
+static field core::String topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel4 = 1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
-static field self::A* a = new self::A::•();
+static field self::A a = new self::A::•();
static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel5 = a(2);
^";
-static field self::B* b = new self::B::•();
+static field self::B b = new self::B::•();
static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel6 = a(2, \"3\");
^";
-static method _extension#0|get#call(lowered final core::int* #this) → core::String*
+static method _extension#0|get#call(lowered final core::int #this) → core::String
return "My name is int";
-static method _extension#1|get#call(lowered final core::num* #this) → core::String*
+static method _extension#1|get#call(lowered final core::num #this) → core::String
return "My name is num";
-static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
- return () → core::String* => "My name is String";
+static method _extension#2|get#call(lowered final core::String #this) → () → core::String
+ return () → core::String => "My name is String";
static method main() → dynamic {
- self::_extension#2|get#call("")(){() →* core::String*};
+ self::_extension#2|get#call("")(){() → core::String};
}
static method errors() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
@@ -172,7 +152,7 @@
Try removing the extra positional arguments.
1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
- self::A* a = new self::A::•();
+ self::A a = new self::A::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -183,7 +163,7 @@
Try changing 'call' to a method or explicitly invoke 'call'.
a(2, \"3\");
^";
- self::B* b = new self::B::•();
+ self::B b = new self::B::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart b/pkg/front_end/testcases/extensions/check_bounds.dart
index bfa3795..0712bf2 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
part 'check_bounds_lib.dart';
class A {}
@@ -17,25 +17,24 @@
main() {}
-test() {
- A a;
-
+test(A a) {
Class<A> classA = new Class<A>();
+ Class<B> classB = new Class<B>();
+
classA.method(); // Expect method not found.
Extension(classA).method(); // Expect bounds mismatch.
Extension<A>(classA).method(); // Expect bounds mismatch.
- Extension<B>(classA).method();
+ Extension<B>(classB).method();
Extension(classA).genericMethod(a); // Expect bounds mismatch.
Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
- Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
- Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
- Extension<B>(classA).genericMethod<B>(a);
+ Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
+ Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
+ Extension<B>(classB).genericMethod<B>(a);
- Class<B> classB = new Class<B>();
classB.method();
Extension(classB).method();
Extension<A>(classB).method(); // Expect bounds mismatch.
@@ -57,6 +56,8 @@
final A a = new A();
final Class<A> classA = new Class<A>();
+final Class<B> classB = new Class<B>();
+
final field1 = classA.method(); // Expect method not found.
final field2 = Extension(classA).method(); // Expect bounds mismatch.
final field3 = Extension<A>(classA).method(); // Expect bounds mismatch.
@@ -70,12 +71,11 @@
final field10 =
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
final field11 =
- Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+ Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
final field12 =
- Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
-final field13 = Extension<B>(classA).genericMethod<B>(a);
+ Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
+final field13 = Extension<B>(classB).genericMethod<B>(a);
-final Class<B> classB = new Class<B>();
final field14 = classB.method();
final field15 = Extension(classB).method();
final field16 = Extension<A>(classB).method(); // Expect bounds mismatch.
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline.expect
index d3150dd..5374e92 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
part 'check_bounds_lib.dart';
class A {}
@@ -13,9 +12,10 @@
}
main() {}
-test() {}
+test(A a) {}
final A a = new A();
final Class<A> classA = new Class<A>();
+final Class<B> classB = new Class<B>();
final field1 = classA.method();
final field2 = Extension(classA).method();
final field3 = Extension<A>(classA).method();
@@ -26,10 +26,9 @@
final field8 = Extension<A>(classA).genericMethod(a);
final field9 = Extension<A>(classA).genericMethod<A>(a);
final field10 = Extension<A>(classA).genericMethod<B>(a);
-final field11 = Extension<B>(classA).genericMethod(a);
-final field12 = Extension<B>(classA).genericMethod<A>(a);
-final field13 = Extension<B>(classA).genericMethod<B>(a);
-final Class<B> classB = new Class<B>();
+final field11 = Extension<B>(classB).genericMethod(a);
+final field12 = Extension<B>(classB).genericMethod<A>(a);
+final field13 = Extension<B>(classB).genericMethod<B>(a);
final field14 = classB.method();
final field15 = Extension(classB).method();
final field16 = Extension<A>(classB).method();
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline_modelled.expect
index dbd1434..80266eb 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
part 'check_bounds_lib.dart';
class A {}
@@ -17,9 +16,9 @@
final Class<B> classB = new Class<B>();
final field1 = classA.method();
final field10 = Extension<A>(classA).genericMethod<B>(a);
-final field11 = Extension<B>(classA).genericMethod(a);
-final field12 = Extension<B>(classA).genericMethod<A>(a);
-final field13 = Extension<B>(classA).genericMethod<B>(a);
+final field11 = Extension<B>(classB).genericMethod(a);
+final field12 = Extension<B>(classB).genericMethod<A>(a);
+final field13 = Extension<B>(classB).genericMethod<B>(a);
final field14 = classB.method();
final field15 = Extension(classB).method();
final field16 = Extension<A>(classB).method();
@@ -45,4 +44,4 @@
final field8 = Extension<A>(classA).genericMethod(a);
final field9 = Extension<A>(classA).genericMethod<A>(a);
main() {}
-test() {}
+test(A a) {}
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.expect
index 0e8aa01..530df36 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -69,6 +69,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -119,6 +125,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -133,7 +145,7 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -143,13 +155,19 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:41:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:40:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -159,7 +177,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:43:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -169,7 +187,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:45:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -179,7 +197,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// classB.genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:46:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -189,7 +213,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:48:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -199,7 +223,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -209,7 +239,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -219,7 +249,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -229,7 +259,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -239,7 +269,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:52:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -249,7 +285,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:52:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -259,7 +295,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:54:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -269,14 +305,20 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// final field1 = classA.method(); // Expect method not found.
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:61:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -286,7 +328,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:63:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -296,41 +338,28 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
+// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
-// ^
-// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
-// extension Extension<T extends B> on Class<T> {
-// ^
-//
-// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
-// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
-// ^
-// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
-// genericMethod<S extends B>(S s) {}
-// ^
+// final field4 = Extension<B>(classA).method();
+// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try changing type arguments so that they conform to the bounds.
-// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -340,13 +369,39 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
+// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// ^
+// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
+// extension Extension<T extends B> on Class<T> {
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:66:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// ^
+// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
+// genericMethod<S extends B>(S s) {}
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -356,7 +411,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -366,7 +421,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -376,7 +431,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -386,7 +441,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:71:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:72:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -396,26 +457,32 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:73:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:74:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:75:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:76:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field13 = Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:81:17: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -446,6 +513,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field20 = classB.genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:87:35: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -466,6 +539,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field23 = Extension(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:92:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -506,6 +585,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -536,6 +621,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field29 = Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -603,6 +694,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -653,6 +750,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -667,7 +770,7 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -677,13 +780,19 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:28:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:27:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -693,7 +802,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:30:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -703,7 +812,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -713,7 +822,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// classB.genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:33:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -723,7 +838,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -733,7 +848,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -743,7 +864,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -753,7 +874,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -763,7 +884,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -773,7 +894,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -783,7 +910,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -793,7 +920,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -803,170 +930,243 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super self::A::•()
;
}
-class Class<T extends self::A*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends self::B*> on self::Class<T*>* {
+extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
-static final field self::A* a = new self::A::•();
-static final field self::Class<self::A*>* classA = new self::Class::•<self::A*>();
-static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
+static final field self::A a = new self::A::•();
+static final field self::Class<self::A> classA = new self::Class::•<self::A>();
+static final field self::Class<self::B> classB = new self::Class::•<self::B>();
+static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
final field1 = classA.method(); // Expect method not found.
^^^^^^" in self::classA{<unresolved>}.method();
-static final field dynamic field2 = self::Extension|method<self::A*>(self::classA);
-static final field dynamic field3 = self::Extension|method<self::A*>(self::classA);
-static final field dynamic field4 = self::Extension|method<self::B*>(self::classA as{TypeError} self::Class<self::B*>*);
-static final field dynamic field5 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field6 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field7 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
-static final field dynamic field8 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field9 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field10 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
-static final field dynamic field11 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
-static final field dynamic field12 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
-static final field dynamic field13 = self::Extension|genericMethod<self::B*, self::B*>(self::classA as{TypeError} self::Class<self::B*>*, self::a as{TypeError} self::B*);
-static final field self::Class<self::B*>* classB = new self::Class::•<self::B*>();
-static final field dynamic field14 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field15 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field16 = self::Extension|method<self::A*>(self::classB);
-static final field dynamic field17 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field18 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field19 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field20 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field21 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field22 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field23 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field24 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
-static final field dynamic field25 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
-static final field dynamic field26 = self::Extension|genericMethod<self::A*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field27 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field28 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field29 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic {}
-static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
-static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic {}
-static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
- return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
+static final field dynamic field2 = self::Extension|method<self::A>(self::classA);
+static final field dynamic field3 = self::Extension|method<self::A>(self::classA);
+static final field dynamic field4 = self::Extension|method<self::B>(invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
+ - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field4 = Extension<B>(classA).method();
+ ^" in self::classA as{TypeError,ForNonNullableByDefault} self::Class<self::B>);
+static final field dynamic field5 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field6 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field7 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field8 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field9 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field10 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field11 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field12 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field13 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field13 = Extension<B>(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field14 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field15 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field16 = self::Extension|method<self::A>(self::classB);
+static final field dynamic field17 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field18 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field19 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field20 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field20 = classB.genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field21 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field22 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field23 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field23 = Extension(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field24 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
+static final field dynamic field25 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
+static final field dynamic field26 = self::Extension|genericMethod<self::A, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field27 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field28 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field29 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field29 = Extension<B>(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic {}
+static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
+ return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
+static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic {}
+static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
+ return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic {}
-static method test() → dynamic {
- self::A* a;
- self::Class<self::A*>* classA = new self::Class::•<self::A*>();
+static method test(self::A a) → dynamic {
+ self::Class<self::A> classA = new self::Class::•<self::A>();
+ self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:24:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method(); // Expect method not found.
^^^^^^" in classA{<unresolved>}.method();
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
- self::Class<self::B*>* classB = new self::Class::•<self::B*>();
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::A*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::A>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ classB.genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
-static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic {
- self::A* a;
- self::Class<self::A*>* classA = new self::Class::•<self::A*>();
+static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic {
+ self::Class<self::A> classA = new self::Class::•<self::A>();
+ self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method();
^^^^^^" in classA{<unresolved>}.method();
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
- self::Class<self::B*>* classB = new self::Class::•<self::B*>();
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::A*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::A>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ classB.genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.modular.expect
index 0e8aa01..530df36 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -69,6 +69,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -119,6 +125,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -133,7 +145,7 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -143,13 +155,19 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:41:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:40:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -159,7 +177,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:43:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -169,7 +187,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:45:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -179,7 +197,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// classB.genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:46:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -189,7 +213,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:48:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -199,7 +223,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -209,7 +239,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -219,7 +249,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -229,7 +259,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -239,7 +269,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:52:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -249,7 +285,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:52:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -259,7 +295,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:54:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -269,14 +305,20 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// final field1 = classA.method(); // Expect method not found.
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:61:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -286,7 +328,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:63:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -296,41 +338,28 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
+// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
-// ^
-// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
-// extension Extension<T extends B> on Class<T> {
-// ^
-//
-// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
-// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
-// ^
-// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
-// genericMethod<S extends B>(S s) {}
-// ^
+// final field4 = Extension<B>(classA).method();
+// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try changing type arguments so that they conform to the bounds.
-// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -340,13 +369,39 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
+// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// ^
+// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
+// extension Extension<T extends B> on Class<T> {
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:66:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// ^
+// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
+// genericMethod<S extends B>(S s) {}
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -356,7 +411,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -366,7 +421,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -376,7 +431,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -386,7 +441,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:71:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:72:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -396,26 +457,32 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:73:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:74:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:75:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:76:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field13 = Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:81:17: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -446,6 +513,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field20 = classB.genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:87:35: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -466,6 +539,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field23 = Extension(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:92:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -506,6 +585,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -536,6 +621,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field29 = Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -603,6 +694,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -653,6 +750,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -667,7 +770,7 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -677,13 +780,19 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:28:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:27:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -693,7 +802,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:30:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -703,7 +812,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -713,7 +822,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// classB.genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:33:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -723,7 +838,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -733,7 +848,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -743,7 +864,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -753,7 +874,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -763,7 +884,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -773,7 +894,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -783,7 +910,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -793,7 +920,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -803,170 +930,243 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super self::A::•()
;
}
-class Class<T extends self::A*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends self::B*> on self::Class<T*>* {
+extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
-static final field self::A* a = new self::A::•();
-static final field self::Class<self::A*>* classA = new self::Class::•<self::A*>();
-static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
+static final field self::A a = new self::A::•();
+static final field self::Class<self::A> classA = new self::Class::•<self::A>();
+static final field self::Class<self::B> classB = new self::Class::•<self::B>();
+static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
final field1 = classA.method(); // Expect method not found.
^^^^^^" in self::classA{<unresolved>}.method();
-static final field dynamic field2 = self::Extension|method<self::A*>(self::classA);
-static final field dynamic field3 = self::Extension|method<self::A*>(self::classA);
-static final field dynamic field4 = self::Extension|method<self::B*>(self::classA as{TypeError} self::Class<self::B*>*);
-static final field dynamic field5 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field6 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field7 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
-static final field dynamic field8 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field9 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field10 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
-static final field dynamic field11 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
-static final field dynamic field12 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
-static final field dynamic field13 = self::Extension|genericMethod<self::B*, self::B*>(self::classA as{TypeError} self::Class<self::B*>*, self::a as{TypeError} self::B*);
-static final field self::Class<self::B*>* classB = new self::Class::•<self::B*>();
-static final field dynamic field14 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field15 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field16 = self::Extension|method<self::A*>(self::classB);
-static final field dynamic field17 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field18 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field19 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field20 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field21 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field22 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field23 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field24 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
-static final field dynamic field25 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
-static final field dynamic field26 = self::Extension|genericMethod<self::A*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field27 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field28 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field29 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic {}
-static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
-static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic {}
-static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
- return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
+static final field dynamic field2 = self::Extension|method<self::A>(self::classA);
+static final field dynamic field3 = self::Extension|method<self::A>(self::classA);
+static final field dynamic field4 = self::Extension|method<self::B>(invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
+ - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field4 = Extension<B>(classA).method();
+ ^" in self::classA as{TypeError,ForNonNullableByDefault} self::Class<self::B>);
+static final field dynamic field5 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field6 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field7 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field8 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field9 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field10 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field11 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field12 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field13 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field13 = Extension<B>(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field14 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field15 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field16 = self::Extension|method<self::A>(self::classB);
+static final field dynamic field17 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field18 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field19 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field20 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field20 = classB.genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field21 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field22 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field23 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field23 = Extension(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field24 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
+static final field dynamic field25 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
+static final field dynamic field26 = self::Extension|genericMethod<self::A, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field27 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field28 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field29 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field29 = Extension<B>(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic {}
+static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
+ return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
+static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic {}
+static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
+ return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic {}
-static method test() → dynamic {
- self::A* a;
- self::Class<self::A*>* classA = new self::Class::•<self::A*>();
+static method test(self::A a) → dynamic {
+ self::Class<self::A> classA = new self::Class::•<self::A>();
+ self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:24:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method(); // Expect method not found.
^^^^^^" in classA{<unresolved>}.method();
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
- self::Class<self::B*>* classB = new self::Class::•<self::B*>();
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::A*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::A>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ classB.genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
-static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic {
- self::A* a;
- self::Class<self::A*>* classA = new self::Class::•<self::A*>();
+static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic {
+ self::Class<self::A> classA = new self::Class::•<self::A>();
+ self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method();
^^^^^^" in classA{<unresolved>}.method();
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
- self::Class<self::B*>* classB = new self::Class::•<self::B*>();
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::A*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::A>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ classB.genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.outline.expect
index 22f598c..9a7437d 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.outline.expect
@@ -1,48 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
;
}
-class Class<T extends self::A*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends self::B*> on self::Class<T*>* {
+extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
-static final field self::A* a;
-static final field self::Class<self::A*>* classA;
+static final field self::A a;
+static final field self::Class<self::A> classA;
+static final field self::Class<self::B> classB;
static final field dynamic field1;
static final field dynamic field2;
static final field dynamic field3;
@@ -56,7 +37,6 @@
static final field dynamic field11;
static final field dynamic field12;
static final field dynamic field13;
-static final field self::Class<self::B*>* classB;
static final field dynamic field14;
static final field dynamic field15;
static final field dynamic field16;
@@ -73,17 +53,17 @@
static final field dynamic field27;
static final field dynamic field28;
static final field dynamic field29;
-static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic
+static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic
;
-static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
-static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic
+static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
+ return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
+static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic
;
-static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
- return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
+static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
+ return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic
;
-static method test() → dynamic
+static method test(self::A a) → dynamic
;
-static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic
+static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.transformed.expect
index 0e8aa01..530df36 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -69,6 +69,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -119,6 +125,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -133,7 +145,7 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -143,13 +155,19 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:41:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:40:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -159,7 +177,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:43:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -169,7 +187,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:45:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -179,7 +197,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// classB.genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:46:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -189,7 +213,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:48:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -199,7 +223,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -209,7 +239,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -219,7 +249,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -229,7 +259,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -239,7 +269,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:52:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -249,7 +285,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:52:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -259,7 +295,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:54:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -269,14 +305,20 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// final field1 = classA.method(); // Expect method not found.
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:61:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -286,7 +328,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:63:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -296,41 +338,28 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
+// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
-// ^
-// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
-// extension Extension<T extends B> on Class<T> {
-// ^
-//
-// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
-// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
-// ^
-// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
-// genericMethod<S extends B>(S s) {}
-// ^
+// final field4 = Extension<B>(classA).method();
+// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
-// Try changing type arguments so that they conform to the bounds.
-// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -340,13 +369,39 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
+// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// ^
+// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
+// extension Extension<T extends B> on Class<T> {
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:66:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// ^
+// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
+// genericMethod<S extends B>(S s) {}
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -356,7 +411,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -366,7 +421,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -376,7 +431,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -386,7 +441,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:71:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds.dart:72:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -396,26 +457,32 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:73:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:74:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds.dart:75:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds.dart:76:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field13 = Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:81:17: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -446,6 +513,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field20 = classB.genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:87:35: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -466,6 +539,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field23 = Extension(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:92:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -506,6 +585,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -536,6 +621,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// final field29 = Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -603,6 +694,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -653,6 +750,12 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -667,7 +770,7 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
-// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -677,13 +780,19 @@
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
-// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
+// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:28:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:27:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -693,7 +802,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:30:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -703,7 +812,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -713,7 +822,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// classB.genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:33:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -723,7 +838,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -733,7 +848,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension(classB).genericMethod<B>(a);
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -743,7 +864,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -753,7 +874,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -763,7 +884,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -773,7 +894,13 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+// ^
+//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -783,7 +910,7 @@
// extension Extension<T extends B> on Class<T> {
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -793,7 +920,7 @@
// genericMethod<S extends B>(S s) {}
// ^
//
-// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -803,170 +930,243 @@
// genericMethod<S extends B>(S s) {}
// ^
//
+// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+// Extension<B>(classB).genericMethod<B>(a);
+// ^
+//
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super self::A::•()
;
}
-class Class<T extends self::A*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends self::B*> on self::Class<T*>* {
+extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
-static final field self::A* a = new self::A::•();
-static final field self::Class<self::A*>* classA = new self::Class::•<self::A*>();
-static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
+static final field self::A a = new self::A::•();
+static final field self::Class<self::A> classA = new self::Class::•<self::A>();
+static final field self::Class<self::B> classB = new self::Class::•<self::B>();
+static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
final field1 = classA.method(); // Expect method not found.
^^^^^^" in self::classA{<unresolved>}.method();
-static final field dynamic field2 = self::Extension|method<self::A*>(self::classA);
-static final field dynamic field3 = self::Extension|method<self::A*>(self::classA);
-static final field dynamic field4 = self::Extension|method<self::B*>(self::classA as{TypeError} self::Class<self::B*>*);
-static final field dynamic field5 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field6 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field7 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
-static final field dynamic field8 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field9 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
-static final field dynamic field10 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
-static final field dynamic field11 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
-static final field dynamic field12 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
-static final field dynamic field13 = self::Extension|genericMethod<self::B*, self::B*>(self::classA as{TypeError} self::Class<self::B*>*, self::a as{TypeError} self::B*);
-static final field self::Class<self::B*>* classB = new self::Class::•<self::B*>();
-static final field dynamic field14 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field15 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field16 = self::Extension|method<self::A*>(self::classB);
-static final field dynamic field17 = self::Extension|method<self::B*>(self::classB);
-static final field dynamic field18 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field19 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field20 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field21 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field22 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field23 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field24 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
-static final field dynamic field25 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
-static final field dynamic field26 = self::Extension|genericMethod<self::A*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static final field dynamic field27 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field28 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
-static final field dynamic field29 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
-static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic {}
-static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
-static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic {}
-static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
- return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
+static final field dynamic field2 = self::Extension|method<self::A>(self::classA);
+static final field dynamic field3 = self::Extension|method<self::A>(self::classA);
+static final field dynamic field4 = self::Extension|method<self::B>(invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
+ - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field4 = Extension<B>(classA).method();
+ ^" in self::classA as{TypeError,ForNonNullableByDefault} self::Class<self::B>);
+static final field dynamic field5 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field6 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field7 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field8 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field9 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
+static final field dynamic field10 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field11 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field12 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field13 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field13 = Extension<B>(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field14 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field15 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field16 = self::Extension|method<self::A>(self::classB);
+static final field dynamic field17 = self::Extension|method<self::B>(self::classB);
+static final field dynamic field18 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field19 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field20 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field20 = classB.genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field21 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field22 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field23 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field23 = Extension(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field24 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
+static final field dynamic field25 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
+static final field dynamic field26 = self::Extension|genericMethod<self::A, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static final field dynamic field27 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field28 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
+static final field dynamic field29 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+final field29 = Extension<B>(classB).genericMethod<B>(a);
+ ^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
+static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic {}
+static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
+ return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
+static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic {}
+static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
+ return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic {}
-static method test() → dynamic {
- self::A* a;
- self::Class<self::A*>* classA = new self::Class::•<self::A*>();
+static method test(self::A a) → dynamic {
+ self::Class<self::A> classA = new self::Class::•<self::A>();
+ self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:24:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method(); // Expect method not found.
^^^^^^" in classA{<unresolved>}.method();
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
- self::Class<self::B*>* classB = new self::Class::•<self::B*>();
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::A*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::A>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ classB.genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
-static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic {
- self::A* a;
- self::Class<self::A*>* classA = new self::Class::•<self::A*>();
+static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic {
+ self::Class<self::A> classA = new self::Class::•<self::A>();
+ self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method();
^^^^^^" in classA{<unresolved>}.method();
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::A*>(classA);
- self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::A*>(classA, a);
- self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
- self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
- self::Class<self::B*>* classB = new self::Class::•<self::B*>();
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|method<self::A*>(classB);
- self::Extension|method<self::B*>(classB);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::A*>(classB, a);
- self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::A*>(classB, a);
- self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::A>(classA);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::A>(classA, a);
+ self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|method<self::A>(classB);
+ self::Extension|method<self::B>(classB);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ classB.genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::A>(classB, a);
+ self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::A>(classB, a);
+ self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
+ - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
+ Extension<B>(classB).genericMethod<B>(a);
+ ^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
diff --git a/pkg/front_end/testcases/extensions/check_bounds_lib.dart b/pkg/front_end/testcases/extensions/check_bounds_lib.dart
index cf84769..47e8a2e 100644
--- a/pkg/front_end/testcases/extensions/check_bounds_lib.dart
+++ b/pkg/front_end/testcases/extensions/check_bounds_lib.dart
@@ -1,28 +1,27 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
part of 'check_bounds.dart';
-testInPart() {
- A a;
-
+testInPart(A a) {
Class<A> classA = new Class<A>();
+ Class<B> classB = new Class<B>();
+
classA.method();
Extension(classA).method(); // Expect bounds mismatch.
Extension<A>(classA).method(); // Expect bounds mismatch.
- Extension<B>(classA).method();
+ Extension<B>(classB).method();
Extension(classA).genericMethod(a); // Expect bounds mismatch.
Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
- Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
- Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
- Extension<B>(classA).genericMethod<B>(a);
+ Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
+ Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
+ Extension<B>(classB).genericMethod<B>(a);
- Class<B> classB = new Class<B>();
classB.method();
Extension(classB).method();
Extension<A>(classB).method(); // Expect bounds mismatch.
diff --git a/pkg/front_end/testcases/extensions/compounds.dart b/pkg/front_end/testcases/extensions/compounds.dart
index af73621..3189665 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart
+++ b/pkg/front_end/testcases/extensions/compounds.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Number {
final int value;
@@ -408,7 +408,7 @@
expect(n0, IntClassExtension(v).property);
}
-testExplicitNullAwareProperties(Class v) {
+testExplicitNullAwareProperties(Class? v) {
Number n0 = new Number(0);
Number n1 = new Number(1);
Number n2 = new Number(2);
@@ -446,7 +446,7 @@
expect(n0, ClassExtension(v)?.property, v == null);
}
-testExplicitNullAwareIntProperties(IntClass v) {
+testExplicitNullAwareIntProperties(IntClass? v) {
int n0 = 0;
int n1 = 1;
int n2 = 2;
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/compounds.dart.textual_outline.expect
index bb35225..89e856f 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Number {
final int value;
Number(this.value);
@@ -40,6 +39,6 @@
testIntProperties() {}
testExplicitProperties() {}
testExplicitIntProperties() {}
-testExplicitNullAwareProperties(Class v) {}
-testExplicitNullAwareIntProperties(IntClass v) {}
+testExplicitNullAwareProperties(Class? v) {}
+testExplicitNullAwareIntProperties(IntClass? v) {}
expect(expected, actual, [expectNull = false]) {}
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/compounds.dart.textual_outline_modelled.expect
index b845645..2ef5e18 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
Class(this.field);
Number field;
@@ -38,8 +37,8 @@
main() {}
testExplicitIntProperties() {}
-testExplicitNullAwareIntProperties(IntClass v) {}
-testExplicitNullAwareProperties(Class v) {}
+testExplicitNullAwareIntProperties(IntClass? v) {}
+testExplicitNullAwareProperties(Class? v) {}
testExplicitProperties() {}
testIntProperties() {}
testLocals() {}
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.weak.expect b/pkg/front_end/testcases/extensions/compounds.dart.weak.expect
index ccd5bd4..d1424bc 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.weak.expect
@@ -1,117 +1,90 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
- final field core::int* value;
- constructor •(core::int* value) → self::Number*
+ final field core::int value;
+ constructor •(core::int value) → self::Number
: self::Number::value = value, super core::Object::•()
;
- get hashCode() → core::int*
- return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
- operator ==(core::Object* other) → core::bool*
- return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
- method toString() → core::String*
- return "Number(${this.{self::Number::value}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ get hashCode() → core::int
+ return this.{self::Number::value}{core::int}.{core::num::hashCode}{core::int};
+ operator ==(core::Object other) → core::bool
+ return other is{ForNonNullableByDefault} self::Number && this.{self::Number::value}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Number}.{self::Number::value}{core::int};
+ method toString() → core::String
+ return "Number(${this.{self::Number::value}{core::int}})";
}
class Class extends core::Object {
- field self::Number* field;
- constructor •(self::Number* field) → self::Class*
+ field self::Number field;
+ constructor •(self::Number field) → self::Class
: self::Class::field = field, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::IntClass*
+ field core::int field;
+ constructor •(core::int field) → self::IntClass
: self::IntClass::field = field, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension NumberExtension on self::Number* {
+extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
-extension IntClassExtension on self::IntClass* {
+extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
-static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
- if(other is core::int*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
+static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number {
+ if(other is{ForNonNullableByDefault} core::int) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{core::int}){(core::num) → core::int});
}
else
- if(other is self::Number*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+ if(other is{ForNonNullableByDefault} self::Number) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
-static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
- if(other is core::int*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
+static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number {
+ if(other is{ForNonNullableByDefault} core::int) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{core::int}){(core::num) → core::int});
}
else
- if(other is self::Number*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+ if(other is{ForNonNullableByDefault} self::Number) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
-static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
- return #this.{self::Class::field}{self::Number*};
-static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
+static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
+ return #this.{self::Class::field}{self::Number};
+static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void {
#this.{self::Class::field} = value;
}
-static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
+static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic {
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
self::expect(n0, self::ClassExtension|get#property(#this));
- self::expect(n1, let final self::Number* #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
- self::expect(n2, let final self::Number* #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
- self::expect(n0, let final self::Number* #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
- self::expect(n1, let final self::Number* #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
- self::expect(n0, let final self::Number* #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
- self::expect(n1, let final self::Number* #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
- self::expect(n0, let final self::Number* #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
- self::expect(n0, let final self::Number* #t15 = self::ClassExtension|get#property(#this) in let final self::Number* #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
- self::expect(n1, let final self::Number* #t17 = self::ClassExtension|get#property(#this) in let final self::Number* #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
+ self::expect(n1, let final self::Number #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
+ self::expect(n2, let final self::Number #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
+ self::expect(n0, let final self::Number #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
+ self::expect(n1, let final self::Number #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
+ self::expect(n0, let final self::Number #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
+ self::expect(n1, let final self::Number #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
+ self::expect(n0, let final self::Number #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
+ self::expect(n0, let final self::Number #t15 = self::ClassExtension|get#property(#this) in let final self::Number #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
+ self::expect(n1, let final self::Number #t17 = self::ClassExtension|get#property(#this) in let final self::Number #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), n1));
@@ -124,58 +97,58 @@
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), n1));
self::expect(n0, self::ClassExtension|get#property(#this));
- let final self::Number* #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
+ let final self::Number #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
self::expect(n1, self::ClassExtension|get#property(#this));
- let final self::Number* #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
+ let final self::Number #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), 1));
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), 1));
self::expect(n0, self::ClassExtension|get#property(#this));
}
-static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
+static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
-static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
- return #this.{self::IntClass::field}{core::int*};
-static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
+static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
+ return #this.{self::IntClass::field}{core::int};
+static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void {
#this.{self::IntClass::field} = value;
}
-static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
+static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic {
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
- self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
- self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
- self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
- self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
- self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
- self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
- self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
- self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
+ self::expect(n1, let final core::int #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
+ self::expect(n2, let final core::int #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
+ self::expect(n0, let final core::int #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
+ self::expect(n1, let final core::int #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
+ self::expect(n0, let final core::int #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
+ self::expect(n1, let final core::int #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
+ self::expect(n0, let final core::int #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
+ self::expect(n0, let final core::int #t37 = self::IntClassExtension|get#property(#this) in let final core::int #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num) → core::int}) in #t37);
+ self::expect(n1, let final core::int #t39 = self::IntClassExtension|get#property(#this) in let final core::int #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num) → core::int}) in #t39);
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
- let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
+ let final core::int #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
self::expect(n1, self::IntClassExtension|get#property(#this));
- let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
+ let final core::int #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
}
-static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
+static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic {
self::testLocals();
@@ -191,10 +164,10 @@
self::IntClassExtension|testImplicitProperties(new self::IntClass::•(0));
}
static method testLocals() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Number* v = n0;
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Number v = n0;
self::expect(n0, v);
self::expect(n1, v = self::NumberExtension|+(v, n1));
self::expect(n2, v = self::NumberExtension|+(v, n1));
@@ -203,8 +176,8 @@
self::expect(n0, v = self::NumberExtension|-(v, n1));
self::expect(n1, v = self::NumberExtension|+(v, 1));
self::expect(n0, v = self::NumberExtension|-(v, 1));
- self::expect(n0, let final self::Number* #t45 = v in let final self::Number* #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
- self::expect(n1, let final self::Number* #t47 = v in let final self::Number* #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
+ self::expect(n0, let final self::Number #t45 = v in let final self::Number #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
+ self::expect(n1, let final self::Number #t47 = v in let final self::Number #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, v);
self::expect(n0, v);
v = self::NumberExtension|+(v, n1);
@@ -227,284 +200,284 @@
self::expect(n0, v);
}
static method testProperties() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Class* v = new self::Class::•(n0);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
- self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
- self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
- self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
- self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
- self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
- self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
- self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
- self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
- self::expect(n2, v.{self::Class::field}{self::Number*});
- let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Class v = new self::Class::•(n0);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ self::expect(n1, let final self::Class #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number}, n1));
+ self::expect(n2, let final self::Class #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number}, n1));
+ self::expect(n0, let final self::Class #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number}, n2));
+ self::expect(n1, let final self::Class #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number}, n1));
+ self::expect(n0, let final self::Class #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number}, n1));
+ self::expect(n1, let final self::Class #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number}, 1));
+ self::expect(n0, let final self::Class #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number}, 1));
+ self::expect(n0, let final self::Class #t56 = v in let final self::Number #t57 = #t56.{self::Class::field}{self::Number} in let final self::Number #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
+ self::expect(n1, let final self::Class #t59 = v in let final self::Number #t60 = #t59.{self::Class::field}{self::Number} in let final self::Number #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number}, n1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number}, n1);
+ self::expect(n2, v.{self::Class::field}{self::Number});
+ let final self::Class #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number}, n2);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number}, n1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number}, n1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number}, 1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number}, 1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number}, 1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number}, 1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, self::ClassExtension|get#property(v));
- self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
- self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
- self::expect(n0, let final self::Class* #t77 = v in let final self::Number* #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
- self::expect(n1, let final self::Class* #t80 = v in let final self::Number* #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
- self::expect(n0, let final self::Class* #t83 = v in let final self::Number* #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
- self::expect(n1, let final self::Class* #t86 = v in let final self::Number* #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
- self::expect(n0, let final self::Class* #t89 = v in let final self::Number* #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
- self::expect(n0, let final self::Class* #t92 = v in let final self::Number* #t93 = self::ClassExtension|get#property(#t92) in let final self::Number* #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
- self::expect(n1, let final self::Class* #t95 = v in let final self::Number* #t96 = self::ClassExtension|get#property(#t95) in let final self::Number* #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
+ self::expect(n1, let final self::Class #t71 = v in let final self::Number #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
+ self::expect(n2, let final self::Class #t74 = v in let final self::Number #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
+ self::expect(n0, let final self::Class #t77 = v in let final self::Number #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
+ self::expect(n1, let final self::Class #t80 = v in let final self::Number #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
+ self::expect(n0, let final self::Class #t83 = v in let final self::Number #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
+ self::expect(n1, let final self::Class #t86 = v in let final self::Number #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
+ self::expect(n0, let final self::Class #t89 = v in let final self::Number #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
+ self::expect(n0, let final self::Class #t92 = v in let final self::Number #t93 = self::ClassExtension|get#property(#t92) in let final self::Number #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
+ self::expect(n1, let final self::Class #t95 = v in let final self::Number #t96 = self::ClassExtension|get#property(#t95) in let final self::Number #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
+ let final self::Class #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
+ let final self::Class #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
self::expect(n2, self::ClassExtension|get#property(v));
- let final self::Class* #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
+ let final self::Class #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
+ let final self::Class #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
+ let final self::Class #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t103 = v in let final self::Number* #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
+ let final self::Class #t103 = v in let final self::Number #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t106 = v in let final self::Number* #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
+ let final self::Class #t106 = v in let final self::Number #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
+ let final self::Class #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
+ let final self::Class #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testIntProperties() → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::IntClass* v = new self::IntClass::•(n0);
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
- self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n2, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::IntClass v = new self::IntClass::•(n0);
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ self::expect(n1, let final self::IntClass #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n2, let final self::IntClass #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t118 = v in let final core::int #t119 = #t118.{self::IntClass::field}{core::int} in let final core::int #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num) → core::int} in #t119);
+ self::expect(n1, let final self::IntClass #t121 = v in let final core::int #t122 = #t121.{self::IntClass::field}{core::int} in let final core::int #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num) → core::int} in #t122);
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n2, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
- self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
- self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
- self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
- self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
- self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
- self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
- self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
- self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
+ self::expect(n1, let final self::IntClass #t133 = v in let final core::int #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num) → core::int} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
+ self::expect(n2, let final self::IntClass #t136 = v in let final core::int #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num) → core::int} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
+ self::expect(n0, let final self::IntClass #t139 = v in let final core::int #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num) → core::int} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
+ self::expect(n1, let final self::IntClass #t142 = v in let final core::int #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num) → core::int} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
+ self::expect(n0, let final self::IntClass #t145 = v in let final core::int #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num) → core::int} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
+ self::expect(n1, let final self::IntClass #t148 = v in let final core::int #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num) → core::int} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
+ self::expect(n0, let final self::IntClass #t151 = v in let final core::int #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num) → core::int} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
+ self::expect(n0, let final self::IntClass #t154 = v in let final core::int #t155 = self::IntClassExtension|get#property(#t154) in let final core::int #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num) → core::int}) in #t155);
+ self::expect(n1, let final self::IntClass #t157 = v in let final core::int #t158 = self::IntClassExtension|get#property(#t157) in let final core::int #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num) → core::int}) in #t158);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
+ let final self::IntClass #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
+ let final self::IntClass #t165 = v in let final core::int #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num) → core::int} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
+ let final self::IntClass #t168 = v in let final core::int #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num) → core::int} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitProperties() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Class* v = new self::Class::•(n0);
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Class v = new self::Class::•(n0);
self::expect(n0, self::ClassExtension|get#property(v));
- self::expect(n1, let final self::Class* #t173 = v in let final self::Number* #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
- self::expect(n2, let final self::Class* #t176 = v in let final self::Number* #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
- self::expect(n0, let final self::Class* #t179 = v in let final self::Number* #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
- self::expect(n1, let final self::Class* #t182 = v in let final self::Number* #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
- self::expect(n0, let final self::Class* #t185 = v in let final self::Number* #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
- self::expect(n1, let final self::Class* #t188 = v in let final self::Number* #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
- self::expect(n0, let final self::Class* #t191 = v in let final self::Number* #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
- self::expect(n0, let final self::Class* #t194 = v in let final self::Number* #t195 = self::ClassExtension|get#property(#t194) in let final self::Number* #t196 = let final self::Number* #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
- self::expect(n1, let final self::Class* #t199 = v in let final self::Number* #t200 = self::ClassExtension|get#property(#t199) in let final self::Number* #t201 = let final self::Number* #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
+ self::expect(n1, let final self::Class #t173 = v in let final self::Number #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
+ self::expect(n2, let final self::Class #t176 = v in let final self::Number #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
+ self::expect(n0, let final self::Class #t179 = v in let final self::Number #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
+ self::expect(n1, let final self::Class #t182 = v in let final self::Number #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
+ self::expect(n0, let final self::Class #t185 = v in let final self::Number #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
+ self::expect(n1, let final self::Class #t188 = v in let final self::Number #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
+ self::expect(n0, let final self::Class #t191 = v in let final self::Number #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
+ self::expect(n0, let final self::Class #t194 = v in let final self::Number #t195 = self::ClassExtension|get#property(#t194) in let final self::Number #t196 = let final self::Number #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
+ self::expect(n1, let final self::Class #t199 = v in let final self::Number #t200 = self::ClassExtension|get#property(#t199) in let final self::Number #t201 = let final self::Number #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
+ let final self::Class #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
+ let final self::Class #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
self::expect(n2, self::ClassExtension|get#property(v));
- let final self::Class* #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
+ let final self::Class #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
+ let final self::Class #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
+ let final self::Class #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t209 = v in let final self::Number* #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
+ let final self::Class #t209 = v in let final self::Number #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t212 = v in let final self::Number* #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
+ let final self::Class #t212 = v in let final self::Number #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
+ let final self::Class #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
+ let final self::Class #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testExplicitIntProperties() → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::IntClass* v = new self::IntClass::•(n0);
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, self::IntClassExtension|get#property(v));
- self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
- self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
- self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
- self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
- self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
- self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
- self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
- self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
- self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
+ self::expect(n1, let final self::IntClass #t217 = v in let final core::int #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num) → core::int} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
+ self::expect(n2, let final self::IntClass #t220 = v in let final core::int #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num) → core::int} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
+ self::expect(n0, let final self::IntClass #t223 = v in let final core::int #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num) → core::int} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
+ self::expect(n1, let final self::IntClass #t226 = v in let final core::int #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num) → core::int} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
+ self::expect(n0, let final self::IntClass #t229 = v in let final core::int #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num) → core::int} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
+ self::expect(n1, let final self::IntClass #t232 = v in let final core::int #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num) → core::int} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
+ self::expect(n0, let final self::IntClass #t235 = v in let final core::int #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num) → core::int} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
+ self::expect(n0, let final self::IntClass #t238 = v in let final core::int #t239 = self::IntClassExtension|get#property(#t238) in let final core::int #t240 = let final core::int #t241 = #t239.{core::num::+}(1){(core::num) → core::int} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
+ self::expect(n1, let final self::IntClass #t243 = v in let final core::int #t244 = self::IntClassExtension|get#property(#t243) in let final core::int #t245 = let final core::int #t246 = #t244.{core::num::-}(1){(core::num) → core::int} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
+ let final self::IntClass #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
+ let final self::IntClass #t253 = v in let final core::int #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num) → core::int} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
+ let final self::IntClass #t256 = v in let final core::int #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num) → core::int} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
-static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
- self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
- self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
- self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
- self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
- self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
- self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
- self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
- self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
- self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
- self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
- self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
- let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
- self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
- let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
- self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
- let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
- self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
- let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
- self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
- let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
- self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
- let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
- self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
- let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
- self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
- let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
- self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
- let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
- self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
+static method testExplicitNullAwareProperties(self::Class? v) → dynamic {
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::expect(n0, let final self::Class? #t261 = v in #t261 == null ?{self::Number?} null : self::ClassExtension|get#property(#t261{self::Class}), v == null);
+ self::expect(n1, let final self::Class? #t262 = v in #t262 == null ?{self::Number?} null : let final self::Number #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262{self::Class}), n1) in let final void #t264 = self::ClassExtension|set#property(#t262{self::Class}, #t263) in #t263, v == null);
+ self::expect(n2, let final self::Class? #t265 = v in #t265 == null ?{self::Number?} null : let final self::Number #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265{self::Class}), n1) in let final void #t267 = self::ClassExtension|set#property(#t265{self::Class}, #t266) in #t266, v == null);
+ self::expect(n0, let final self::Class? #t268 = v in #t268 == null ?{self::Number?} null : let final self::Number #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268{self::Class}), n2) in let final void #t270 = self::ClassExtension|set#property(#t268{self::Class}, #t269) in #t269, v == null);
+ self::expect(n1, let final self::Class? #t271 = v in #t271 == null ?{self::Number?} null : let final self::Number #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271{self::Class}), n1) in let final void #t273 = self::ClassExtension|set#property(#t271{self::Class}, #t272) in #t272, v == null);
+ self::expect(n0, let final self::Class? #t274 = v in #t274 == null ?{self::Number?} null : let final self::Number #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274{self::Class}), n1) in let final void #t276 = self::ClassExtension|set#property(#t274{self::Class}, #t275) in #t275, v == null);
+ self::expect(n1, let final self::Class? #t277 = v in #t277 == null ?{self::Number?} null : let final self::Number #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277{self::Class}), 1) in let final void #t279 = self::ClassExtension|set#property(#t277{self::Class}, #t278) in #t278, v == null);
+ self::expect(n0, let final self::Class? #t280 = v in #t280 == null ?{self::Number?} null : let final self::Number #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280{self::Class}), 1) in let final void #t282 = self::ClassExtension|set#property(#t280{self::Class}, #t281) in #t281, v == null);
+ self::expect(n0, let final self::Class? #t283 = v in #t283 == null ?{self::Number?} null : let final self::Number #t284 = self::ClassExtension|get#property(#t283{self::Class}) in let final self::Number #t285 = let final self::Number #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283{self::Class}, #t286) in #t286 in #t284, v == null);
+ self::expect(n1, let final self::Class? #t288 = v in #t288 == null ?{self::Number?} null : let final self::Number #t289 = self::ClassExtension|get#property(#t288{self::Class}) in let final self::Number #t290 = let final self::Number #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288{self::Class}, #t291) in #t291 in #t289, v == null);
+ self::expect(n0, let final self::Class? #t293 = v in #t293 == null ?{self::Number?} null : self::ClassExtension|get#property(#t293{self::Class}), v == null);
+ self::expect(n0, let final self::Class? #t294 = v in #t294 == null ?{self::Number?} null : self::ClassExtension|get#property(#t294{self::Class}), v == null);
+ let final self::Class? #t295 = v in #t295 == null ?{self::Number?} null : self::ClassExtension|set#property(#t295{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t295{self::Class}), n1));
+ self::expect(n1, let final self::Class? #t296 = v in #t296 == null ?{self::Number?} null : self::ClassExtension|get#property(#t296{self::Class}), v == null);
+ let final self::Class? #t297 = v in #t297 == null ?{self::Number?} null : self::ClassExtension|set#property(#t297{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t297{self::Class}), n1));
+ self::expect(n2, let final self::Class? #t298 = v in #t298 == null ?{self::Number?} null : self::ClassExtension|get#property(#t298{self::Class}), v == null);
+ let final self::Class? #t299 = v in #t299 == null ?{self::Number?} null : self::ClassExtension|set#property(#t299{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t299{self::Class}), n2));
+ self::expect(n0, let final self::Class? #t300 = v in #t300 == null ?{self::Number?} null : self::ClassExtension|get#property(#t300{self::Class}), v == null);
+ let final self::Class? #t301 = v in #t301 == null ?{self::Number?} null : self::ClassExtension|set#property(#t301{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t301{self::Class}), n1));
+ self::expect(n1, let final self::Class? #t302 = v in #t302 == null ?{self::Number?} null : self::ClassExtension|get#property(#t302{self::Class}), v == null);
+ let final self::Class? #t303 = v in #t303 == null ?{self::Number?} null : self::ClassExtension|set#property(#t303{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t303{self::Class}), n1));
+ self::expect(n0, let final self::Class? #t304 = v in #t304 == null ?{self::Number?} null : self::ClassExtension|get#property(#t304{self::Class}), v == null);
+ let final self::Class? #t305 = v in #t305 == null ?{self::Number?} null : let final self::Number #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305{self::Class}), 1) in let final void #t307 = self::ClassExtension|set#property(#t305{self::Class}, #t306) in #t306;
+ self::expect(n1, let final self::Class? #t308 = v in #t308 == null ?{self::Number?} null : self::ClassExtension|get#property(#t308{self::Class}), v == null);
+ let final self::Class? #t309 = v in #t309 == null ?{self::Number?} null : let final self::Number #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309{self::Class}), 1) in let final void #t311 = self::ClassExtension|set#property(#t309{self::Class}, #t310) in #t310;
+ self::expect(n0, let final self::Class? #t312 = v in #t312 == null ?{self::Number?} null : self::ClassExtension|get#property(#t312{self::Class}), v == null);
+ let final self::Class? #t313 = v in #t313 == null ?{self::Number?} null : self::ClassExtension|set#property(#t313{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t313{self::Class}), 1));
+ self::expect(n1, let final self::Class? #t314 = v in #t314 == null ?{self::Number?} null : self::ClassExtension|get#property(#t314{self::Class}), v == null);
+ let final self::Class? #t315 = v in #t315 == null ?{self::Number?} null : self::ClassExtension|set#property(#t315{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t315{self::Class}), 1));
+ self::expect(n0, let final self::Class? #t316 = v in #t316 == null ?{self::Number?} null : self::ClassExtension|get#property(#t316{self::Class}), v == null);
}
-static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
- self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
- self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
- self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
- self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
- self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
- self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
- self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
- self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
- self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
- self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
- self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
- let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
- let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
- let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
- let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
- let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
- let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
- self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
- let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
- self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
- let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
- let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
+static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic {
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::expect(n0, let final self::IntClass? #t317 = v in #t317 == null ?{core::int?} null : self::IntClassExtension|get#property(#t317{self::IntClass}), v == null);
+ self::expect(n1, let final self::IntClass? #t318 = v in #t318 == null ?{core::int?} null : let final core::int #t319 = self::IntClassExtension|get#property(#t318{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t320 = self::IntClassExtension|set#property(#t318{self::IntClass}, #t319) in #t319, v == null);
+ self::expect(n2, let final self::IntClass? #t321 = v in #t321 == null ?{core::int?} null : let final core::int #t322 = self::IntClassExtension|get#property(#t321{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t323 = self::IntClassExtension|set#property(#t321{self::IntClass}, #t322) in #t322, v == null);
+ self::expect(n0, let final self::IntClass? #t324 = v in #t324 == null ?{core::int?} null : let final core::int #t325 = self::IntClassExtension|get#property(#t324{self::IntClass}).{core::num::-}(n2){(core::num) → core::int} in let final void #t326 = self::IntClassExtension|set#property(#t324{self::IntClass}, #t325) in #t325, v == null);
+ self::expect(n1, let final self::IntClass? #t327 = v in #t327 == null ?{core::int?} null : let final core::int #t328 = self::IntClassExtension|get#property(#t327{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t329 = self::IntClassExtension|set#property(#t327{self::IntClass}, #t328) in #t328, v == null);
+ self::expect(n0, let final self::IntClass? #t330 = v in #t330 == null ?{core::int?} null : let final core::int #t331 = self::IntClassExtension|get#property(#t330{self::IntClass}).{core::num::-}(n1){(core::num) → core::int} in let final void #t332 = self::IntClassExtension|set#property(#t330{self::IntClass}, #t331) in #t331, v == null);
+ self::expect(n1, let final self::IntClass? #t333 = v in #t333 == null ?{core::int?} null : let final core::int #t334 = self::IntClassExtension|get#property(#t333{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t335 = self::IntClassExtension|set#property(#t333{self::IntClass}, #t334) in #t334, v == null);
+ self::expect(n0, let final self::IntClass? #t336 = v in #t336 == null ?{core::int?} null : let final core::int #t337 = self::IntClassExtension|get#property(#t336{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t338 = self::IntClassExtension|set#property(#t336{self::IntClass}, #t337) in #t337, v == null);
+ self::expect(n0, let final self::IntClass? #t339 = v in #t339 == null ?{core::int?} null : let final core::int #t340 = self::IntClassExtension|get#property(#t339{self::IntClass}) in let final core::int #t341 = let final core::int #t342 = #t340.{core::num::+}(1){(core::num) → core::int} in let final void #t343 = self::IntClassExtension|set#property(#t339{self::IntClass}, #t342) in #t342 in #t340, v == null);
+ self::expect(n1, let final self::IntClass? #t344 = v in #t344 == null ?{core::int?} null : let final core::int #t345 = self::IntClassExtension|get#property(#t344{self::IntClass}) in let final core::int #t346 = let final core::int #t347 = #t345.{core::num::-}(1){(core::num) → core::int} in let final void #t348 = self::IntClassExtension|set#property(#t344{self::IntClass}, #t347) in #t347 in #t345, v == null);
+ self::expect(n0, let final self::IntClass? #t349 = v in #t349 == null ?{core::int?} null : self::IntClassExtension|get#property(#t349{self::IntClass}), v == null);
+ self::expect(n0, let final self::IntClass? #t350 = v in #t350 == null ?{core::int?} null : self::IntClassExtension|get#property(#t350{self::IntClass}), v == null);
+ let final self::IntClass? #t351 = v in #t351 == null ?{core::int?} null : self::IntClassExtension|set#property(#t351{self::IntClass}, self::IntClassExtension|get#property(#t351{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t352 = v in #t352 == null ?{core::int?} null : self::IntClassExtension|get#property(#t352{self::IntClass}), v == null);
+ let final self::IntClass? #t353 = v in #t353 == null ?{core::int?} null : self::IntClassExtension|set#property(#t353{self::IntClass}, self::IntClassExtension|get#property(#t353{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n2, let final self::IntClass? #t354 = v in #t354 == null ?{core::int?} null : self::IntClassExtension|get#property(#t354{self::IntClass}), v == null);
+ let final self::IntClass? #t355 = v in #t355 == null ?{core::int?} null : self::IntClassExtension|set#property(#t355{self::IntClass}, self::IntClassExtension|get#property(#t355{self::IntClass}).{core::num::-}(n2){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t356 = v in #t356 == null ?{core::int?} null : self::IntClassExtension|get#property(#t356{self::IntClass}), v == null);
+ let final self::IntClass? #t357 = v in #t357 == null ?{core::int?} null : self::IntClassExtension|set#property(#t357{self::IntClass}, self::IntClassExtension|get#property(#t357{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t358 = v in #t358 == null ?{core::int?} null : self::IntClassExtension|get#property(#t358{self::IntClass}), v == null);
+ let final self::IntClass? #t359 = v in #t359 == null ?{core::int?} null : self::IntClassExtension|set#property(#t359{self::IntClass}, self::IntClassExtension|get#property(#t359{self::IntClass}).{core::num::-}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t360 = v in #t360 == null ?{core::int?} null : self::IntClassExtension|get#property(#t360{self::IntClass}), v == null);
+ let final self::IntClass? #t361 = v in #t361 == null ?{core::int?} null : let final core::int #t362 = self::IntClassExtension|get#property(#t361{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t363 = self::IntClassExtension|set#property(#t361{self::IntClass}, #t362) in #t362;
+ self::expect(n1, let final self::IntClass? #t364 = v in #t364 == null ?{core::int?} null : self::IntClassExtension|get#property(#t364{self::IntClass}), v == null);
+ let final self::IntClass? #t365 = v in #t365 == null ?{core::int?} null : let final core::int #t366 = self::IntClassExtension|get#property(#t365{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t367 = self::IntClassExtension|set#property(#t365{self::IntClass}, #t366) in #t366;
+ self::expect(n0, let final self::IntClass? #t368 = v in #t368 == null ?{core::int?} null : self::IntClassExtension|get#property(#t368{self::IntClass}), v == null);
+ let final self::IntClass? #t369 = v in #t369 == null ?{core::int?} null : self::IntClassExtension|set#property(#t369{self::IntClass}, self::IntClassExtension|get#property(#t369{self::IntClass}).{core::num::+}(1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t370 = v in #t370 == null ?{core::int?} null : self::IntClassExtension|get#property(#t370{self::IntClass}), v == null);
+ let final self::IntClass? #t371 = v in #t371 == null ?{core::int?} null : self::IntClassExtension|set#property(#t371{self::IntClass}, self::IntClassExtension|get#property(#t371{self::IntClass}).{core::num::-}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t372 = v in #t372 == null ?{core::int?} null : self::IntClassExtension|get#property(#t372{self::IntClass}), v == null);
}
static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
- if(expectNull as{TypeError,ForDynamic} core::bool*) {
+ if(expectNull as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool) {
expected = null;
}
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/compounds.dart.weak.modular.expect
index ccd5bd4..d1424bc 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.weak.modular.expect
@@ -1,117 +1,90 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
- final field core::int* value;
- constructor •(core::int* value) → self::Number*
+ final field core::int value;
+ constructor •(core::int value) → self::Number
: self::Number::value = value, super core::Object::•()
;
- get hashCode() → core::int*
- return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
- operator ==(core::Object* other) → core::bool*
- return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
- method toString() → core::String*
- return "Number(${this.{self::Number::value}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ get hashCode() → core::int
+ return this.{self::Number::value}{core::int}.{core::num::hashCode}{core::int};
+ operator ==(core::Object other) → core::bool
+ return other is{ForNonNullableByDefault} self::Number && this.{self::Number::value}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Number}.{self::Number::value}{core::int};
+ method toString() → core::String
+ return "Number(${this.{self::Number::value}{core::int}})";
}
class Class extends core::Object {
- field self::Number* field;
- constructor •(self::Number* field) → self::Class*
+ field self::Number field;
+ constructor •(self::Number field) → self::Class
: self::Class::field = field, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::IntClass*
+ field core::int field;
+ constructor •(core::int field) → self::IntClass
: self::IntClass::field = field, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension NumberExtension on self::Number* {
+extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
-extension IntClassExtension on self::IntClass* {
+extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
-static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
- if(other is core::int*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
+static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number {
+ if(other is{ForNonNullableByDefault} core::int) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{core::int}){(core::num) → core::int});
}
else
- if(other is self::Number*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+ if(other is{ForNonNullableByDefault} self::Number) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
-static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
- if(other is core::int*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
+static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number {
+ if(other is{ForNonNullableByDefault} core::int) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{core::int}){(core::num) → core::int});
}
else
- if(other is self::Number*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+ if(other is{ForNonNullableByDefault} self::Number) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
-static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
- return #this.{self::Class::field}{self::Number*};
-static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
+static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
+ return #this.{self::Class::field}{self::Number};
+static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void {
#this.{self::Class::field} = value;
}
-static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
+static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic {
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
self::expect(n0, self::ClassExtension|get#property(#this));
- self::expect(n1, let final self::Number* #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
- self::expect(n2, let final self::Number* #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
- self::expect(n0, let final self::Number* #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
- self::expect(n1, let final self::Number* #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
- self::expect(n0, let final self::Number* #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
- self::expect(n1, let final self::Number* #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
- self::expect(n0, let final self::Number* #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
- self::expect(n0, let final self::Number* #t15 = self::ClassExtension|get#property(#this) in let final self::Number* #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
- self::expect(n1, let final self::Number* #t17 = self::ClassExtension|get#property(#this) in let final self::Number* #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
+ self::expect(n1, let final self::Number #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
+ self::expect(n2, let final self::Number #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
+ self::expect(n0, let final self::Number #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
+ self::expect(n1, let final self::Number #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
+ self::expect(n0, let final self::Number #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
+ self::expect(n1, let final self::Number #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
+ self::expect(n0, let final self::Number #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
+ self::expect(n0, let final self::Number #t15 = self::ClassExtension|get#property(#this) in let final self::Number #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
+ self::expect(n1, let final self::Number #t17 = self::ClassExtension|get#property(#this) in let final self::Number #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), n1));
@@ -124,58 +97,58 @@
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), n1));
self::expect(n0, self::ClassExtension|get#property(#this));
- let final self::Number* #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
+ let final self::Number #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
self::expect(n1, self::ClassExtension|get#property(#this));
- let final self::Number* #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
+ let final self::Number #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), 1));
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), 1));
self::expect(n0, self::ClassExtension|get#property(#this));
}
-static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
+static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
-static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
- return #this.{self::IntClass::field}{core::int*};
-static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
+static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
+ return #this.{self::IntClass::field}{core::int};
+static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void {
#this.{self::IntClass::field} = value;
}
-static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
+static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic {
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
- self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
- self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
- self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
- self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
- self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
- self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
- self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
- self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
+ self::expect(n1, let final core::int #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
+ self::expect(n2, let final core::int #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
+ self::expect(n0, let final core::int #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
+ self::expect(n1, let final core::int #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
+ self::expect(n0, let final core::int #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
+ self::expect(n1, let final core::int #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
+ self::expect(n0, let final core::int #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
+ self::expect(n0, let final core::int #t37 = self::IntClassExtension|get#property(#this) in let final core::int #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num) → core::int}) in #t37);
+ self::expect(n1, let final core::int #t39 = self::IntClassExtension|get#property(#this) in let final core::int #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num) → core::int}) in #t39);
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
- let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
+ let final core::int #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
self::expect(n1, self::IntClassExtension|get#property(#this));
- let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
+ let final core::int #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
}
-static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
+static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic {
self::testLocals();
@@ -191,10 +164,10 @@
self::IntClassExtension|testImplicitProperties(new self::IntClass::•(0));
}
static method testLocals() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Number* v = n0;
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Number v = n0;
self::expect(n0, v);
self::expect(n1, v = self::NumberExtension|+(v, n1));
self::expect(n2, v = self::NumberExtension|+(v, n1));
@@ -203,8 +176,8 @@
self::expect(n0, v = self::NumberExtension|-(v, n1));
self::expect(n1, v = self::NumberExtension|+(v, 1));
self::expect(n0, v = self::NumberExtension|-(v, 1));
- self::expect(n0, let final self::Number* #t45 = v in let final self::Number* #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
- self::expect(n1, let final self::Number* #t47 = v in let final self::Number* #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
+ self::expect(n0, let final self::Number #t45 = v in let final self::Number #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
+ self::expect(n1, let final self::Number #t47 = v in let final self::Number #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, v);
self::expect(n0, v);
v = self::NumberExtension|+(v, n1);
@@ -227,284 +200,284 @@
self::expect(n0, v);
}
static method testProperties() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Class* v = new self::Class::•(n0);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
- self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
- self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
- self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
- self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
- self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
- self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
- self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
- self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
- self::expect(n2, v.{self::Class::field}{self::Number*});
- let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Class v = new self::Class::•(n0);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ self::expect(n1, let final self::Class #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number}, n1));
+ self::expect(n2, let final self::Class #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number}, n1));
+ self::expect(n0, let final self::Class #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number}, n2));
+ self::expect(n1, let final self::Class #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number}, n1));
+ self::expect(n0, let final self::Class #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number}, n1));
+ self::expect(n1, let final self::Class #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number}, 1));
+ self::expect(n0, let final self::Class #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number}, 1));
+ self::expect(n0, let final self::Class #t56 = v in let final self::Number #t57 = #t56.{self::Class::field}{self::Number} in let final self::Number #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
+ self::expect(n1, let final self::Class #t59 = v in let final self::Number #t60 = #t59.{self::Class::field}{self::Number} in let final self::Number #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number}, n1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number}, n1);
+ self::expect(n2, v.{self::Class::field}{self::Number});
+ let final self::Class #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number}, n2);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number}, n1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number}, n1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number}, 1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number}, 1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number}, 1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number}, 1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, self::ClassExtension|get#property(v));
- self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
- self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
- self::expect(n0, let final self::Class* #t77 = v in let final self::Number* #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
- self::expect(n1, let final self::Class* #t80 = v in let final self::Number* #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
- self::expect(n0, let final self::Class* #t83 = v in let final self::Number* #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
- self::expect(n1, let final self::Class* #t86 = v in let final self::Number* #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
- self::expect(n0, let final self::Class* #t89 = v in let final self::Number* #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
- self::expect(n0, let final self::Class* #t92 = v in let final self::Number* #t93 = self::ClassExtension|get#property(#t92) in let final self::Number* #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
- self::expect(n1, let final self::Class* #t95 = v in let final self::Number* #t96 = self::ClassExtension|get#property(#t95) in let final self::Number* #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
+ self::expect(n1, let final self::Class #t71 = v in let final self::Number #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
+ self::expect(n2, let final self::Class #t74 = v in let final self::Number #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
+ self::expect(n0, let final self::Class #t77 = v in let final self::Number #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
+ self::expect(n1, let final self::Class #t80 = v in let final self::Number #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
+ self::expect(n0, let final self::Class #t83 = v in let final self::Number #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
+ self::expect(n1, let final self::Class #t86 = v in let final self::Number #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
+ self::expect(n0, let final self::Class #t89 = v in let final self::Number #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
+ self::expect(n0, let final self::Class #t92 = v in let final self::Number #t93 = self::ClassExtension|get#property(#t92) in let final self::Number #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
+ self::expect(n1, let final self::Class #t95 = v in let final self::Number #t96 = self::ClassExtension|get#property(#t95) in let final self::Number #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
+ let final self::Class #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
+ let final self::Class #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
self::expect(n2, self::ClassExtension|get#property(v));
- let final self::Class* #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
+ let final self::Class #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
+ let final self::Class #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
+ let final self::Class #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t103 = v in let final self::Number* #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
+ let final self::Class #t103 = v in let final self::Number #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t106 = v in let final self::Number* #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
+ let final self::Class #t106 = v in let final self::Number #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
+ let final self::Class #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
+ let final self::Class #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testIntProperties() → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::IntClass* v = new self::IntClass::•(n0);
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
- self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n2, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::IntClass v = new self::IntClass::•(n0);
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ self::expect(n1, let final self::IntClass #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n2, let final self::IntClass #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t118 = v in let final core::int #t119 = #t118.{self::IntClass::field}{core::int} in let final core::int #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num) → core::int} in #t119);
+ self::expect(n1, let final self::IntClass #t121 = v in let final core::int #t122 = #t121.{self::IntClass::field}{core::int} in let final core::int #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num) → core::int} in #t122);
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n2, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
- self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
- self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
- self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
- self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
- self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
- self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
- self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
- self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
+ self::expect(n1, let final self::IntClass #t133 = v in let final core::int #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num) → core::int} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
+ self::expect(n2, let final self::IntClass #t136 = v in let final core::int #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num) → core::int} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
+ self::expect(n0, let final self::IntClass #t139 = v in let final core::int #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num) → core::int} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
+ self::expect(n1, let final self::IntClass #t142 = v in let final core::int #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num) → core::int} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
+ self::expect(n0, let final self::IntClass #t145 = v in let final core::int #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num) → core::int} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
+ self::expect(n1, let final self::IntClass #t148 = v in let final core::int #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num) → core::int} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
+ self::expect(n0, let final self::IntClass #t151 = v in let final core::int #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num) → core::int} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
+ self::expect(n0, let final self::IntClass #t154 = v in let final core::int #t155 = self::IntClassExtension|get#property(#t154) in let final core::int #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num) → core::int}) in #t155);
+ self::expect(n1, let final self::IntClass #t157 = v in let final core::int #t158 = self::IntClassExtension|get#property(#t157) in let final core::int #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num) → core::int}) in #t158);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
+ let final self::IntClass #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
+ let final self::IntClass #t165 = v in let final core::int #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num) → core::int} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
+ let final self::IntClass #t168 = v in let final core::int #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num) → core::int} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitProperties() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Class* v = new self::Class::•(n0);
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Class v = new self::Class::•(n0);
self::expect(n0, self::ClassExtension|get#property(v));
- self::expect(n1, let final self::Class* #t173 = v in let final self::Number* #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
- self::expect(n2, let final self::Class* #t176 = v in let final self::Number* #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
- self::expect(n0, let final self::Class* #t179 = v in let final self::Number* #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
- self::expect(n1, let final self::Class* #t182 = v in let final self::Number* #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
- self::expect(n0, let final self::Class* #t185 = v in let final self::Number* #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
- self::expect(n1, let final self::Class* #t188 = v in let final self::Number* #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
- self::expect(n0, let final self::Class* #t191 = v in let final self::Number* #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
- self::expect(n0, let final self::Class* #t194 = v in let final self::Number* #t195 = self::ClassExtension|get#property(#t194) in let final self::Number* #t196 = let final self::Number* #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
- self::expect(n1, let final self::Class* #t199 = v in let final self::Number* #t200 = self::ClassExtension|get#property(#t199) in let final self::Number* #t201 = let final self::Number* #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
+ self::expect(n1, let final self::Class #t173 = v in let final self::Number #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
+ self::expect(n2, let final self::Class #t176 = v in let final self::Number #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
+ self::expect(n0, let final self::Class #t179 = v in let final self::Number #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
+ self::expect(n1, let final self::Class #t182 = v in let final self::Number #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
+ self::expect(n0, let final self::Class #t185 = v in let final self::Number #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
+ self::expect(n1, let final self::Class #t188 = v in let final self::Number #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
+ self::expect(n0, let final self::Class #t191 = v in let final self::Number #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
+ self::expect(n0, let final self::Class #t194 = v in let final self::Number #t195 = self::ClassExtension|get#property(#t194) in let final self::Number #t196 = let final self::Number #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
+ self::expect(n1, let final self::Class #t199 = v in let final self::Number #t200 = self::ClassExtension|get#property(#t199) in let final self::Number #t201 = let final self::Number #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
+ let final self::Class #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
+ let final self::Class #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
self::expect(n2, self::ClassExtension|get#property(v));
- let final self::Class* #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
+ let final self::Class #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
+ let final self::Class #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
+ let final self::Class #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t209 = v in let final self::Number* #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
+ let final self::Class #t209 = v in let final self::Number #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t212 = v in let final self::Number* #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
+ let final self::Class #t212 = v in let final self::Number #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
+ let final self::Class #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
+ let final self::Class #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testExplicitIntProperties() → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::IntClass* v = new self::IntClass::•(n0);
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, self::IntClassExtension|get#property(v));
- self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
- self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
- self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
- self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
- self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
- self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
- self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
- self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
- self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
+ self::expect(n1, let final self::IntClass #t217 = v in let final core::int #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num) → core::int} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
+ self::expect(n2, let final self::IntClass #t220 = v in let final core::int #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num) → core::int} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
+ self::expect(n0, let final self::IntClass #t223 = v in let final core::int #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num) → core::int} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
+ self::expect(n1, let final self::IntClass #t226 = v in let final core::int #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num) → core::int} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
+ self::expect(n0, let final self::IntClass #t229 = v in let final core::int #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num) → core::int} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
+ self::expect(n1, let final self::IntClass #t232 = v in let final core::int #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num) → core::int} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
+ self::expect(n0, let final self::IntClass #t235 = v in let final core::int #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num) → core::int} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
+ self::expect(n0, let final self::IntClass #t238 = v in let final core::int #t239 = self::IntClassExtension|get#property(#t238) in let final core::int #t240 = let final core::int #t241 = #t239.{core::num::+}(1){(core::num) → core::int} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
+ self::expect(n1, let final self::IntClass #t243 = v in let final core::int #t244 = self::IntClassExtension|get#property(#t243) in let final core::int #t245 = let final core::int #t246 = #t244.{core::num::-}(1){(core::num) → core::int} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
+ let final self::IntClass #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
+ let final self::IntClass #t253 = v in let final core::int #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num) → core::int} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
+ let final self::IntClass #t256 = v in let final core::int #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num) → core::int} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
-static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
- self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
- self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
- self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
- self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
- self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
- self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
- self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
- self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
- self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
- self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
- self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
- let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
- self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
- let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
- self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
- let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
- self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
- let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
- self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
- let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
- self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
- let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
- self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
- let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
- self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
- let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
- self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
- let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
- self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
+static method testExplicitNullAwareProperties(self::Class? v) → dynamic {
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::expect(n0, let final self::Class? #t261 = v in #t261 == null ?{self::Number?} null : self::ClassExtension|get#property(#t261{self::Class}), v == null);
+ self::expect(n1, let final self::Class? #t262 = v in #t262 == null ?{self::Number?} null : let final self::Number #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262{self::Class}), n1) in let final void #t264 = self::ClassExtension|set#property(#t262{self::Class}, #t263) in #t263, v == null);
+ self::expect(n2, let final self::Class? #t265 = v in #t265 == null ?{self::Number?} null : let final self::Number #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265{self::Class}), n1) in let final void #t267 = self::ClassExtension|set#property(#t265{self::Class}, #t266) in #t266, v == null);
+ self::expect(n0, let final self::Class? #t268 = v in #t268 == null ?{self::Number?} null : let final self::Number #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268{self::Class}), n2) in let final void #t270 = self::ClassExtension|set#property(#t268{self::Class}, #t269) in #t269, v == null);
+ self::expect(n1, let final self::Class? #t271 = v in #t271 == null ?{self::Number?} null : let final self::Number #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271{self::Class}), n1) in let final void #t273 = self::ClassExtension|set#property(#t271{self::Class}, #t272) in #t272, v == null);
+ self::expect(n0, let final self::Class? #t274 = v in #t274 == null ?{self::Number?} null : let final self::Number #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274{self::Class}), n1) in let final void #t276 = self::ClassExtension|set#property(#t274{self::Class}, #t275) in #t275, v == null);
+ self::expect(n1, let final self::Class? #t277 = v in #t277 == null ?{self::Number?} null : let final self::Number #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277{self::Class}), 1) in let final void #t279 = self::ClassExtension|set#property(#t277{self::Class}, #t278) in #t278, v == null);
+ self::expect(n0, let final self::Class? #t280 = v in #t280 == null ?{self::Number?} null : let final self::Number #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280{self::Class}), 1) in let final void #t282 = self::ClassExtension|set#property(#t280{self::Class}, #t281) in #t281, v == null);
+ self::expect(n0, let final self::Class? #t283 = v in #t283 == null ?{self::Number?} null : let final self::Number #t284 = self::ClassExtension|get#property(#t283{self::Class}) in let final self::Number #t285 = let final self::Number #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283{self::Class}, #t286) in #t286 in #t284, v == null);
+ self::expect(n1, let final self::Class? #t288 = v in #t288 == null ?{self::Number?} null : let final self::Number #t289 = self::ClassExtension|get#property(#t288{self::Class}) in let final self::Number #t290 = let final self::Number #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288{self::Class}, #t291) in #t291 in #t289, v == null);
+ self::expect(n0, let final self::Class? #t293 = v in #t293 == null ?{self::Number?} null : self::ClassExtension|get#property(#t293{self::Class}), v == null);
+ self::expect(n0, let final self::Class? #t294 = v in #t294 == null ?{self::Number?} null : self::ClassExtension|get#property(#t294{self::Class}), v == null);
+ let final self::Class? #t295 = v in #t295 == null ?{self::Number?} null : self::ClassExtension|set#property(#t295{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t295{self::Class}), n1));
+ self::expect(n1, let final self::Class? #t296 = v in #t296 == null ?{self::Number?} null : self::ClassExtension|get#property(#t296{self::Class}), v == null);
+ let final self::Class? #t297 = v in #t297 == null ?{self::Number?} null : self::ClassExtension|set#property(#t297{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t297{self::Class}), n1));
+ self::expect(n2, let final self::Class? #t298 = v in #t298 == null ?{self::Number?} null : self::ClassExtension|get#property(#t298{self::Class}), v == null);
+ let final self::Class? #t299 = v in #t299 == null ?{self::Number?} null : self::ClassExtension|set#property(#t299{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t299{self::Class}), n2));
+ self::expect(n0, let final self::Class? #t300 = v in #t300 == null ?{self::Number?} null : self::ClassExtension|get#property(#t300{self::Class}), v == null);
+ let final self::Class? #t301 = v in #t301 == null ?{self::Number?} null : self::ClassExtension|set#property(#t301{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t301{self::Class}), n1));
+ self::expect(n1, let final self::Class? #t302 = v in #t302 == null ?{self::Number?} null : self::ClassExtension|get#property(#t302{self::Class}), v == null);
+ let final self::Class? #t303 = v in #t303 == null ?{self::Number?} null : self::ClassExtension|set#property(#t303{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t303{self::Class}), n1));
+ self::expect(n0, let final self::Class? #t304 = v in #t304 == null ?{self::Number?} null : self::ClassExtension|get#property(#t304{self::Class}), v == null);
+ let final self::Class? #t305 = v in #t305 == null ?{self::Number?} null : let final self::Number #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305{self::Class}), 1) in let final void #t307 = self::ClassExtension|set#property(#t305{self::Class}, #t306) in #t306;
+ self::expect(n1, let final self::Class? #t308 = v in #t308 == null ?{self::Number?} null : self::ClassExtension|get#property(#t308{self::Class}), v == null);
+ let final self::Class? #t309 = v in #t309 == null ?{self::Number?} null : let final self::Number #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309{self::Class}), 1) in let final void #t311 = self::ClassExtension|set#property(#t309{self::Class}, #t310) in #t310;
+ self::expect(n0, let final self::Class? #t312 = v in #t312 == null ?{self::Number?} null : self::ClassExtension|get#property(#t312{self::Class}), v == null);
+ let final self::Class? #t313 = v in #t313 == null ?{self::Number?} null : self::ClassExtension|set#property(#t313{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t313{self::Class}), 1));
+ self::expect(n1, let final self::Class? #t314 = v in #t314 == null ?{self::Number?} null : self::ClassExtension|get#property(#t314{self::Class}), v == null);
+ let final self::Class? #t315 = v in #t315 == null ?{self::Number?} null : self::ClassExtension|set#property(#t315{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t315{self::Class}), 1));
+ self::expect(n0, let final self::Class? #t316 = v in #t316 == null ?{self::Number?} null : self::ClassExtension|get#property(#t316{self::Class}), v == null);
}
-static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
- self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
- self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
- self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
- self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
- self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
- self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
- self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
- self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
- self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
- self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
- self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
- let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
- let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
- let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
- let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
- let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
- let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
- self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
- let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
- self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
- let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
- let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
+static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic {
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::expect(n0, let final self::IntClass? #t317 = v in #t317 == null ?{core::int?} null : self::IntClassExtension|get#property(#t317{self::IntClass}), v == null);
+ self::expect(n1, let final self::IntClass? #t318 = v in #t318 == null ?{core::int?} null : let final core::int #t319 = self::IntClassExtension|get#property(#t318{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t320 = self::IntClassExtension|set#property(#t318{self::IntClass}, #t319) in #t319, v == null);
+ self::expect(n2, let final self::IntClass? #t321 = v in #t321 == null ?{core::int?} null : let final core::int #t322 = self::IntClassExtension|get#property(#t321{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t323 = self::IntClassExtension|set#property(#t321{self::IntClass}, #t322) in #t322, v == null);
+ self::expect(n0, let final self::IntClass? #t324 = v in #t324 == null ?{core::int?} null : let final core::int #t325 = self::IntClassExtension|get#property(#t324{self::IntClass}).{core::num::-}(n2){(core::num) → core::int} in let final void #t326 = self::IntClassExtension|set#property(#t324{self::IntClass}, #t325) in #t325, v == null);
+ self::expect(n1, let final self::IntClass? #t327 = v in #t327 == null ?{core::int?} null : let final core::int #t328 = self::IntClassExtension|get#property(#t327{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t329 = self::IntClassExtension|set#property(#t327{self::IntClass}, #t328) in #t328, v == null);
+ self::expect(n0, let final self::IntClass? #t330 = v in #t330 == null ?{core::int?} null : let final core::int #t331 = self::IntClassExtension|get#property(#t330{self::IntClass}).{core::num::-}(n1){(core::num) → core::int} in let final void #t332 = self::IntClassExtension|set#property(#t330{self::IntClass}, #t331) in #t331, v == null);
+ self::expect(n1, let final self::IntClass? #t333 = v in #t333 == null ?{core::int?} null : let final core::int #t334 = self::IntClassExtension|get#property(#t333{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t335 = self::IntClassExtension|set#property(#t333{self::IntClass}, #t334) in #t334, v == null);
+ self::expect(n0, let final self::IntClass? #t336 = v in #t336 == null ?{core::int?} null : let final core::int #t337 = self::IntClassExtension|get#property(#t336{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t338 = self::IntClassExtension|set#property(#t336{self::IntClass}, #t337) in #t337, v == null);
+ self::expect(n0, let final self::IntClass? #t339 = v in #t339 == null ?{core::int?} null : let final core::int #t340 = self::IntClassExtension|get#property(#t339{self::IntClass}) in let final core::int #t341 = let final core::int #t342 = #t340.{core::num::+}(1){(core::num) → core::int} in let final void #t343 = self::IntClassExtension|set#property(#t339{self::IntClass}, #t342) in #t342 in #t340, v == null);
+ self::expect(n1, let final self::IntClass? #t344 = v in #t344 == null ?{core::int?} null : let final core::int #t345 = self::IntClassExtension|get#property(#t344{self::IntClass}) in let final core::int #t346 = let final core::int #t347 = #t345.{core::num::-}(1){(core::num) → core::int} in let final void #t348 = self::IntClassExtension|set#property(#t344{self::IntClass}, #t347) in #t347 in #t345, v == null);
+ self::expect(n0, let final self::IntClass? #t349 = v in #t349 == null ?{core::int?} null : self::IntClassExtension|get#property(#t349{self::IntClass}), v == null);
+ self::expect(n0, let final self::IntClass? #t350 = v in #t350 == null ?{core::int?} null : self::IntClassExtension|get#property(#t350{self::IntClass}), v == null);
+ let final self::IntClass? #t351 = v in #t351 == null ?{core::int?} null : self::IntClassExtension|set#property(#t351{self::IntClass}, self::IntClassExtension|get#property(#t351{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t352 = v in #t352 == null ?{core::int?} null : self::IntClassExtension|get#property(#t352{self::IntClass}), v == null);
+ let final self::IntClass? #t353 = v in #t353 == null ?{core::int?} null : self::IntClassExtension|set#property(#t353{self::IntClass}, self::IntClassExtension|get#property(#t353{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n2, let final self::IntClass? #t354 = v in #t354 == null ?{core::int?} null : self::IntClassExtension|get#property(#t354{self::IntClass}), v == null);
+ let final self::IntClass? #t355 = v in #t355 == null ?{core::int?} null : self::IntClassExtension|set#property(#t355{self::IntClass}, self::IntClassExtension|get#property(#t355{self::IntClass}).{core::num::-}(n2){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t356 = v in #t356 == null ?{core::int?} null : self::IntClassExtension|get#property(#t356{self::IntClass}), v == null);
+ let final self::IntClass? #t357 = v in #t357 == null ?{core::int?} null : self::IntClassExtension|set#property(#t357{self::IntClass}, self::IntClassExtension|get#property(#t357{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t358 = v in #t358 == null ?{core::int?} null : self::IntClassExtension|get#property(#t358{self::IntClass}), v == null);
+ let final self::IntClass? #t359 = v in #t359 == null ?{core::int?} null : self::IntClassExtension|set#property(#t359{self::IntClass}, self::IntClassExtension|get#property(#t359{self::IntClass}).{core::num::-}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t360 = v in #t360 == null ?{core::int?} null : self::IntClassExtension|get#property(#t360{self::IntClass}), v == null);
+ let final self::IntClass? #t361 = v in #t361 == null ?{core::int?} null : let final core::int #t362 = self::IntClassExtension|get#property(#t361{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t363 = self::IntClassExtension|set#property(#t361{self::IntClass}, #t362) in #t362;
+ self::expect(n1, let final self::IntClass? #t364 = v in #t364 == null ?{core::int?} null : self::IntClassExtension|get#property(#t364{self::IntClass}), v == null);
+ let final self::IntClass? #t365 = v in #t365 == null ?{core::int?} null : let final core::int #t366 = self::IntClassExtension|get#property(#t365{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t367 = self::IntClassExtension|set#property(#t365{self::IntClass}, #t366) in #t366;
+ self::expect(n0, let final self::IntClass? #t368 = v in #t368 == null ?{core::int?} null : self::IntClassExtension|get#property(#t368{self::IntClass}), v == null);
+ let final self::IntClass? #t369 = v in #t369 == null ?{core::int?} null : self::IntClassExtension|set#property(#t369{self::IntClass}, self::IntClassExtension|get#property(#t369{self::IntClass}).{core::num::+}(1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t370 = v in #t370 == null ?{core::int?} null : self::IntClassExtension|get#property(#t370{self::IntClass}), v == null);
+ let final self::IntClass? #t371 = v in #t371 == null ?{core::int?} null : self::IntClassExtension|set#property(#t371{self::IntClass}, self::IntClassExtension|get#property(#t371{self::IntClass}).{core::num::-}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t372 = v in #t372 == null ?{core::int?} null : self::IntClassExtension|get#property(#t372{self::IntClass}), v == null);
}
static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
- if(expectNull as{TypeError,ForDynamic} core::bool*) {
+ if(expectNull as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool) {
expected = null;
}
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/compounds.dart.weak.outline.expect
index dfddc05..aafd3ce 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.weak.outline.expect
@@ -1,90 +1,63 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
- final field core::int* value;
- constructor •(core::int* value) → self::Number*
+ final field core::int value;
+ constructor •(core::int value) → self::Number
;
- get hashCode() → core::int*
+ get hashCode() → core::int
;
- operator ==(core::Object* other) → core::bool*
+ operator ==(core::Object other) → core::bool
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class extends core::Object {
- field self::Number* field;
- constructor •(self::Number* field) → self::Class*
+ field self::Number field;
+ constructor •(self::Number field) → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::IntClass*
+ field core::int field;
+ constructor •(core::int field) → self::IntClass
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension NumberExtension on self::Number* {
+extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
-extension IntClassExtension on self::IntClass* {
+extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
-static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number*
+static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number
;
-static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number*
+static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number
;
-static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
+static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
;
-static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void
+static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void
;
-static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic
+static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic
;
-static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
+static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
-static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
+static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
;
-static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void
+static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void
;
-static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic
+static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic
;
-static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
+static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic
;
@@ -98,9 +71,9 @@
;
static method testExplicitIntProperties() → dynamic
;
-static method testExplicitNullAwareProperties(self::Class* v) → dynamic
+static method testExplicitNullAwareProperties(self::Class? v) → dynamic
;
-static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic
+static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic
;
static method expect(dynamic expected, dynamic actual, [has-declared-initializer dynamic expectNull]) → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect
index ccd5bd4..d1424bc 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.weak.transformed.expect
@@ -1,117 +1,90 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
- final field core::int* value;
- constructor •(core::int* value) → self::Number*
+ final field core::int value;
+ constructor •(core::int value) → self::Number
: self::Number::value = value, super core::Object::•()
;
- get hashCode() → core::int*
- return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
- operator ==(core::Object* other) → core::bool*
- return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
- method toString() → core::String*
- return "Number(${this.{self::Number::value}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ get hashCode() → core::int
+ return this.{self::Number::value}{core::int}.{core::num::hashCode}{core::int};
+ operator ==(core::Object other) → core::bool
+ return other is{ForNonNullableByDefault} self::Number && this.{self::Number::value}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Number}.{self::Number::value}{core::int};
+ method toString() → core::String
+ return "Number(${this.{self::Number::value}{core::int}})";
}
class Class extends core::Object {
- field self::Number* field;
- constructor •(self::Number* field) → self::Class*
+ field self::Number field;
+ constructor •(self::Number field) → self::Class
: self::Class::field = field, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::IntClass*
+ field core::int field;
+ constructor •(core::int field) → self::IntClass
: self::IntClass::field = field, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension NumberExtension on self::Number* {
+extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
-extension IntClassExtension on self::IntClass* {
+extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
-static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
- if(other is core::int*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
+static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number {
+ if(other is{ForNonNullableByDefault} core::int) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{core::int}){(core::num) → core::int});
}
else
- if(other is self::Number*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+ if(other is{ForNonNullableByDefault} self::Number) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
-static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
- if(other is core::int*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
+static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number {
+ if(other is{ForNonNullableByDefault} core::int) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{core::int}){(core::num) → core::int});
}
else
- if(other is self::Number*) {
- return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
+ if(other is{ForNonNullableByDefault} self::Number) {
+ return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
-static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
- return #this.{self::Class::field}{self::Number*};
-static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
+static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
+ return #this.{self::Class::field}{self::Number};
+static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void {
#this.{self::Class::field} = value;
}
-static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
+static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic {
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
self::expect(n0, self::ClassExtension|get#property(#this));
- self::expect(n1, let final self::Number* #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
- self::expect(n2, let final self::Number* #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
- self::expect(n0, let final self::Number* #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
- self::expect(n1, let final self::Number* #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
- self::expect(n0, let final self::Number* #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
- self::expect(n1, let final self::Number* #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
- self::expect(n0, let final self::Number* #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
- self::expect(n0, let final self::Number* #t15 = self::ClassExtension|get#property(#this) in let final self::Number* #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
- self::expect(n1, let final self::Number* #t17 = self::ClassExtension|get#property(#this) in let final self::Number* #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
+ self::expect(n1, let final self::Number #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
+ self::expect(n2, let final self::Number #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
+ self::expect(n0, let final self::Number #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
+ self::expect(n1, let final self::Number #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
+ self::expect(n0, let final self::Number #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
+ self::expect(n1, let final self::Number #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
+ self::expect(n0, let final self::Number #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
+ self::expect(n0, let final self::Number #t15 = self::ClassExtension|get#property(#this) in let final self::Number #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
+ self::expect(n1, let final self::Number #t17 = self::ClassExtension|get#property(#this) in let final self::Number #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), n1));
@@ -124,58 +97,58 @@
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), n1));
self::expect(n0, self::ClassExtension|get#property(#this));
- let final self::Number* #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
+ let final self::Number #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
self::expect(n1, self::ClassExtension|get#property(#this));
- let final self::Number* #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
+ let final self::Number #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), 1));
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), 1));
self::expect(n0, self::ClassExtension|get#property(#this));
}
-static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
+static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
-static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
- return #this.{self::IntClass::field}{core::int*};
-static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
+static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
+ return #this.{self::IntClass::field}{core::int};
+static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void {
#this.{self::IntClass::field} = value;
}
-static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
+static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic {
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
- self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
- self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
- self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
- self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
- self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
- self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
- self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
- self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
+ self::expect(n1, let final core::int #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
+ self::expect(n2, let final core::int #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
+ self::expect(n0, let final core::int #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
+ self::expect(n1, let final core::int #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
+ self::expect(n0, let final core::int #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
+ self::expect(n1, let final core::int #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
+ self::expect(n0, let final core::int #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
+ self::expect(n0, let final core::int #t37 = self::IntClassExtension|get#property(#this) in let final core::int #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num) → core::int}) in #t37);
+ self::expect(n1, let final core::int #t39 = self::IntClassExtension|get#property(#this) in let final core::int #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num) → core::int}) in #t39);
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
- let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
+ let final core::int #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
self::expect(n1, self::IntClassExtension|get#property(#this));
- let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
+ let final core::int #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
self::expect(n0, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
- self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
+ self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
}
-static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
+static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic {
self::testLocals();
@@ -191,10 +164,10 @@
self::IntClassExtension|testImplicitProperties(new self::IntClass::•(0));
}
static method testLocals() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Number* v = n0;
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Number v = n0;
self::expect(n0, v);
self::expect(n1, v = self::NumberExtension|+(v, n1));
self::expect(n2, v = self::NumberExtension|+(v, n1));
@@ -203,8 +176,8 @@
self::expect(n0, v = self::NumberExtension|-(v, n1));
self::expect(n1, v = self::NumberExtension|+(v, 1));
self::expect(n0, v = self::NumberExtension|-(v, 1));
- self::expect(n0, let final self::Number* #t45 = v in let final self::Number* #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
- self::expect(n1, let final self::Number* #t47 = v in let final self::Number* #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
+ self::expect(n0, let final self::Number #t45 = v in let final self::Number #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
+ self::expect(n1, let final self::Number #t47 = v in let final self::Number #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, v);
self::expect(n0, v);
v = self::NumberExtension|+(v, n1);
@@ -227,284 +200,284 @@
self::expect(n0, v);
}
static method testProperties() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Class* v = new self::Class::•(n0);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
- self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
- self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
- self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
- self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
- self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
- self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
- self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
- self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
- self::expect(n2, v.{self::Class::field}{self::Number*});
- let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
- let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
- self::expect(n1, v.{self::Class::field}{self::Number*});
- let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
- self::expect(n0, v.{self::Class::field}{self::Number*});
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Class v = new self::Class::•(n0);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ self::expect(n1, let final self::Class #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number}, n1));
+ self::expect(n2, let final self::Class #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number}, n1));
+ self::expect(n0, let final self::Class #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number}, n2));
+ self::expect(n1, let final self::Class #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number}, n1));
+ self::expect(n0, let final self::Class #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number}, n1));
+ self::expect(n1, let final self::Class #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number}, 1));
+ self::expect(n0, let final self::Class #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number}, 1));
+ self::expect(n0, let final self::Class #t56 = v in let final self::Number #t57 = #t56.{self::Class::field}{self::Number} in let final self::Number #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
+ self::expect(n1, let final self::Class #t59 = v in let final self::Number #t60 = #t59.{self::Class::field}{self::Number} in let final self::Number #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number}, n1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number}, n1);
+ self::expect(n2, v.{self::Class::field}{self::Number});
+ let final self::Class #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number}, n2);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number}, n1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number}, n1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number}, 1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number}, 1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
+ let final self::Class #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number}, 1);
+ self::expect(n1, v.{self::Class::field}{self::Number});
+ let final self::Class #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number}, 1);
+ self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, self::ClassExtension|get#property(v));
- self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
- self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
- self::expect(n0, let final self::Class* #t77 = v in let final self::Number* #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
- self::expect(n1, let final self::Class* #t80 = v in let final self::Number* #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
- self::expect(n0, let final self::Class* #t83 = v in let final self::Number* #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
- self::expect(n1, let final self::Class* #t86 = v in let final self::Number* #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
- self::expect(n0, let final self::Class* #t89 = v in let final self::Number* #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
- self::expect(n0, let final self::Class* #t92 = v in let final self::Number* #t93 = self::ClassExtension|get#property(#t92) in let final self::Number* #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
- self::expect(n1, let final self::Class* #t95 = v in let final self::Number* #t96 = self::ClassExtension|get#property(#t95) in let final self::Number* #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
+ self::expect(n1, let final self::Class #t71 = v in let final self::Number #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
+ self::expect(n2, let final self::Class #t74 = v in let final self::Number #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
+ self::expect(n0, let final self::Class #t77 = v in let final self::Number #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
+ self::expect(n1, let final self::Class #t80 = v in let final self::Number #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
+ self::expect(n0, let final self::Class #t83 = v in let final self::Number #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
+ self::expect(n1, let final self::Class #t86 = v in let final self::Number #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
+ self::expect(n0, let final self::Class #t89 = v in let final self::Number #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
+ self::expect(n0, let final self::Class #t92 = v in let final self::Number #t93 = self::ClassExtension|get#property(#t92) in let final self::Number #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
+ self::expect(n1, let final self::Class #t95 = v in let final self::Number #t96 = self::ClassExtension|get#property(#t95) in let final self::Number #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
+ let final self::Class #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
+ let final self::Class #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
self::expect(n2, self::ClassExtension|get#property(v));
- let final self::Class* #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
+ let final self::Class #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
+ let final self::Class #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
+ let final self::Class #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t103 = v in let final self::Number* #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
+ let final self::Class #t103 = v in let final self::Number #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t106 = v in let final self::Number* #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
+ let final self::Class #t106 = v in let final self::Number #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
+ let final self::Class #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
+ let final self::Class #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testIntProperties() → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::IntClass* v = new self::IntClass::•(n0);
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
- self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n2, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
- self::expect(n1, v.{self::IntClass::field}{core::int*});
- let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
- self::expect(n0, v.{self::IntClass::field}{core::int*});
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::IntClass v = new self::IntClass::•(n0);
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ self::expect(n1, let final self::IntClass #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n2, let final self::IntClass #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass #t118 = v in let final core::int #t119 = #t118.{self::IntClass::field}{core::int} in let final core::int #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num) → core::int} in #t119);
+ self::expect(n1, let final self::IntClass #t121 = v in let final core::int #t122 = #t121.{self::IntClass::field}{core::int} in let final core::int #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num) → core::int} in #t122);
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n2, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
+ self::expect(n1, v.{self::IntClass::field}{core::int});
+ let final self::IntClass #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
+ self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
- self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
- self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
- self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
- self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
- self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
- self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
- self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
- self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
+ self::expect(n1, let final self::IntClass #t133 = v in let final core::int #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num) → core::int} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
+ self::expect(n2, let final self::IntClass #t136 = v in let final core::int #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num) → core::int} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
+ self::expect(n0, let final self::IntClass #t139 = v in let final core::int #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num) → core::int} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
+ self::expect(n1, let final self::IntClass #t142 = v in let final core::int #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num) → core::int} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
+ self::expect(n0, let final self::IntClass #t145 = v in let final core::int #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num) → core::int} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
+ self::expect(n1, let final self::IntClass #t148 = v in let final core::int #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num) → core::int} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
+ self::expect(n0, let final self::IntClass #t151 = v in let final core::int #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num) → core::int} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
+ self::expect(n0, let final self::IntClass #t154 = v in let final core::int #t155 = self::IntClassExtension|get#property(#t154) in let final core::int #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num) → core::int}) in #t155);
+ self::expect(n1, let final self::IntClass #t157 = v in let final core::int #t158 = self::IntClassExtension|get#property(#t157) in let final core::int #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num) → core::int}) in #t158);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
+ let final self::IntClass #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
+ let final self::IntClass #t165 = v in let final core::int #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num) → core::int} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
+ let final self::IntClass #t168 = v in let final core::int #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num) → core::int} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitProperties() → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::Class* v = new self::Class::•(n0);
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::Class v = new self::Class::•(n0);
self::expect(n0, self::ClassExtension|get#property(v));
- self::expect(n1, let final self::Class* #t173 = v in let final self::Number* #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
- self::expect(n2, let final self::Class* #t176 = v in let final self::Number* #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
- self::expect(n0, let final self::Class* #t179 = v in let final self::Number* #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
- self::expect(n1, let final self::Class* #t182 = v in let final self::Number* #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
- self::expect(n0, let final self::Class* #t185 = v in let final self::Number* #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
- self::expect(n1, let final self::Class* #t188 = v in let final self::Number* #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
- self::expect(n0, let final self::Class* #t191 = v in let final self::Number* #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
- self::expect(n0, let final self::Class* #t194 = v in let final self::Number* #t195 = self::ClassExtension|get#property(#t194) in let final self::Number* #t196 = let final self::Number* #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
- self::expect(n1, let final self::Class* #t199 = v in let final self::Number* #t200 = self::ClassExtension|get#property(#t199) in let final self::Number* #t201 = let final self::Number* #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
+ self::expect(n1, let final self::Class #t173 = v in let final self::Number #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
+ self::expect(n2, let final self::Class #t176 = v in let final self::Number #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
+ self::expect(n0, let final self::Class #t179 = v in let final self::Number #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
+ self::expect(n1, let final self::Class #t182 = v in let final self::Number #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
+ self::expect(n0, let final self::Class #t185 = v in let final self::Number #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
+ self::expect(n1, let final self::Class #t188 = v in let final self::Number #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
+ self::expect(n0, let final self::Class #t191 = v in let final self::Number #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
+ self::expect(n0, let final self::Class #t194 = v in let final self::Number #t195 = self::ClassExtension|get#property(#t194) in let final self::Number #t196 = let final self::Number #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
+ self::expect(n1, let final self::Class #t199 = v in let final self::Number #t200 = self::ClassExtension|get#property(#t199) in let final self::Number #t201 = let final self::Number #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
+ let final self::Class #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
+ let final self::Class #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
self::expect(n2, self::ClassExtension|get#property(v));
- let final self::Class* #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
+ let final self::Class #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
+ let final self::Class #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
+ let final self::Class #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t209 = v in let final self::Number* #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
+ let final self::Class #t209 = v in let final self::Number #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t212 = v in let final self::Number* #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
+ let final self::Class #t212 = v in let final self::Number #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
self::expect(n0, self::ClassExtension|get#property(v));
- let final self::Class* #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
+ let final self::Class #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
self::expect(n1, self::ClassExtension|get#property(v));
- let final self::Class* #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
+ let final self::Class #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testExplicitIntProperties() → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::IntClass* v = new self::IntClass::•(n0);
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, self::IntClassExtension|get#property(v));
- self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
- self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
- self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
- self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
- self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
- self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
- self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
- self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
- self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
+ self::expect(n1, let final self::IntClass #t217 = v in let final core::int #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num) → core::int} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
+ self::expect(n2, let final self::IntClass #t220 = v in let final core::int #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num) → core::int} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
+ self::expect(n0, let final self::IntClass #t223 = v in let final core::int #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num) → core::int} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
+ self::expect(n1, let final self::IntClass #t226 = v in let final core::int #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num) → core::int} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
+ self::expect(n0, let final self::IntClass #t229 = v in let final core::int #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num) → core::int} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
+ self::expect(n1, let final self::IntClass #t232 = v in let final core::int #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num) → core::int} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
+ self::expect(n0, let final self::IntClass #t235 = v in let final core::int #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num) → core::int} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
+ self::expect(n0, let final self::IntClass #t238 = v in let final core::int #t239 = self::IntClassExtension|get#property(#t238) in let final core::int #t240 = let final core::int #t241 = #t239.{core::num::+}(1){(core::num) → core::int} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
+ self::expect(n1, let final self::IntClass #t243 = v in let final core::int #t244 = self::IntClassExtension|get#property(#t243) in let final core::int #t245 = let final core::int #t246 = #t244.{core::num::-}(1){(core::num) → core::int} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
+ let final self::IntClass #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
+ let final self::IntClass #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
+ let final self::IntClass #t253 = v in let final core::int #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num) → core::int} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
+ let final self::IntClass #t256 = v in let final core::int #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num) → core::int} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
self::expect(n0, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
- let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
+ let final self::IntClass #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
-static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
- self::Number* n0 = new self::Number::•(0);
- self::Number* n1 = new self::Number::•(1);
- self::Number* n2 = new self::Number::•(2);
- self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
- self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
- self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
- self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
- self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
- self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
- self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
- self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
- self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
- self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
- self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
- self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
- let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
- self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
- let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
- self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
- let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
- self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
- let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
- self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
- let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
- self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
- let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
- self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
- let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
- self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
- let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
- self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
- let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
- self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
+static method testExplicitNullAwareProperties(self::Class? v) → dynamic {
+ self::Number n0 = new self::Number::•(0);
+ self::Number n1 = new self::Number::•(1);
+ self::Number n2 = new self::Number::•(2);
+ self::expect(n0, let final self::Class? #t261 = v in #t261 == null ?{self::Number?} null : self::ClassExtension|get#property(#t261{self::Class}), v == null);
+ self::expect(n1, let final self::Class? #t262 = v in #t262 == null ?{self::Number?} null : let final self::Number #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262{self::Class}), n1) in let final void #t264 = self::ClassExtension|set#property(#t262{self::Class}, #t263) in #t263, v == null);
+ self::expect(n2, let final self::Class? #t265 = v in #t265 == null ?{self::Number?} null : let final self::Number #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265{self::Class}), n1) in let final void #t267 = self::ClassExtension|set#property(#t265{self::Class}, #t266) in #t266, v == null);
+ self::expect(n0, let final self::Class? #t268 = v in #t268 == null ?{self::Number?} null : let final self::Number #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268{self::Class}), n2) in let final void #t270 = self::ClassExtension|set#property(#t268{self::Class}, #t269) in #t269, v == null);
+ self::expect(n1, let final self::Class? #t271 = v in #t271 == null ?{self::Number?} null : let final self::Number #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271{self::Class}), n1) in let final void #t273 = self::ClassExtension|set#property(#t271{self::Class}, #t272) in #t272, v == null);
+ self::expect(n0, let final self::Class? #t274 = v in #t274 == null ?{self::Number?} null : let final self::Number #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274{self::Class}), n1) in let final void #t276 = self::ClassExtension|set#property(#t274{self::Class}, #t275) in #t275, v == null);
+ self::expect(n1, let final self::Class? #t277 = v in #t277 == null ?{self::Number?} null : let final self::Number #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277{self::Class}), 1) in let final void #t279 = self::ClassExtension|set#property(#t277{self::Class}, #t278) in #t278, v == null);
+ self::expect(n0, let final self::Class? #t280 = v in #t280 == null ?{self::Number?} null : let final self::Number #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280{self::Class}), 1) in let final void #t282 = self::ClassExtension|set#property(#t280{self::Class}, #t281) in #t281, v == null);
+ self::expect(n0, let final self::Class? #t283 = v in #t283 == null ?{self::Number?} null : let final self::Number #t284 = self::ClassExtension|get#property(#t283{self::Class}) in let final self::Number #t285 = let final self::Number #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283{self::Class}, #t286) in #t286 in #t284, v == null);
+ self::expect(n1, let final self::Class? #t288 = v in #t288 == null ?{self::Number?} null : let final self::Number #t289 = self::ClassExtension|get#property(#t288{self::Class}) in let final self::Number #t290 = let final self::Number #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288{self::Class}, #t291) in #t291 in #t289, v == null);
+ self::expect(n0, let final self::Class? #t293 = v in #t293 == null ?{self::Number?} null : self::ClassExtension|get#property(#t293{self::Class}), v == null);
+ self::expect(n0, let final self::Class? #t294 = v in #t294 == null ?{self::Number?} null : self::ClassExtension|get#property(#t294{self::Class}), v == null);
+ let final self::Class? #t295 = v in #t295 == null ?{self::Number?} null : self::ClassExtension|set#property(#t295{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t295{self::Class}), n1));
+ self::expect(n1, let final self::Class? #t296 = v in #t296 == null ?{self::Number?} null : self::ClassExtension|get#property(#t296{self::Class}), v == null);
+ let final self::Class? #t297 = v in #t297 == null ?{self::Number?} null : self::ClassExtension|set#property(#t297{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t297{self::Class}), n1));
+ self::expect(n2, let final self::Class? #t298 = v in #t298 == null ?{self::Number?} null : self::ClassExtension|get#property(#t298{self::Class}), v == null);
+ let final self::Class? #t299 = v in #t299 == null ?{self::Number?} null : self::ClassExtension|set#property(#t299{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t299{self::Class}), n2));
+ self::expect(n0, let final self::Class? #t300 = v in #t300 == null ?{self::Number?} null : self::ClassExtension|get#property(#t300{self::Class}), v == null);
+ let final self::Class? #t301 = v in #t301 == null ?{self::Number?} null : self::ClassExtension|set#property(#t301{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t301{self::Class}), n1));
+ self::expect(n1, let final self::Class? #t302 = v in #t302 == null ?{self::Number?} null : self::ClassExtension|get#property(#t302{self::Class}), v == null);
+ let final self::Class? #t303 = v in #t303 == null ?{self::Number?} null : self::ClassExtension|set#property(#t303{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t303{self::Class}), n1));
+ self::expect(n0, let final self::Class? #t304 = v in #t304 == null ?{self::Number?} null : self::ClassExtension|get#property(#t304{self::Class}), v == null);
+ let final self::Class? #t305 = v in #t305 == null ?{self::Number?} null : let final self::Number #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305{self::Class}), 1) in let final void #t307 = self::ClassExtension|set#property(#t305{self::Class}, #t306) in #t306;
+ self::expect(n1, let final self::Class? #t308 = v in #t308 == null ?{self::Number?} null : self::ClassExtension|get#property(#t308{self::Class}), v == null);
+ let final self::Class? #t309 = v in #t309 == null ?{self::Number?} null : let final self::Number #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309{self::Class}), 1) in let final void #t311 = self::ClassExtension|set#property(#t309{self::Class}, #t310) in #t310;
+ self::expect(n0, let final self::Class? #t312 = v in #t312 == null ?{self::Number?} null : self::ClassExtension|get#property(#t312{self::Class}), v == null);
+ let final self::Class? #t313 = v in #t313 == null ?{self::Number?} null : self::ClassExtension|set#property(#t313{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t313{self::Class}), 1));
+ self::expect(n1, let final self::Class? #t314 = v in #t314 == null ?{self::Number?} null : self::ClassExtension|get#property(#t314{self::Class}), v == null);
+ let final self::Class? #t315 = v in #t315 == null ?{self::Number?} null : self::ClassExtension|set#property(#t315{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t315{self::Class}), 1));
+ self::expect(n0, let final self::Class? #t316 = v in #t316 == null ?{self::Number?} null : self::ClassExtension|get#property(#t316{self::Class}), v == null);
}
-static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
- core::int* n0 = 0;
- core::int* n1 = 1;
- core::int* n2 = 2;
- self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
- self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
- self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
- self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
- self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
- self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
- self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
- self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
- self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
- self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
- self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
- self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
- let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
- let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
- let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
- let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
- let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
- let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
- self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
- let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
- self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
- let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
- self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
- let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
- self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
+static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic {
+ core::int n0 = 0;
+ core::int n1 = 1;
+ core::int n2 = 2;
+ self::expect(n0, let final self::IntClass? #t317 = v in #t317 == null ?{core::int?} null : self::IntClassExtension|get#property(#t317{self::IntClass}), v == null);
+ self::expect(n1, let final self::IntClass? #t318 = v in #t318 == null ?{core::int?} null : let final core::int #t319 = self::IntClassExtension|get#property(#t318{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t320 = self::IntClassExtension|set#property(#t318{self::IntClass}, #t319) in #t319, v == null);
+ self::expect(n2, let final self::IntClass? #t321 = v in #t321 == null ?{core::int?} null : let final core::int #t322 = self::IntClassExtension|get#property(#t321{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t323 = self::IntClassExtension|set#property(#t321{self::IntClass}, #t322) in #t322, v == null);
+ self::expect(n0, let final self::IntClass? #t324 = v in #t324 == null ?{core::int?} null : let final core::int #t325 = self::IntClassExtension|get#property(#t324{self::IntClass}).{core::num::-}(n2){(core::num) → core::int} in let final void #t326 = self::IntClassExtension|set#property(#t324{self::IntClass}, #t325) in #t325, v == null);
+ self::expect(n1, let final self::IntClass? #t327 = v in #t327 == null ?{core::int?} null : let final core::int #t328 = self::IntClassExtension|get#property(#t327{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t329 = self::IntClassExtension|set#property(#t327{self::IntClass}, #t328) in #t328, v == null);
+ self::expect(n0, let final self::IntClass? #t330 = v in #t330 == null ?{core::int?} null : let final core::int #t331 = self::IntClassExtension|get#property(#t330{self::IntClass}).{core::num::-}(n1){(core::num) → core::int} in let final void #t332 = self::IntClassExtension|set#property(#t330{self::IntClass}, #t331) in #t331, v == null);
+ self::expect(n1, let final self::IntClass? #t333 = v in #t333 == null ?{core::int?} null : let final core::int #t334 = self::IntClassExtension|get#property(#t333{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t335 = self::IntClassExtension|set#property(#t333{self::IntClass}, #t334) in #t334, v == null);
+ self::expect(n0, let final self::IntClass? #t336 = v in #t336 == null ?{core::int?} null : let final core::int #t337 = self::IntClassExtension|get#property(#t336{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t338 = self::IntClassExtension|set#property(#t336{self::IntClass}, #t337) in #t337, v == null);
+ self::expect(n0, let final self::IntClass? #t339 = v in #t339 == null ?{core::int?} null : let final core::int #t340 = self::IntClassExtension|get#property(#t339{self::IntClass}) in let final core::int #t341 = let final core::int #t342 = #t340.{core::num::+}(1){(core::num) → core::int} in let final void #t343 = self::IntClassExtension|set#property(#t339{self::IntClass}, #t342) in #t342 in #t340, v == null);
+ self::expect(n1, let final self::IntClass? #t344 = v in #t344 == null ?{core::int?} null : let final core::int #t345 = self::IntClassExtension|get#property(#t344{self::IntClass}) in let final core::int #t346 = let final core::int #t347 = #t345.{core::num::-}(1){(core::num) → core::int} in let final void #t348 = self::IntClassExtension|set#property(#t344{self::IntClass}, #t347) in #t347 in #t345, v == null);
+ self::expect(n0, let final self::IntClass? #t349 = v in #t349 == null ?{core::int?} null : self::IntClassExtension|get#property(#t349{self::IntClass}), v == null);
+ self::expect(n0, let final self::IntClass? #t350 = v in #t350 == null ?{core::int?} null : self::IntClassExtension|get#property(#t350{self::IntClass}), v == null);
+ let final self::IntClass? #t351 = v in #t351 == null ?{core::int?} null : self::IntClassExtension|set#property(#t351{self::IntClass}, self::IntClassExtension|get#property(#t351{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t352 = v in #t352 == null ?{core::int?} null : self::IntClassExtension|get#property(#t352{self::IntClass}), v == null);
+ let final self::IntClass? #t353 = v in #t353 == null ?{core::int?} null : self::IntClassExtension|set#property(#t353{self::IntClass}, self::IntClassExtension|get#property(#t353{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n2, let final self::IntClass? #t354 = v in #t354 == null ?{core::int?} null : self::IntClassExtension|get#property(#t354{self::IntClass}), v == null);
+ let final self::IntClass? #t355 = v in #t355 == null ?{core::int?} null : self::IntClassExtension|set#property(#t355{self::IntClass}, self::IntClassExtension|get#property(#t355{self::IntClass}).{core::num::-}(n2){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t356 = v in #t356 == null ?{core::int?} null : self::IntClassExtension|get#property(#t356{self::IntClass}), v == null);
+ let final self::IntClass? #t357 = v in #t357 == null ?{core::int?} null : self::IntClassExtension|set#property(#t357{self::IntClass}, self::IntClassExtension|get#property(#t357{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t358 = v in #t358 == null ?{core::int?} null : self::IntClassExtension|get#property(#t358{self::IntClass}), v == null);
+ let final self::IntClass? #t359 = v in #t359 == null ?{core::int?} null : self::IntClassExtension|set#property(#t359{self::IntClass}, self::IntClassExtension|get#property(#t359{self::IntClass}).{core::num::-}(n1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t360 = v in #t360 == null ?{core::int?} null : self::IntClassExtension|get#property(#t360{self::IntClass}), v == null);
+ let final self::IntClass? #t361 = v in #t361 == null ?{core::int?} null : let final core::int #t362 = self::IntClassExtension|get#property(#t361{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t363 = self::IntClassExtension|set#property(#t361{self::IntClass}, #t362) in #t362;
+ self::expect(n1, let final self::IntClass? #t364 = v in #t364 == null ?{core::int?} null : self::IntClassExtension|get#property(#t364{self::IntClass}), v == null);
+ let final self::IntClass? #t365 = v in #t365 == null ?{core::int?} null : let final core::int #t366 = self::IntClassExtension|get#property(#t365{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t367 = self::IntClassExtension|set#property(#t365{self::IntClass}, #t366) in #t366;
+ self::expect(n0, let final self::IntClass? #t368 = v in #t368 == null ?{core::int?} null : self::IntClassExtension|get#property(#t368{self::IntClass}), v == null);
+ let final self::IntClass? #t369 = v in #t369 == null ?{core::int?} null : self::IntClassExtension|set#property(#t369{self::IntClass}, self::IntClassExtension|get#property(#t369{self::IntClass}).{core::num::+}(1){(core::num) → core::int});
+ self::expect(n1, let final self::IntClass? #t370 = v in #t370 == null ?{core::int?} null : self::IntClassExtension|get#property(#t370{self::IntClass}), v == null);
+ let final self::IntClass? #t371 = v in #t371 == null ?{core::int?} null : self::IntClassExtension|set#property(#t371{self::IntClass}, self::IntClassExtension|get#property(#t371{self::IntClass}).{core::num::-}(1){(core::num) → core::int});
+ self::expect(n0, let final self::IntClass? #t372 = v in #t372 == null ?{core::int?} null : self::IntClassExtension|get#property(#t372{self::IntClass}), v == null);
}
static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
- if(expectNull as{TypeError,ForDynamic} core::bool*) {
+ if(expectNull as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool) {
expected = null;
}
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart b/pkg/front_end/testcases/extensions/conflict_with_object.dart
index 41b089d..fb9cc65 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart
@@ -1,11 +1,11 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension Extension on String {
int get noSuchMethod => 42;
void set hashCode(int value) {}
- int runtimeType() {}
+ int runtimeType() => 0;
operator ==(other) => false;
static String toString() => 'Foo';
}
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline.expect
index 2e92f04..2c7a9fa 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline.expect
@@ -1,8 +1,7 @@
-// @dart = 2.9
extension Extension on String {
int get noSuchMethod => 42;
void set hashCode(int value) {}
- int runtimeType() {}
+ int runtimeType() => 0;
operator ==(other) => false;
static String toString() => 'Foo';
}
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline_modelled.expect
index a4cefaa..5ce2bf8 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.textual_outline_modelled.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
errors() {}
expect(expected, actual) {}
extension Extension on String {
int get noSuchMethod => 42;
- int runtimeType() {}
+ int runtimeType() => 0;
operator ==(other) => false;
static String toString() => 'Foo';
void set hashCode(int value) {}
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect
index 101c651..ec46c28 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
-// int runtimeType() {}
+// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -40,7 +40,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -48,33 +48,34 @@
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
-static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
+static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
return 42;
-static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void {}
-static method Extension|runtimeType(lowered final core::String* #this) → core::int* {}
-static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self::Extension|runtimeType(#this);
-static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
+static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void {}
+static method Extension|runtimeType(lowered final core::String #this) → core::int
+ return 0;
+static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
+ return () → core::int => self::Extension|runtimeType(#this);
+static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
return false;
-static method Extension|toString() → core::String*
+static method Extension|toString() → core::String
return "Foo";
static method main() → dynamic {
- core::int* value;
- self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
+ core::int value;
+ self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} is{ForNonNullableByDefault} core::Function);
value = self::Extension|get#noSuchMethod("");
self::Extension|set#hashCode("", 42);
- self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
- self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
+ self::expect(true, "".{core::Object::runtimeType}{core::Type} is{ForNonNullableByDefault} core::Type);
+ self::expect(true, self::Extension|get#runtimeType("") is{ForNonNullableByDefault} core::Function);
value = self::Extension|runtimeType("");
- self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
+ self::expect(true, "" =={core::String::==}{(core::Object) → core::bool} "");
self::expect("Foo", self::Extension|toString());
}
static method errors() → dynamic {
- core::int* value;
+ core::int value;
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
- 'Invocation' is from 'dart:core'.
value = \"\".noSuchMethod;
- ^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
+ ^" in "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} core::int;
invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
\"\".hashCode = 42;
@@ -82,10 +83,10 @@
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
- 'Type' is from 'dart:core'.
value = \"\".runtimeType;
- ^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
+ ^" in "".{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} core::int;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.modular.expect
index 101c651..ec46c28 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
-// int runtimeType() {}
+// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -40,7 +40,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -48,33 +48,34 @@
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
-static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
+static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
return 42;
-static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void {}
-static method Extension|runtimeType(lowered final core::String* #this) → core::int* {}
-static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self::Extension|runtimeType(#this);
-static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
+static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void {}
+static method Extension|runtimeType(lowered final core::String #this) → core::int
+ return 0;
+static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
+ return () → core::int => self::Extension|runtimeType(#this);
+static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
return false;
-static method Extension|toString() → core::String*
+static method Extension|toString() → core::String
return "Foo";
static method main() → dynamic {
- core::int* value;
- self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
+ core::int value;
+ self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} is{ForNonNullableByDefault} core::Function);
value = self::Extension|get#noSuchMethod("");
self::Extension|set#hashCode("", 42);
- self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
- self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
+ self::expect(true, "".{core::Object::runtimeType}{core::Type} is{ForNonNullableByDefault} core::Type);
+ self::expect(true, self::Extension|get#runtimeType("") is{ForNonNullableByDefault} core::Function);
value = self::Extension|runtimeType("");
- self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
+ self::expect(true, "" =={core::String::==}{(core::Object) → core::bool} "");
self::expect("Foo", self::Extension|toString());
}
static method errors() → dynamic {
- core::int* value;
+ core::int value;
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
- 'Invocation' is from 'dart:core'.
value = \"\".noSuchMethod;
- ^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
+ ^" in "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} core::int;
invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
\"\".hashCode = 42;
@@ -82,10 +83,10 @@
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
- 'Type' is from 'dart:core'.
value = \"\".runtimeType;
- ^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
+ ^" in "".{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} core::int;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.outline.expect
index 500096d..1ec3424 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
-// int runtimeType() {}
+// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -25,7 +25,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -33,17 +33,17 @@
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
-static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
+static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
;
-static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void
+static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void
;
-static method Extension|runtimeType(lowered final core::String* #this) → core::int*
+static method Extension|runtimeType(lowered final core::String #this) → core::int
;
-static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self::Extension|runtimeType(#this);
-static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
+static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
+ return () → core::int => self::Extension|runtimeType(#this);
+static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
;
-static method Extension|toString() → core::String*
+static method Extension|toString() → core::String
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect
index bfce2e3..a49ebae 100644
--- a/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/conflict_with_object.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
-// int runtimeType() {}
+// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -40,7 +40,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -48,33 +48,34 @@
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
-static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
+static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
return 42;
-static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void {}
-static method Extension|runtimeType(lowered final core::String* #this) → core::int* {}
-static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self::Extension|runtimeType(#this);
-static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
+static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void {}
+static method Extension|runtimeType(lowered final core::String #this) → core::int
+ return 0;
+static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
+ return () → core::int => self::Extension|runtimeType(#this);
+static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
return false;
-static method Extension|toString() → core::String*
+static method Extension|toString() → core::String
return "Foo";
static method main() → dynamic {
- core::int* value;
- self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
+ core::int value;
+ self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} is{ForNonNullableByDefault} core::Function);
value = self::Extension|get#noSuchMethod("");
self::Extension|set#hashCode("", 42);
- self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
- self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
+ self::expect(true, "".{core::Object::runtimeType}{core::Type} is{ForNonNullableByDefault} core::Type);
+ self::expect(true, self::Extension|get#runtimeType("") is{ForNonNullableByDefault} core::Function);
value = self::Extension|runtimeType("");
- self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
+ self::expect(true, "" =={core::String::==}{(core::Object) → core::bool} "");
self::expect("Foo", self::Extension|toString());
}
static method errors() → dynamic {
- core::int* value;
+ core::int value;
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
- 'Invocation' is from 'dart:core'.
value = \"\".noSuchMethod;
- ^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
+ ^" in "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} core::int;
invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
\"\".hashCode = 42;
@@ -82,10 +83,10 @@
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
- 'Type' is from 'dart:core'.
value = \"\".runtimeType;
- ^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
+ ^" in "".{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} core::int;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart b/pkg/front_end/testcases/extensions/conflicts.dart
index 73581ca..b05aa28 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart
+++ b/pkg/front_end/testcases/extensions/conflicts.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class1 {
}
class Class2 {}
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline.expect
index 2ecd835..0f53c9b 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {}
class Class2 {}
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline_modelled.expect
index e713b85..481736e 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {}
class Class2 {}
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.weak.expect b/pkg/front_end/testcases/extensions/conflicts.dart.weak.expect
index 3373345..e9568ce 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,62 +26,42 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- synthetic constructor •() → self::Class2*
+ synthetic constructor •() → self::Class2
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension DuplicateExtensionName on self::Class1* {
+extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
-extension UniqueExtensionName on self::Class1* {
+extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
-static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic {}
-static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic {}
+static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
-static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
+static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
return 1;
-static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
-static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
+static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
return 1;
-static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
+static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic {
- self::Class1* c1 = new self::Class1::•();
+ self::Class1 c1 = new self::Class1::•();
self::DuplicateExtensionName|uniqueMethod1(c1);
}
static method errors() → dynamic {
- self::Class2* c2 = new self::Class2::•();
+ self::Class2 c2 = new self::Class2::•();
invalid-expression "pkg/front_end/testcases/extensions/conflicts.dart:31:6: Error: The method 'uniqueMethod2' isn't defined for the class 'Class2'.
- 'Class2' is from 'pkg/front_end/testcases/extensions/conflicts.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'uniqueMethod2'.
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/conflicts.dart.weak.modular.expect
index 3373345..e9568ce 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,62 +26,42 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- synthetic constructor •() → self::Class2*
+ synthetic constructor •() → self::Class2
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension DuplicateExtensionName on self::Class1* {
+extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
-extension UniqueExtensionName on self::Class1* {
+extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
-static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic {}
-static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic {}
+static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
-static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
+static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
return 1;
-static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
-static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
+static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
return 1;
-static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
+static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic {
- self::Class1* c1 = new self::Class1::•();
+ self::Class1 c1 = new self::Class1::•();
self::DuplicateExtensionName|uniqueMethod1(c1);
}
static method errors() → dynamic {
- self::Class2* c2 = new self::Class2::•();
+ self::Class2 c2 = new self::Class2::•();
invalid-expression "pkg/front_end/testcases/extensions/conflicts.dart:31:6: Error: The method 'uniqueMethod2' isn't defined for the class 'Class2'.
- 'Class2' is from 'pkg/front_end/testcases/extensions/conflicts.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'uniqueMethod2'.
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/conflicts.dart.weak.outline.expect
index 4e95f3b..ab3ac2b 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -20,54 +20,34 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- synthetic constructor •() → self::Class2*
+ synthetic constructor •() → self::Class2
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension DuplicateExtensionName on self::Class1* {
+extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
-extension UniqueExtensionName on self::Class1* {
+extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
-static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic
+static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic
;
-static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
-static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
+static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
;
-static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
-static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
+static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
;
-static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
+static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/conflicts.dart.weak.transformed.expect
index 3373345..e9568ce 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,62 +26,42 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- synthetic constructor •() → self::Class2*
+ synthetic constructor •() → self::Class2
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension DuplicateExtensionName on self::Class1* {
+extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
-extension UniqueExtensionName on self::Class1* {
+extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
-static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic {}
-static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic {}
+static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
-static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
+static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
return 1;
-static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
+static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
-static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
+static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
return 1;
-static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
+static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic {
- self::Class1* c1 = new self::Class1::•();
+ self::Class1 c1 = new self::Class1::•();
self::DuplicateExtensionName|uniqueMethod1(c1);
}
static method errors() → dynamic {
- self::Class2* c2 = new self::Class2::•();
+ self::Class2 c2 = new self::Class2::•();
invalid-expression "pkg/front_end/testcases/extensions/conflicts.dart:31:6: Error: The method 'uniqueMethod2' isn't defined for the class 'Class2'.
- 'Class2' is from 'pkg/front_end/testcases/extensions/conflicts.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'uniqueMethod2'.
diff --git a/pkg/front_end/testcases/extensions/default_values.dart b/pkg/front_end/testcases/extensions/default_values.dart
index cbe9d36..eb948c2 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart
+++ b/pkg/front_end/testcases/extensions/default_values.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/default_values.dart.textual_outline.expect
index 07692f8..76863ce 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/default_values.dart.textual_outline_modelled.expect
index 75eaf11..dac2c87e 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.weak.expect b/pkg/front_end/testcases/extensions/default_values.dart.weak.expect
index 99dd7ec..06ce1d1 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.weak.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -28,41 +18,41 @@
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
-static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
+static method Extension|method0(lowered final self::Class #this, [dynamic a = #C1]) → dynamic
return a;
-static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
-static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
+static method Extension|method1(lowered final self::Class #this, [dynamic a = #C2]) → dynamic
return a;
-static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
-static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
+static method Extension|method2(lowered final self::Class #this, {dynamic b = #C3}) → dynamic
return b;
-static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
+static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
-static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
+static method Extension|method3(lowered final self::Class #this, {dynamic c = #C4}) → dynamic
return c{dynamic}.call();
-static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
+static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
return 123;
static method main() → dynamic {
- self::Class* c = new self::Class::•();
- ([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
- self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
- self::expect(null, tearOff0(){([dynamic]) →* dynamic});
- ([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
- self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
- self::expect(42, tearOff1(){([dynamic]) →* dynamic});
- ({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
- self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
- self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
- ({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
- self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
- self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
+ self::Class c = new self::Class::•();
+ ([dynamic]) → dynamic tearOff0 = self::Extension|get#method0(c);
+ self::expect(0, tearOff0(0){([dynamic]) → dynamic});
+ self::expect(null, tearOff0(){([dynamic]) → dynamic});
+ ([dynamic]) → dynamic tearOff1 = self::Extension|get#method1(c);
+ self::expect(0, tearOff1(0){([dynamic]) → dynamic});
+ self::expect(42, tearOff1(){([dynamic]) → dynamic});
+ ({b: dynamic}) → dynamic tearOff2 = self::Extension|get#method2(c);
+ self::expect(0, tearOff2(b: 0){({b: dynamic}) → dynamic});
+ self::expect(87, tearOff2(){({b: dynamic}) → dynamic});
+ ({c: dynamic}) → dynamic tearOff3 = self::Extension|get#method3(c);
+ self::expect(0, tearOff3(c: () → core::int => 0){({c: dynamic}) → dynamic});
+ self::expect(123, tearOff3(){({c: dynamic}) → dynamic});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/default_values.dart.weak.modular.expect
index 99dd7ec..06ce1d1 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.weak.modular.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -28,41 +18,41 @@
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
-static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
+static method Extension|method0(lowered final self::Class #this, [dynamic a = #C1]) → dynamic
return a;
-static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
-static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
+static method Extension|method1(lowered final self::Class #this, [dynamic a = #C2]) → dynamic
return a;
-static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
-static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
+static method Extension|method2(lowered final self::Class #this, {dynamic b = #C3}) → dynamic
return b;
-static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
+static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
-static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
+static method Extension|method3(lowered final self::Class #this, {dynamic c = #C4}) → dynamic
return c{dynamic}.call();
-static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
+static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
return 123;
static method main() → dynamic {
- self::Class* c = new self::Class::•();
- ([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
- self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
- self::expect(null, tearOff0(){([dynamic]) →* dynamic});
- ([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
- self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
- self::expect(42, tearOff1(){([dynamic]) →* dynamic});
- ({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
- self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
- self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
- ({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
- self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
- self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
+ self::Class c = new self::Class::•();
+ ([dynamic]) → dynamic tearOff0 = self::Extension|get#method0(c);
+ self::expect(0, tearOff0(0){([dynamic]) → dynamic});
+ self::expect(null, tearOff0(){([dynamic]) → dynamic});
+ ([dynamic]) → dynamic tearOff1 = self::Extension|get#method1(c);
+ self::expect(0, tearOff1(0){([dynamic]) → dynamic});
+ self::expect(42, tearOff1(){([dynamic]) → dynamic});
+ ({b: dynamic}) → dynamic tearOff2 = self::Extension|get#method2(c);
+ self::expect(0, tearOff2(b: 0){({b: dynamic}) → dynamic});
+ self::expect(87, tearOff2(){({b: dynamic}) → dynamic});
+ ({c: dynamic}) → dynamic tearOff3 = self::Extension|get#method3(c);
+ self::expect(0, tearOff3(c: () → core::int => 0){({c: dynamic}) → dynamic});
+ self::expect(123, tearOff3(){({c: dynamic}) → dynamic});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/default_values.dart.weak.outline.expect
index a200896..b728e1a 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.weak.outline.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -27,21 +17,21 @@
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
-static method Extension|method0(lowered final self::Class* #this, [dynamic a]) → dynamic
+static method Extension|method0(lowered final self::Class #this, [dynamic a]) → dynamic
;
-static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a]) → dynamic => self::Extension|method0(#this, a);
-static method Extension|method1(lowered final self::Class* #this, [has-declared-initializer dynamic a]) → dynamic
+static method Extension|method1(lowered final self::Class #this, [has-declared-initializer dynamic a]) → dynamic
;
-static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a]) → dynamic => self::Extension|method1(#this, a);
-static method Extension|method2(lowered final self::Class* #this, {has-declared-initializer dynamic b}) → dynamic
+static method Extension|method2(lowered final self::Class #this, {has-declared-initializer dynamic b}) → dynamic
;
-static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
+static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b}) → dynamic => self::Extension|method2(#this, b: b);
-static method Extension|method3(lowered final self::Class* #this, {has-declared-initializer dynamic c}) → dynamic
+static method Extension|method3(lowered final self::Class #this, {has-declared-initializer dynamic c}) → dynamic
;
-static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
+static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect
index 99dd7ec..06ce1d1 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.weak.transformed.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -28,41 +18,41 @@
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
-static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
+static method Extension|method0(lowered final self::Class #this, [dynamic a = #C1]) → dynamic
return a;
-static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
-static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
+static method Extension|method1(lowered final self::Class #this, [dynamic a = #C2]) → dynamic
return a;
-static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
-static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
+static method Extension|method2(lowered final self::Class #this, {dynamic b = #C3}) → dynamic
return b;
-static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
+static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
-static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
+static method Extension|method3(lowered final self::Class #this, {dynamic c = #C4}) → dynamic
return c{dynamic}.call();
-static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
+static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
return 123;
static method main() → dynamic {
- self::Class* c = new self::Class::•();
- ([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
- self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
- self::expect(null, tearOff0(){([dynamic]) →* dynamic});
- ([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
- self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
- self::expect(42, tearOff1(){([dynamic]) →* dynamic});
- ({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
- self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
- self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
- ({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
- self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
- self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
+ self::Class c = new self::Class::•();
+ ([dynamic]) → dynamic tearOff0 = self::Extension|get#method0(c);
+ self::expect(0, tearOff0(0){([dynamic]) → dynamic});
+ self::expect(null, tearOff0(){([dynamic]) → dynamic});
+ ([dynamic]) → dynamic tearOff1 = self::Extension|get#method1(c);
+ self::expect(0, tearOff1(0){([dynamic]) → dynamic});
+ self::expect(42, tearOff1(){([dynamic]) → dynamic});
+ ({b: dynamic}) → dynamic tearOff2 = self::Extension|get#method2(c);
+ self::expect(0, tearOff2(b: 0){({b: dynamic}) → dynamic});
+ self::expect(87, tearOff2(){({b: dynamic}) → dynamic});
+ ({c: dynamic}) → dynamic tearOff3 = self::Extension|get#method3(c);
+ self::expect(0, tearOff3(c: () → core::int => 0){({c: dynamic}) → dynamic});
+ self::expect(123, tearOff3(){({c: dynamic}) → dynamic});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart
index 4935ff2..70ca3dd 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'deferred_explicit_access_lib.dart' deferred as prefix;
main() async {
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline.expect
index 7ce2bbc..5dedc9b 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix;
main() async {}
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline_modelled.expect
index f02744c..45edf2b 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix;
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect
index e5d181d..cc56e66 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,7 +17,7 @@
await LoadLibrary(prefix);
self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
- self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int* #t4 = 0 in let final core::int* #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
+ self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
self::expect(84, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
self::expect(85, let final dynamic #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
self::expect(42, let final dynamic #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
@@ -25,15 +25,15 @@
self::expect(87, let final dynamic #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -43,27 +43,27 @@
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
-static field core::int* Extension|staticField = 0;
-static field core::int* topLevelField = def::Extension|staticField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField = 0;
+static field core::int topLevelField = def::Extension|staticField;
+static get Extension|staticProperty() → core::int
return def::Extension|staticField;
-static set Extension|staticProperty(core::int* value) → void {
+static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
return def::Extension|staticField;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
+static method Extension|get#property(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|method(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => def::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => def::Extension|method(#this);
+static get topLevelProperty() → core::int
return def::Extension|staticField;
-static set topLevelProperty(core::int* value) → void {
+static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect
index e5d181d..cc56e66 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,7 +17,7 @@
await LoadLibrary(prefix);
self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
- self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int* #t4 = 0 in let final core::int* #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
+ self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
self::expect(84, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
self::expect(85, let final dynamic #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
self::expect(42, let final dynamic #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
@@ -25,15 +25,15 @@
self::expect(87, let final dynamic #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -43,27 +43,27 @@
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
-static field core::int* Extension|staticField = 0;
-static field core::int* topLevelField = def::Extension|staticField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField = 0;
+static field core::int topLevelField = def::Extension|staticField;
+static get Extension|staticProperty() → core::int
return def::Extension|staticField;
-static set Extension|staticProperty(core::int* value) → void {
+static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
return def::Extension|staticField;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
+static method Extension|get#property(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|method(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => def::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => def::Extension|method(#this);
+static get topLevelProperty() → core::int
return def::Extension|staticField;
-static set topLevelProperty(core::int* value) → void {
+static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.outline.expect
index b5db0d7..bf2f8ef 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -16,11 +16,11 @@
static method expect(dynamic expected, dynamic actual) → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = self2::Extension|staticField;
static get staticProperty = get self2::Extension|staticProperty;
static method staticMethod = self2::Extension|staticMethod;
@@ -30,25 +30,25 @@
static set staticProperty = set self2::Extension|staticProperty;
set property = self2::Extension|set#property;
}
-static field core::int* Extension|staticField;
-static field core::int* topLevelField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField;
+static field core::int topLevelField;
+static get Extension|staticProperty() → core::int
;
-static set Extension|staticProperty(core::int* value) → void
+static set Extension|staticProperty(core::int value) → void
;
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
+static method Extension|get#property(lowered final core::int #this) → core::int
;
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#property(lowered final core::int #this, core::int value) → void
;
-static method Extension|method(lowered final core::int* #this) → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
;
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => self2::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => self2::Extension|method(#this);
+static get topLevelProperty() → core::int
;
-static set topLevelProperty(core::int* value) → void
+static set topLevelProperty(core::int value) → void
;
static method topLevelMethod() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
index 612662d..484ac66 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -15,12 +15,12 @@
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix;
static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+ final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
core::bool* :is_sync = false;
dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
+ (dynamic) → dynamic :async_op_then;
+ (core::Object, core::StackTrace) → dynamic :async_op_error;
+ core::int :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
@@ -31,7 +31,7 @@
:result_or_exception;
self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
- self::expect(42, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in let final core::int* #t5 = 0 in let final core::int* #t6 = 42 in let final void #t7 = def::Extension|set#property(#t5, #t6) in #t6);
+ self::expect(42, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in let final core::int #t5 = 0 in let final core::int #t6 = 42 in let final void #t7 = def::Extension|set#property(#t5, #t6) in #t6);
self::expect(84, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
self::expect(85, let final core::Object* #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
self::expect(42, let final core::Object* #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
@@ -41,25 +41,25 @@
asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
return;
}
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+ on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
}
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
+ :async_op(null, null){() → dynamic};
:is_sync = true;
return :async_future;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -69,27 +69,27 @@
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
-static field core::int* Extension|staticField = 0;
-static field core::int* topLevelField = def::Extension|staticField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField = 0;
+static field core::int topLevelField = def::Extension|staticField;
+static get Extension|staticProperty() → core::int
return def::Extension|staticField;
-static set Extension|staticProperty(core::int* value) → void {
+static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
return def::Extension|staticField;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
+static method Extension|get#property(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|method(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => def::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => def::Extension|method(#this);
+static get topLevelProperty() → core::int
return def::Extension|staticField;
-static set topLevelProperty(core::int* value) → void {
+static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access_lib.dart b/pkg/front_end/testcases/extensions/deferred_explicit_access_lib.dart
index 76a7d59..a85bb28 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access_lib.dart
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access_lib.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension Extension on int {
static int staticField = 0;
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart
index b289768b..c5d6507 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'deferred_explicit_access_lib.dart' deferred as prefix hide Extension;
main() async {
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline.expect
index 6e5148b..cd5075c 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix hide Extension;
main() async {}
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline_modelled.expect
index 72a2f58..73bcfb8 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix hide Extension;
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect
index 0b080b3..5ce08e9 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "deferred_explicit_access_lib.dart" as def;
import "dart:core" as core;
@@ -16,15 +16,15 @@
self::expect(87, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -34,27 +34,27 @@
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
-static field core::int* Extension|staticField = 0;
-static field core::int* topLevelField = def::Extension|staticField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField = 0;
+static field core::int topLevelField = def::Extension|staticField;
+static get Extension|staticProperty() → core::int
return def::Extension|staticField;
-static set Extension|staticProperty(core::int* value) → void {
+static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
return def::Extension|staticField;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
+static method Extension|get#property(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|method(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => def::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => def::Extension|method(#this);
+static get topLevelProperty() → core::int
return def::Extension|staticField;
-static set topLevelProperty(core::int* value) → void {
+static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect
index 0b080b3..5ce08e9 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "deferred_explicit_access_lib.dart" as def;
import "dart:core" as core;
@@ -16,15 +16,15 @@
self::expect(87, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -34,27 +34,27 @@
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
-static field core::int* Extension|staticField = 0;
-static field core::int* topLevelField = def::Extension|staticField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField = 0;
+static field core::int topLevelField = def::Extension|staticField;
+static get Extension|staticProperty() → core::int
return def::Extension|staticField;
-static set Extension|staticProperty(core::int* value) → void {
+static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
return def::Extension|staticField;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
+static method Extension|get#property(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|method(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => def::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => def::Extension|method(#this);
+static get topLevelProperty() → core::int
return def::Extension|staticField;
-static set topLevelProperty(core::int* value) → void {
+static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.outline.expect
index a0ceed4..1fbc675 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension;
@@ -8,11 +8,11 @@
static method expect(dynamic expected, dynamic actual) → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = self2::Extension|staticField;
static get staticProperty = get self2::Extension|staticProperty;
static method staticMethod = self2::Extension|staticMethod;
@@ -22,25 +22,25 @@
static set staticProperty = set self2::Extension|staticProperty;
set property = self2::Extension|set#property;
}
-static field core::int* Extension|staticField;
-static field core::int* topLevelField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField;
+static field core::int topLevelField;
+static get Extension|staticProperty() → core::int
;
-static set Extension|staticProperty(core::int* value) → void
+static set Extension|staticProperty(core::int value) → void
;
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
+static method Extension|get#property(lowered final core::int #this) → core::int
;
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#property(lowered final core::int #this, core::int value) → void
;
-static method Extension|method(lowered final core::int* #this) → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
;
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => self2::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => self2::Extension|method(#this);
+static get topLevelProperty() → core::int
;
-static set topLevelProperty(core::int* value) → void
+static set topLevelProperty(core::int value) → void
;
static method topLevelMethod() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
index bc5853f..3769826 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
@@ -7,12 +7,12 @@
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension;
static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+ final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
core::bool* :is_sync = false;
dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
+ (dynamic) → dynamic :async_op_then;
+ (core::Object, core::StackTrace) → dynamic :async_op_error;
+ core::int :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
@@ -32,25 +32,25 @@
asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
return;
}
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+ on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
}
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
+ :async_op(null, null){() → dynamic};
:is_sync = true;
return :async_future;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -60,27 +60,27 @@
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
-static field core::int* Extension|staticField = 0;
-static field core::int* topLevelField = def::Extension|staticField;
-static get Extension|staticProperty() → core::int*
+static field core::int Extension|staticField = 0;
+static field core::int topLevelField = def::Extension|staticField;
+static get Extension|staticProperty() → core::int
return def::Extension|staticField;
-static set Extension|staticProperty(core::int* value) → void {
+static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|staticMethod() → core::int*
+static method Extension|staticMethod() → core::int
return def::Extension|staticField;
-static method Extension|get#property(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
+static method Extension|get#property(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
-static method Extension|method(lowered final core::int* #this) → core::int*
- return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
-static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
- return () → core::int* => def::Extension|method(#this);
-static get topLevelProperty() → core::int*
+static method Extension|method(lowered final core::int #this) → core::int
+ return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
+static method Extension|get#method(lowered final core::int #this) → () → core::int
+ return () → core::int => def::Extension|method(#this);
+static get topLevelProperty() → core::int
return def::Extension|staticField;
-static set topLevelProperty(core::int* value) → void {
+static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart b/pkg/front_end/testcases/extensions/direct_instance_access.dart
index f7368f0..9634d9d 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {
var field;
}
@@ -67,11 +67,11 @@
}
class GenericClass<T> {
- T field;
+ T? field;
}
extension GenericExtension<T> on GenericClass<T> {
- T readGetter() {
+ T? readGetter() {
return property;
}
@@ -79,11 +79,11 @@
property = value;
}
- writeSetterOptional([T value]) {
+ writeSetterOptional([T? value]) {
property = value;
}
- writeSetterNamed({T value}) {
+ writeSetterNamed({T? value}) {
property = value;
}
@@ -91,17 +91,17 @@
property = value;
}
- genericWriteSetterOptional<S extends T>([S value]) {
+ genericWriteSetterOptional<S extends T>([S? value]) {
property = value;
}
- genericWriteSetterNamed<S extends T>({S value}) {
+ genericWriteSetterNamed<S extends T>({S? value}) {
property = value;
}
- T get property => this.field;
+ T? get property => this.field;
- void set property(T value) {
+ void set property(T? value) {
this.field = value;
}
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline.expect
index 2ce2827..2d6c602 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
var field;
}
@@ -20,19 +19,19 @@
}
class GenericClass<T> {
- T field;
+ T? field;
}
extension GenericExtension<T> on GenericClass<T> {
- T readGetter() {}
+ T? readGetter() {}
writeSetterRequired(T value) {}
- writeSetterOptional([T value]) {}
- writeSetterNamed({T value}) {}
+ writeSetterOptional([T? value]) {}
+ writeSetterNamed({T? value}) {}
genericWriteSetterRequired<S extends T>(S value) {}
- genericWriteSetterOptional<S extends T>([S value]) {}
- genericWriteSetterNamed<S extends T>({S value}) {}
- T get property => this.field;
- void set property(T value) {}
+ genericWriteSetterOptional<S extends T>([S? value]) {}
+ genericWriteSetterNamed<S extends T>({S? value}) {}
+ T? get property => this.field;
+ void set property(T? value) {}
get tearOffGetterNoArgs => readGetter;
get tearOffGetterRequired => writeSetterRequired;
get tearOffGetterOptional => writeSetterOptional;
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline_modelled.expect
index 00f7edc..f282455 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.textual_outline_modelled.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
class Class {
var field;
}
class GenericClass<T> {
- T field;
+ T? field;
}
extension Extension on Class {
@@ -24,10 +23,10 @@
}
extension GenericExtension<T> on GenericClass<T> {
- T get property => this.field;
- T readGetter() {}
- genericWriteSetterNamed<S extends T>({S value}) {}
- genericWriteSetterOptional<S extends T>([S value]) {}
+ T? get property => this.field;
+ T? readGetter() {}
+ genericWriteSetterNamed<S extends T>({S? value}) {}
+ genericWriteSetterOptional<S extends T>([S? value]) {}
genericWriteSetterRequired<S extends T>(S value) {}
get tearOffGetterGenericNamed => genericWriteSetterNamed;
get tearOffGetterGenericOptional => genericWriteSetterOptional;
@@ -39,9 +38,9 @@
getterCalls<S extends T>(S value) {}
invocations<S extends T>(S value) {}
tearOffs<S extends T>(S value) {}
- void set property(T value) {}
- writeSetterNamed({T value}) {}
- writeSetterOptional([T value]) {}
+ void set property(T? value) {}
+ writeSetterNamed({T? value}) {}
+ writeSetterOptional([T? value]) {}
writeSetterRequired(T value) {}
}
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect
index d892e0f..68d2b7e 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.expect
@@ -1,40 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field = null;
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- covariant-by-class field self::GenericClass::T* field = null;
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ covariant-by-class field self::GenericClass::T? field = null;
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -56,7 +36,7 @@
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -87,40 +67,40 @@
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
-static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
-static method Extension|readGetter(lowered final self::Class* #this) → dynamic {
+static method Extension|readGetter(lowered final self::Class #this) → dynamic {
return self::Extension|get#property(#this);
}
-static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
-static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value = #C1]) → dynamic {
+static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value = #C1]) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value = #C1]) → dynamic => self::Extension|writeSetterOptional(#this, value);
-static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value = #C1}) → dynamic {
+static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value = #C1}) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
+static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value = #C1}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
-static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
return self::Extension|get#readGetter(#this);
-static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterRequired(#this);
-static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterOptional(#this);
-static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterNamed(#this);
-static method Extension|get#property(lowered final self::Class* #this) → dynamic
+static method Extension|get#property(lowered final self::Class #this) → dynamic
return #this.{self::Class::field}{dynamic};
-static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
+static method Extension|set#property(lowered final self::Class #this, dynamic value) → void {
#this.{self::Class::field} = value;
}
-static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|readGetter(#this);
self::Extension|writeSetterRequired(#this, value);
self::Extension|writeSetterOptional(#this);
@@ -128,23 +108,23 @@
self::Extension|writeSetterNamed(#this);
self::Extension|writeSetterNamed(#this, value: value);
}
-static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
-static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
-static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
- () →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic {
+ () → dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
}
-static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
@@ -152,144 +132,144 @@
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
}
-static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
-static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T* {
- return self::GenericExtension|get#property<self::GenericExtension|readGetter::T*>(#this);
+static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T? {
+ return self::GenericExtension|get#property<self::GenericExtension|readGetter::T%>(#this);
}
-static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
- return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
-static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T*>(#this, value);
+static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
+ return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
+static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
- return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
-static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value = #C1]) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T*>(#this, value);
+static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
+ return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
+static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value = #C1]) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
- return ([self::GenericExtension|get#writeSetterOptional::T* value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
-static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value = #C1}) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T*>(#this, value);
+static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
+ return ([self::GenericExtension|get#writeSetterOptional::T? value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
+static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value = #C1}) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
- return ({self::GenericExtension|get#writeSetterNamed::T* value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
-static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T*>(#this, value);
+static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
+ return ({self::GenericExtension|get#writeSetterNamed::T? value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
+static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T%>(#this, value);
}
-static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
-static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T*>(#this, value);
+static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
+static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T%>(#this, value);
}
-static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
-static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
-static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
+static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
+static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
+static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T%>(#this, value);
}
-static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
- return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
-static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T?};
+static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void {
#this.{self::GenericClass::field} = value;
}
-static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
- return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T*>(#this);
-static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T*>(#this);
-static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T*>(#this);
-static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T*>(#this);
-static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic {
- self::GenericExtension|readGetter<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this, value: value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value: value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
+static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
+ return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T%>(#this);
+static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T%>(#this);
+static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T%>(#this);
+static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T%>(#this);
+static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic {
+ self::GenericExtension|readGetter<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
}
-static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
-static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
- () →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
- tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
- (self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
- tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
- ([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
- tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- ({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
- tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
- genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
- genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
+static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
+static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic {
+ () → self::GenericExtension|tearOffs::T? tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffNoArgs(){() → self::GenericExtension|tearOffs::T?};
+ (self::GenericExtension|tearOffs::T%) → dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffRequired(value){(self::GenericExtension|tearOffs::T%) → dynamic};
+ ([self::GenericExtension|tearOffs::T?]) → dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffOptional(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ tearOffOptional(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ ({value: self::GenericExtension|tearOffs::T?}) → dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffNamed(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>(S%) → dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
+ genericTearOffRequired<self::GenericExtension|tearOffs::T%>(value){(self::GenericExtension|tearOffs::T%) → dynamic};
+ genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>([S?]) → dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>({value: S?}) → dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
}
-static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
-static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
- self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
+static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
+static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic {
+ self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value: value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value: value);
}
-static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
+static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.modular.expect
index d892e0f..68d2b7e 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.modular.expect
@@ -1,40 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field = null;
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- covariant-by-class field self::GenericClass::T* field = null;
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ covariant-by-class field self::GenericClass::T? field = null;
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -56,7 +36,7 @@
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -87,40 +67,40 @@
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
-static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
-static method Extension|readGetter(lowered final self::Class* #this) → dynamic {
+static method Extension|readGetter(lowered final self::Class #this) → dynamic {
return self::Extension|get#property(#this);
}
-static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
-static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value = #C1]) → dynamic {
+static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value = #C1]) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value = #C1]) → dynamic => self::Extension|writeSetterOptional(#this, value);
-static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value = #C1}) → dynamic {
+static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value = #C1}) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
+static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value = #C1}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
-static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
return self::Extension|get#readGetter(#this);
-static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterRequired(#this);
-static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterOptional(#this);
-static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterNamed(#this);
-static method Extension|get#property(lowered final self::Class* #this) → dynamic
+static method Extension|get#property(lowered final self::Class #this) → dynamic
return #this.{self::Class::field}{dynamic};
-static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
+static method Extension|set#property(lowered final self::Class #this, dynamic value) → void {
#this.{self::Class::field} = value;
}
-static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|readGetter(#this);
self::Extension|writeSetterRequired(#this, value);
self::Extension|writeSetterOptional(#this);
@@ -128,23 +108,23 @@
self::Extension|writeSetterNamed(#this);
self::Extension|writeSetterNamed(#this, value: value);
}
-static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
-static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
-static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
- () →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic {
+ () → dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
}
-static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
@@ -152,144 +132,144 @@
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
}
-static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
-static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T* {
- return self::GenericExtension|get#property<self::GenericExtension|readGetter::T*>(#this);
+static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T? {
+ return self::GenericExtension|get#property<self::GenericExtension|readGetter::T%>(#this);
}
-static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
- return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
-static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T*>(#this, value);
+static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
+ return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
+static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
- return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
-static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value = #C1]) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T*>(#this, value);
+static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
+ return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
+static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value = #C1]) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
- return ([self::GenericExtension|get#writeSetterOptional::T* value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
-static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value = #C1}) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T*>(#this, value);
+static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
+ return ([self::GenericExtension|get#writeSetterOptional::T? value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
+static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value = #C1}) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
- return ({self::GenericExtension|get#writeSetterNamed::T* value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
-static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T*>(#this, value);
+static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
+ return ({self::GenericExtension|get#writeSetterNamed::T? value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
+static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T%>(#this, value);
}
-static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
-static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T*>(#this, value);
+static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
+static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T%>(#this, value);
}
-static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
-static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
-static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
+static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
+static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
+static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T%>(#this, value);
}
-static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
- return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
-static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T?};
+static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void {
#this.{self::GenericClass::field} = value;
}
-static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
- return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T*>(#this);
-static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T*>(#this);
-static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T*>(#this);
-static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T*>(#this);
-static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic {
- self::GenericExtension|readGetter<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this, value: value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value: value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
+static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
+ return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T%>(#this);
+static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T%>(#this);
+static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T%>(#this);
+static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T%>(#this);
+static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic {
+ self::GenericExtension|readGetter<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
}
-static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
-static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
- () →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
- tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
- (self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
- tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
- ([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
- tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- ({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
- tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
- genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
- genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
+static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
+static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic {
+ () → self::GenericExtension|tearOffs::T? tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffNoArgs(){() → self::GenericExtension|tearOffs::T?};
+ (self::GenericExtension|tearOffs::T%) → dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffRequired(value){(self::GenericExtension|tearOffs::T%) → dynamic};
+ ([self::GenericExtension|tearOffs::T?]) → dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffOptional(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ tearOffOptional(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ ({value: self::GenericExtension|tearOffs::T?}) → dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffNamed(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>(S%) → dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
+ genericTearOffRequired<self::GenericExtension|tearOffs::T%>(value){(self::GenericExtension|tearOffs::T%) → dynamic};
+ genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>([S?]) → dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>({value: S?}) → dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
}
-static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
-static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
- self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
+static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
+static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic {
+ self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value: value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value: value);
}
-static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
+static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.outline.expect
index c697396..293acc8 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.outline.expect
@@ -1,38 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field;
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- covariant-by-class field self::GenericClass::T* field;
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ covariant-by-class field self::GenericClass::T? field;
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -54,7 +34,7 @@
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -85,103 +65,103 @@
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
-static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
-static method Extension|readGetter(lowered final self::Class* #this) → dynamic
+static method Extension|readGetter(lowered final self::Class #this) → dynamic
;
-static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic
+static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic
;
-static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
-static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value]) → dynamic
+static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value]) → dynamic
;
-static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value]) → dynamic => self::Extension|writeSetterOptional(#this, value);
-static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value}) → dynamic
+static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value}) → dynamic
;
-static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
+static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
-static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
;
-static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
;
-static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
;
-static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
;
-static method Extension|get#property(lowered final self::Class* #this) → dynamic
+static method Extension|get#property(lowered final self::Class #this) → dynamic
;
-static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void
+static method Extension|set#property(lowered final self::Class #this, dynamic value) → void
;
-static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic
+static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic
;
-static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
-static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
-static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic
+static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic
;
-static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic
+static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic
;
-static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
-static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T*
+static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T?
;
-static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
- return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
-static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic
+static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
+ return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
+static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic
;
-static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
- return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
-static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value]) → dynamic
+static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
+ return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
+static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value]) → dynamic
;
-static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
- return ([self::GenericExtension|get#writeSetterOptional::T* value]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
-static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value}) → dynamic
+static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
+ return ([self::GenericExtension|get#writeSetterOptional::T? value]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
+static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value}) → dynamic
;
-static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
- return ({self::GenericExtension|get#writeSetterNamed::T* value}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
-static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic
+static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
+ return ({self::GenericExtension|get#writeSetterNamed::T? value}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
+static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic
;
-static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
-static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value]) → dynamic
+static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
+static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value]) → dynamic
;
-static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
-static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
-static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value}) → dynamic
+static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
+static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
+static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value}) → dynamic
;
-static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
;
-static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void
+static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void
;
-static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
;
-static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
;
-static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
;
-static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
;
-static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
;
-static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
;
-static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
+static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
;
-static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic
+static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic
;
-static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
-static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic
+static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
+static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic
;
-static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
-static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic
+static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
+static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic
;
-static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
+static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect
index d892e0f..68d2b7e 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.weak.transformed.expect
@@ -1,40 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field = null;
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- covariant-by-class field self::GenericClass::T* field = null;
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ covariant-by-class field self::GenericClass::T? field = null;
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -56,7 +36,7 @@
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -87,40 +67,40 @@
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
-static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
-static method Extension|readGetter(lowered final self::Class* #this) → dynamic {
+static method Extension|readGetter(lowered final self::Class #this) → dynamic {
return self::Extension|get#property(#this);
}
-static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
-static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value = #C1]) → dynamic {
+static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value = #C1]) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
+static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value = #C1]) → dynamic => self::Extension|writeSetterOptional(#this, value);
-static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value = #C1}) → dynamic {
+static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value = #C1}) → dynamic {
self::Extension|set#property(#this, value);
}
-static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
+static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value = #C1}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
-static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
return self::Extension|get#readGetter(#this);
-static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterRequired(#this);
-static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterOptional(#this);
-static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
+static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterNamed(#this);
-static method Extension|get#property(lowered final self::Class* #this) → dynamic
+static method Extension|get#property(lowered final self::Class #this) → dynamic
return #this.{self::Class::field}{dynamic};
-static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
+static method Extension|set#property(lowered final self::Class #this, dynamic value) → void {
#this.{self::Class::field} = value;
}
-static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|readGetter(#this);
self::Extension|writeSetterRequired(#this, value);
self::Extension|writeSetterOptional(#this);
@@ -128,23 +108,23 @@
self::Extension|writeSetterNamed(#this);
self::Extension|writeSetterNamed(#this, value: value);
}
-static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
-static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
-static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
- () →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
+static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic {
+ () → dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
}
-static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
+static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
@@ -152,144 +132,144 @@
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
}
-static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
-static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T* {
- return self::GenericExtension|get#property<self::GenericExtension|readGetter::T*>(#this);
+static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T? {
+ return self::GenericExtension|get#property<self::GenericExtension|readGetter::T%>(#this);
}
-static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
- return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
-static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T*>(#this, value);
+static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
+ return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
+static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
- return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
-static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value = #C1]) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T*>(#this, value);
+static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
+ return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
+static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value = #C1]) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
- return ([self::GenericExtension|get#writeSetterOptional::T* value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
-static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value = #C1}) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T*>(#this, value);
+static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
+ return ([self::GenericExtension|get#writeSetterOptional::T? value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
+static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value = #C1}) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T%>(#this, value);
}
-static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
- return ({self::GenericExtension|get#writeSetterNamed::T* value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
-static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T*>(#this, value);
+static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
+ return ({self::GenericExtension|get#writeSetterNamed::T? value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
+static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T%>(#this, value);
}
-static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
-static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T*>(#this, value);
+static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
+static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T%>(#this, value);
}
-static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
-static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
- return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
-static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
- self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
+static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
+static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
+ return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
+static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
+ self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T%>(#this, value);
}
-static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
- return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
-static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T?};
+static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void {
#this.{self::GenericClass::field} = value;
}
-static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
- return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T*>(#this);
-static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T*>(#this);
-static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T*>(#this);
-static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
- return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T*>(#this);
-static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
- return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T*>(#this);
-static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic {
- self::GenericExtension|readGetter<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this, value: value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
- self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value: value);
- self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
+static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
+ return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T%>(#this);
+static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T%>(#this);
+static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T%>(#this);
+static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
+ return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T%>(#this);
+static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
+ return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T%>(#this);
+static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic {
+ self::GenericExtension|readGetter<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
+ self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value: value);
+ self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
}
-static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
-static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
- () →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
- tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
- (self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
- tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
- ([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
- tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- ({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
- tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
- genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
- genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
- genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
- <S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
- genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
+static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
+static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic {
+ () → self::GenericExtension|tearOffs::T? tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffNoArgs(){() → self::GenericExtension|tearOffs::T?};
+ (self::GenericExtension|tearOffs::T%) → dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffRequired(value){(self::GenericExtension|tearOffs::T%) → dynamic};
+ ([self::GenericExtension|tearOffs::T?]) → dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffOptional(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ tearOffOptional(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ ({value: self::GenericExtension|tearOffs::T?}) → dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
+ tearOffNamed(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>(S%) → dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
+ genericTearOffRequired<self::GenericExtension|tearOffs::T%>(value){(self::GenericExtension|tearOffs::T%) → dynamic};
+ genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>([S?]) → dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::T%>(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
+ genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
+ <S extends self::GenericExtension|tearOffs::T% = dynamic>({value: S?}) → dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::T%>(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
+ genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
}
-static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
-static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
- self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
- self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
- self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
- self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
+static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
+static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic {
+ self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
+ self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
+ self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value: value);
+ self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value: value);
}
-static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
- return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
+static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
+ return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart b/pkg/front_end/testcases/extensions/direct_static_access.dart
index 4529483..4260abf 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class<T> {
static var field;
}
@@ -36,11 +36,11 @@
property = value;
}
- static genericWriteSetterOptional<S>([S value]) {
+ static genericWriteSetterOptional<S>([S? value]) {
property = value;
}
- static genericWriteSetterNamed<S>({S value}) {
+ static genericWriteSetterNamed<S>({S? value}) {
property = value;
}
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline.expect
index e8420b5..bd96cbe 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T> {
static var field;
}
@@ -12,8 +11,8 @@
static writeSetterOptional([value]) {}
static writeSetterNamed({value}) {}
static genericWriteSetterRequired<S>(S value) {}
- static genericWriteSetterOptional<S>([S value]) {}
- static genericWriteSetterNamed<S>({S value}) {}
+ static genericWriteSetterOptional<S>([S? value]) {}
+ static genericWriteSetterNamed<S>({S? value}) {}
static get tearOffGetterNoArgs => readGetter;
static get tearOffGetterRequired => writeSetterRequired;
static get tearOffGetterOptional => writeSetterOptional;
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline_modelled.expect
index 8fc0c10..b978413 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T> {
static var field;
}
@@ -8,8 +7,8 @@
getterCallsFromInstanceContext(T value) {}
invocationsFromInstanceContext(T value) {}
static fieldAccessFromStaticContext() {}
- static genericWriteSetterNamed<S>({S value}) {}
- static genericWriteSetterOptional<S>([S value]) {}
+ static genericWriteSetterNamed<S>({S? value}) {}
+ static genericWriteSetterOptional<S>([S? value]) {}
static genericWriteSetterRequired<S>(S value) {}
static get property => Class.field;
static get tearOffGetterGenericNamed => genericWriteSetterNamed;
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect
index 942973c..cb65d7c 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
+class Class<T extends core::Object? = dynamic> extends core::Object {
static field dynamic field = null;
- synthetic constructor •() → self::Class<self::Class::T*>*
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
static get property = get self::Extension|property;
static field field = self::Extension|field;
static method readGetter = self::Extension|readGetter;
@@ -67,13 +57,13 @@
static method Extension|writeSetterNamed({dynamic value = #C1}) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterRequired<S extends core::Object* = dynamic>(self::Extension|genericWriteSetterRequired::S* value) → dynamic {
+static method Extension|genericWriteSetterRequired<S extends core::Object? = dynamic>(self::Extension|genericWriteSetterRequired::S% value) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterOptional<S extends core::Object* = dynamic>([self::Extension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
+static method Extension|genericWriteSetterOptional<S extends core::Object? = dynamic>([self::Extension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterNamed<S extends core::Object* = dynamic>({self::Extension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
+static method Extension|genericWriteSetterNamed<S extends core::Object? = dynamic>({self::Extension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
self::Extension|property = value;
}
static get Extension|tearOffGetterNoArgs() → dynamic
@@ -90,54 +80,54 @@
return #C7;
static get Extension|tearOffGetterGenericNamed() → dynamic
return #C8;
-static method Extension|invocationsFromStaticContext(core::int* value) → dynamic {
+static method Extension|invocationsFromStaticContext(core::int value) → dynamic {
self::Extension|readGetter();
self::Extension|writeSetterRequired(value);
self::Extension|writeSetterOptional();
self::Extension|writeSetterOptional(value);
self::Extension|writeSetterNamed();
self::Extension|writeSetterNamed(value: value);
- self::Extension|genericWriteSetterRequired<core::int*>(value);
- self::Extension|genericWriteSetterRequired<core::int*>(value);
+ self::Extension|genericWriteSetterRequired<core::int>(value);
+ self::Extension|genericWriteSetterRequired<core::int>(value);
self::Extension|genericWriteSetterOptional<dynamic>();
- self::Extension|genericWriteSetterOptional<core::int*>();
- self::Extension|genericWriteSetterOptional<core::int*>(value);
- self::Extension|genericWriteSetterOptional<core::int*>(value);
+ self::Extension|genericWriteSetterOptional<core::int>();
+ self::Extension|genericWriteSetterOptional<core::int>(value);
+ self::Extension|genericWriteSetterOptional<core::int>(value);
self::Extension|genericWriteSetterNamed<dynamic>();
- self::Extension|genericWriteSetterNamed<core::int*>();
- self::Extension|genericWriteSetterNamed<core::int*>(value: value);
- self::Extension|genericWriteSetterNamed<core::int*>(value: value);
+ self::Extension|genericWriteSetterNamed<core::int>();
+ self::Extension|genericWriteSetterNamed<core::int>(value: value);
+ self::Extension|genericWriteSetterNamed<core::int>(value: value);
}
-static method Extension|tearOffsFromStaticContext(core::int* value) → dynamic {
- () →* dynamic tearOffNoArgs = #C2;
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = #C3;
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = #C4;
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = #C5;
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
- <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
- tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
- tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
- <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
- tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
- tearOffGenericOptional<core::int*>(){([core::int*]) →* dynamic};
- tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
- tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
- <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
- tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
- tearOffGenericNamed<core::int*>(){({value: core::int*}) →* dynamic};
- tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
- tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
+static method Extension|tearOffsFromStaticContext(core::int value) → dynamic {
+ () → dynamic tearOffNoArgs = #C2;
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = #C3;
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = #C4;
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = #C5;
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
+ <S extends core::Object? = dynamic>(S%) → dynamic tearOffGenericRequired = #C6;
+ tearOffGenericRequired<core::int>(value){(core::int) → dynamic};
+ tearOffGenericRequired<core::int>(value){(core::int) → dynamic};
+ <S extends core::Object? = dynamic>([S?]) → dynamic tearOffGenericOptional = #C7;
+ tearOffGenericOptional<dynamic>(){([dynamic]) → dynamic};
+ tearOffGenericOptional<core::int>(){([core::int?]) → dynamic};
+ tearOffGenericOptional<core::int>(value){([core::int?]) → dynamic};
+ tearOffGenericOptional<core::int>(value){([core::int?]) → dynamic};
+ <S extends core::Object? = dynamic>({value: S?}) → dynamic tearOffGenericNamed = #C8;
+ tearOffGenericNamed<dynamic>(){({value: dynamic}) → dynamic};
+ tearOffGenericNamed<core::int>(){({value: core::int?}) → dynamic};
+ tearOffGenericNamed<core::int>(value: value){({value: core::int?}) → dynamic};
+ tearOffGenericNamed<core::int>(value: value){({value: core::int?}) → dynamic};
}
static method Extension|fieldAccessFromStaticContext() → dynamic {
self::Extension|field = self::Extension|property;
self::Extension|property = self::Extension|field;
}
-static method Extension|getterCallsFromStaticContext(core::int* value) → dynamic {
+static method Extension|getterCallsFromStaticContext(core::int value) → dynamic {
self::Extension|tearOffGetterNoArgs{dynamic}.call();
self::Extension|tearOffGetterRequired{dynamic}.call(value);
self::Extension|tearOffGetterOptional{dynamic}.call();
@@ -145,70 +135,70 @@
self::Extension|tearOffGetterNamed{dynamic}.call();
self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
- self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int*>(value);
+ self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int>(value);
self::Extension|tearOffGetterGenericOptional{dynamic}.call();
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>();
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int>();
self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>(value);
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int>(value);
self::Extension|tearOffGetterGenericNamed{dynamic}.call();
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>();
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int>();
self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>(value: value);
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int>(value: value);
}
-static method Extension|invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T*>* #this, self::Extension|invocationsFromInstanceContext::T* value) → dynamic {
+static method Extension|invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T%> #this, self::Extension|invocationsFromInstanceContext::T% value) → dynamic {
self::Extension|readGetter();
self::Extension|writeSetterRequired(value);
self::Extension|writeSetterOptional();
self::Extension|writeSetterOptional(value);
self::Extension|writeSetterNamed();
self::Extension|writeSetterNamed(value: value);
- self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T*>(value);
- self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T*>(value);
+ self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T%>(value);
+ self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T%>(value);
self::Extension|genericWriteSetterOptional<dynamic>();
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>();
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>(value);
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>(value);
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>();
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>(value);
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>(value);
self::Extension|genericWriteSetterNamed<dynamic>();
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>();
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>(value: value);
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>(value: value);
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>();
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>(value: value);
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>(value: value);
}
-static method Extension|get#invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T*>* #this) → (self::Extension|get#invocationsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#invocationsFromInstanceContext::T* value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T*>(#this, value);
-static method Extension|tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T*>* #this, self::Extension|tearOffsFromInstanceContext::T* value) → dynamic {
- () →* dynamic tearOffNoArgs = #C2;
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = #C3;
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = #C4;
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = #C5;
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
- <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
- tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
- tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
- <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
- tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
- tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
+static method Extension|get#invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T%> #this) → (self::Extension|get#invocationsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#invocationsFromInstanceContext::T% value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T%>(#this, value);
+static method Extension|tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T%> #this, self::Extension|tearOffsFromInstanceContext::T% value) → dynamic {
+ () → dynamic tearOffNoArgs = #C2;
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = #C3;
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = #C4;
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = #C5;
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
+ <S extends core::Object? = dynamic>(S%) → dynamic tearOffGenericRequired = #C6;
+ tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T%>(value){(self::Extension|tearOffsFromInstanceContext::T%) → dynamic};
+ tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T%>(value){(self::Extension|tearOffsFromInstanceContext::T%) → dynamic};
+ <S extends core::Object? = dynamic>([S?]) → dynamic tearOffGenericOptional = #C7;
+ tearOffGenericOptional<dynamic>(){([dynamic]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(value){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(value){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ <S extends core::Object? = dynamic>({value: S?}) → dynamic tearOffGenericNamed = #C8;
+ tearOffGenericNamed<dynamic>(){({value: dynamic}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
}
-static method Extension|get#tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T*>* #this) → (self::Extension|get#tearOffsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#tearOffsFromInstanceContext::T* value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T*>(#this, value);
-static method Extension|fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T*>* #this) → dynamic {
+static method Extension|get#tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T%> #this) → (self::Extension|get#tearOffsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#tearOffsFromInstanceContext::T% value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T%>(#this, value);
+static method Extension|fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T%> #this) → dynamic {
self::Extension|field = self::Extension|property;
self::Extension|property = self::Extension|field;
}
-static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T*>(#this);
-static method Extension|getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T*>* #this, self::Extension|getterCallsFromInstanceContext::T* value) → dynamic {
+static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T%> #this) → () → dynamic
+ return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T%>(#this);
+static method Extension|getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T%> #this, self::Extension|getterCallsFromInstanceContext::T% value) → dynamic {
self::Extension|tearOffGetterNoArgs{dynamic}.call();
self::Extension|tearOffGetterRequired{dynamic}.call(value);
self::Extension|tearOffGetterOptional{dynamic}.call();
@@ -216,18 +206,18 @@
self::Extension|tearOffGetterNamed{dynamic}.call();
self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
- self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+ self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value);
self::Extension|tearOffGetterGenericOptional{dynamic}.call();
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>();
self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value);
self::Extension|tearOffGetterGenericNamed{dynamic}.call();
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>();
self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value: value);
}
-static method Extension|get#getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T*>* #this) → (self::Extension|get#getterCallsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#getterCallsFromInstanceContext::T* value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T*>(#this, value);
+static method Extension|get#getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T%> #this) → (self::Extension|get#getterCallsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#getterCallsFromInstanceContext::T% value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T%>(#this, value);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.modular.expect
index 942973c..cb65d7c 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.modular.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
+class Class<T extends core::Object? = dynamic> extends core::Object {
static field dynamic field = null;
- synthetic constructor •() → self::Class<self::Class::T*>*
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
static get property = get self::Extension|property;
static field field = self::Extension|field;
static method readGetter = self::Extension|readGetter;
@@ -67,13 +57,13 @@
static method Extension|writeSetterNamed({dynamic value = #C1}) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterRequired<S extends core::Object* = dynamic>(self::Extension|genericWriteSetterRequired::S* value) → dynamic {
+static method Extension|genericWriteSetterRequired<S extends core::Object? = dynamic>(self::Extension|genericWriteSetterRequired::S% value) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterOptional<S extends core::Object* = dynamic>([self::Extension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
+static method Extension|genericWriteSetterOptional<S extends core::Object? = dynamic>([self::Extension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterNamed<S extends core::Object* = dynamic>({self::Extension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
+static method Extension|genericWriteSetterNamed<S extends core::Object? = dynamic>({self::Extension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
self::Extension|property = value;
}
static get Extension|tearOffGetterNoArgs() → dynamic
@@ -90,54 +80,54 @@
return #C7;
static get Extension|tearOffGetterGenericNamed() → dynamic
return #C8;
-static method Extension|invocationsFromStaticContext(core::int* value) → dynamic {
+static method Extension|invocationsFromStaticContext(core::int value) → dynamic {
self::Extension|readGetter();
self::Extension|writeSetterRequired(value);
self::Extension|writeSetterOptional();
self::Extension|writeSetterOptional(value);
self::Extension|writeSetterNamed();
self::Extension|writeSetterNamed(value: value);
- self::Extension|genericWriteSetterRequired<core::int*>(value);
- self::Extension|genericWriteSetterRequired<core::int*>(value);
+ self::Extension|genericWriteSetterRequired<core::int>(value);
+ self::Extension|genericWriteSetterRequired<core::int>(value);
self::Extension|genericWriteSetterOptional<dynamic>();
- self::Extension|genericWriteSetterOptional<core::int*>();
- self::Extension|genericWriteSetterOptional<core::int*>(value);
- self::Extension|genericWriteSetterOptional<core::int*>(value);
+ self::Extension|genericWriteSetterOptional<core::int>();
+ self::Extension|genericWriteSetterOptional<core::int>(value);
+ self::Extension|genericWriteSetterOptional<core::int>(value);
self::Extension|genericWriteSetterNamed<dynamic>();
- self::Extension|genericWriteSetterNamed<core::int*>();
- self::Extension|genericWriteSetterNamed<core::int*>(value: value);
- self::Extension|genericWriteSetterNamed<core::int*>(value: value);
+ self::Extension|genericWriteSetterNamed<core::int>();
+ self::Extension|genericWriteSetterNamed<core::int>(value: value);
+ self::Extension|genericWriteSetterNamed<core::int>(value: value);
}
-static method Extension|tearOffsFromStaticContext(core::int* value) → dynamic {
- () →* dynamic tearOffNoArgs = #C2;
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = #C3;
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = #C4;
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = #C5;
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
- <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
- tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
- tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
- <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
- tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
- tearOffGenericOptional<core::int*>(){([core::int*]) →* dynamic};
- tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
- tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
- <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
- tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
- tearOffGenericNamed<core::int*>(){({value: core::int*}) →* dynamic};
- tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
- tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
+static method Extension|tearOffsFromStaticContext(core::int value) → dynamic {
+ () → dynamic tearOffNoArgs = #C2;
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = #C3;
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = #C4;
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = #C5;
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
+ <S extends core::Object? = dynamic>(S%) → dynamic tearOffGenericRequired = #C6;
+ tearOffGenericRequired<core::int>(value){(core::int) → dynamic};
+ tearOffGenericRequired<core::int>(value){(core::int) → dynamic};
+ <S extends core::Object? = dynamic>([S?]) → dynamic tearOffGenericOptional = #C7;
+ tearOffGenericOptional<dynamic>(){([dynamic]) → dynamic};
+ tearOffGenericOptional<core::int>(){([core::int?]) → dynamic};
+ tearOffGenericOptional<core::int>(value){([core::int?]) → dynamic};
+ tearOffGenericOptional<core::int>(value){([core::int?]) → dynamic};
+ <S extends core::Object? = dynamic>({value: S?}) → dynamic tearOffGenericNamed = #C8;
+ tearOffGenericNamed<dynamic>(){({value: dynamic}) → dynamic};
+ tearOffGenericNamed<core::int>(){({value: core::int?}) → dynamic};
+ tearOffGenericNamed<core::int>(value: value){({value: core::int?}) → dynamic};
+ tearOffGenericNamed<core::int>(value: value){({value: core::int?}) → dynamic};
}
static method Extension|fieldAccessFromStaticContext() → dynamic {
self::Extension|field = self::Extension|property;
self::Extension|property = self::Extension|field;
}
-static method Extension|getterCallsFromStaticContext(core::int* value) → dynamic {
+static method Extension|getterCallsFromStaticContext(core::int value) → dynamic {
self::Extension|tearOffGetterNoArgs{dynamic}.call();
self::Extension|tearOffGetterRequired{dynamic}.call(value);
self::Extension|tearOffGetterOptional{dynamic}.call();
@@ -145,70 +135,70 @@
self::Extension|tearOffGetterNamed{dynamic}.call();
self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
- self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int*>(value);
+ self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int>(value);
self::Extension|tearOffGetterGenericOptional{dynamic}.call();
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>();
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int>();
self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>(value);
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int>(value);
self::Extension|tearOffGetterGenericNamed{dynamic}.call();
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>();
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int>();
self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>(value: value);
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int>(value: value);
}
-static method Extension|invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T*>* #this, self::Extension|invocationsFromInstanceContext::T* value) → dynamic {
+static method Extension|invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T%> #this, self::Extension|invocationsFromInstanceContext::T% value) → dynamic {
self::Extension|readGetter();
self::Extension|writeSetterRequired(value);
self::Extension|writeSetterOptional();
self::Extension|writeSetterOptional(value);
self::Extension|writeSetterNamed();
self::Extension|writeSetterNamed(value: value);
- self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T*>(value);
- self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T*>(value);
+ self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T%>(value);
+ self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T%>(value);
self::Extension|genericWriteSetterOptional<dynamic>();
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>();
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>(value);
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>(value);
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>();
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>(value);
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>(value);
self::Extension|genericWriteSetterNamed<dynamic>();
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>();
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>(value: value);
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>(value: value);
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>();
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>(value: value);
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>(value: value);
}
-static method Extension|get#invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T*>* #this) → (self::Extension|get#invocationsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#invocationsFromInstanceContext::T* value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T*>(#this, value);
-static method Extension|tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T*>* #this, self::Extension|tearOffsFromInstanceContext::T* value) → dynamic {
- () →* dynamic tearOffNoArgs = #C2;
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = #C3;
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = #C4;
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = #C5;
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
- <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
- tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
- tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
- <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
- tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
- tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
+static method Extension|get#invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T%> #this) → (self::Extension|get#invocationsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#invocationsFromInstanceContext::T% value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T%>(#this, value);
+static method Extension|tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T%> #this, self::Extension|tearOffsFromInstanceContext::T% value) → dynamic {
+ () → dynamic tearOffNoArgs = #C2;
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = #C3;
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = #C4;
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = #C5;
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
+ <S extends core::Object? = dynamic>(S%) → dynamic tearOffGenericRequired = #C6;
+ tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T%>(value){(self::Extension|tearOffsFromInstanceContext::T%) → dynamic};
+ tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T%>(value){(self::Extension|tearOffsFromInstanceContext::T%) → dynamic};
+ <S extends core::Object? = dynamic>([S?]) → dynamic tearOffGenericOptional = #C7;
+ tearOffGenericOptional<dynamic>(){([dynamic]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(value){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(value){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ <S extends core::Object? = dynamic>({value: S?}) → dynamic tearOffGenericNamed = #C8;
+ tearOffGenericNamed<dynamic>(){({value: dynamic}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
}
-static method Extension|get#tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T*>* #this) → (self::Extension|get#tearOffsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#tearOffsFromInstanceContext::T* value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T*>(#this, value);
-static method Extension|fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T*>* #this) → dynamic {
+static method Extension|get#tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T%> #this) → (self::Extension|get#tearOffsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#tearOffsFromInstanceContext::T% value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T%>(#this, value);
+static method Extension|fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T%> #this) → dynamic {
self::Extension|field = self::Extension|property;
self::Extension|property = self::Extension|field;
}
-static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T*>(#this);
-static method Extension|getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T*>* #this, self::Extension|getterCallsFromInstanceContext::T* value) → dynamic {
+static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T%> #this) → () → dynamic
+ return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T%>(#this);
+static method Extension|getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T%> #this, self::Extension|getterCallsFromInstanceContext::T% value) → dynamic {
self::Extension|tearOffGetterNoArgs{dynamic}.call();
self::Extension|tearOffGetterRequired{dynamic}.call(value);
self::Extension|tearOffGetterOptional{dynamic}.call();
@@ -216,18 +206,18 @@
self::Extension|tearOffGetterNamed{dynamic}.call();
self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
- self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+ self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value);
self::Extension|tearOffGetterGenericOptional{dynamic}.call();
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>();
self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value);
self::Extension|tearOffGetterGenericNamed{dynamic}.call();
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>();
self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value: value);
}
-static method Extension|get#getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T*>* #this) → (self::Extension|get#getterCallsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#getterCallsFromInstanceContext::T* value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T*>(#this, value);
+static method Extension|get#getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T%> #this) → (self::Extension|get#getterCallsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#getterCallsFromInstanceContext::T% value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T%>(#this, value);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.outline.expect
index 4453608..0f7ea93 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.outline.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
+class Class<T extends core::Object? = dynamic> extends core::Object {
static field dynamic field;
- synthetic constructor •() → self::Class<self::Class::T*>*
+ synthetic constructor •() → self::Class<self::Class::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
static get property = get self::Extension|property;
static field field = self::Extension|field;
static method readGetter = self::Extension|readGetter;
@@ -61,11 +51,11 @@
;
static method Extension|writeSetterNamed({dynamic value}) → dynamic
;
-static method Extension|genericWriteSetterRequired<S extends core::Object* = dynamic>(self::Extension|genericWriteSetterRequired::S* value) → dynamic
+static method Extension|genericWriteSetterRequired<S extends core::Object? = dynamic>(self::Extension|genericWriteSetterRequired::S% value) → dynamic
;
-static method Extension|genericWriteSetterOptional<S extends core::Object* = dynamic>([self::Extension|genericWriteSetterOptional::S* value]) → dynamic
+static method Extension|genericWriteSetterOptional<S extends core::Object? = dynamic>([self::Extension|genericWriteSetterOptional::S? value]) → dynamic
;
-static method Extension|genericWriteSetterNamed<S extends core::Object* = dynamic>({self::Extension|genericWriteSetterNamed::S* value}) → dynamic
+static method Extension|genericWriteSetterNamed<S extends core::Object? = dynamic>({self::Extension|genericWriteSetterNamed::S? value}) → dynamic
;
static get Extension|tearOffGetterNoArgs() → dynamic
;
@@ -81,29 +71,29 @@
;
static get Extension|tearOffGetterGenericNamed() → dynamic
;
-static method Extension|invocationsFromStaticContext(core::int* value) → dynamic
+static method Extension|invocationsFromStaticContext(core::int value) → dynamic
;
-static method Extension|tearOffsFromStaticContext(core::int* value) → dynamic
+static method Extension|tearOffsFromStaticContext(core::int value) → dynamic
;
static method Extension|fieldAccessFromStaticContext() → dynamic
;
-static method Extension|getterCallsFromStaticContext(core::int* value) → dynamic
+static method Extension|getterCallsFromStaticContext(core::int value) → dynamic
;
-static method Extension|invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T*>* #this, self::Extension|invocationsFromInstanceContext::T* value) → dynamic
+static method Extension|invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T%> #this, self::Extension|invocationsFromInstanceContext::T% value) → dynamic
;
-static method Extension|get#invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T*>* #this) → (self::Extension|get#invocationsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#invocationsFromInstanceContext::T* value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T*>(#this, value);
-static method Extension|tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T*>* #this, self::Extension|tearOffsFromInstanceContext::T* value) → dynamic
+static method Extension|get#invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T%> #this) → (self::Extension|get#invocationsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#invocationsFromInstanceContext::T% value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T%>(#this, value);
+static method Extension|tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T%> #this, self::Extension|tearOffsFromInstanceContext::T% value) → dynamic
;
-static method Extension|get#tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T*>* #this) → (self::Extension|get#tearOffsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#tearOffsFromInstanceContext::T* value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T*>(#this, value);
-static method Extension|fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T*>* #this) → dynamic
+static method Extension|get#tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T%> #this) → (self::Extension|get#tearOffsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#tearOffsFromInstanceContext::T% value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T%>(#this, value);
+static method Extension|fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T%> #this) → dynamic
;
-static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T*>(#this);
-static method Extension|getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T*>* #this, self::Extension|getterCallsFromInstanceContext::T* value) → dynamic
+static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T%> #this) → () → dynamic
+ return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T%>(#this);
+static method Extension|getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T%> #this, self::Extension|getterCallsFromInstanceContext::T% value) → dynamic
;
-static method Extension|get#getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T*>* #this) → (self::Extension|get#getterCallsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#getterCallsFromInstanceContext::T* value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T*>(#this, value);
+static method Extension|get#getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T%> #this) → (self::Extension|get#getterCallsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#getterCallsFromInstanceContext::T% value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T%>(#this, value);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect
index 942973c..cb65d7c 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.weak.transformed.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
+class Class<T extends core::Object? = dynamic> extends core::Object {
static field dynamic field = null;
- synthetic constructor •() → self::Class<self::Class::T*>*
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
static get property = get self::Extension|property;
static field field = self::Extension|field;
static method readGetter = self::Extension|readGetter;
@@ -67,13 +57,13 @@
static method Extension|writeSetterNamed({dynamic value = #C1}) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterRequired<S extends core::Object* = dynamic>(self::Extension|genericWriteSetterRequired::S* value) → dynamic {
+static method Extension|genericWriteSetterRequired<S extends core::Object? = dynamic>(self::Extension|genericWriteSetterRequired::S% value) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterOptional<S extends core::Object* = dynamic>([self::Extension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
+static method Extension|genericWriteSetterOptional<S extends core::Object? = dynamic>([self::Extension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
self::Extension|property = value;
}
-static method Extension|genericWriteSetterNamed<S extends core::Object* = dynamic>({self::Extension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
+static method Extension|genericWriteSetterNamed<S extends core::Object? = dynamic>({self::Extension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
self::Extension|property = value;
}
static get Extension|tearOffGetterNoArgs() → dynamic
@@ -90,54 +80,54 @@
return #C7;
static get Extension|tearOffGetterGenericNamed() → dynamic
return #C8;
-static method Extension|invocationsFromStaticContext(core::int* value) → dynamic {
+static method Extension|invocationsFromStaticContext(core::int value) → dynamic {
self::Extension|readGetter();
self::Extension|writeSetterRequired(value);
self::Extension|writeSetterOptional();
self::Extension|writeSetterOptional(value);
self::Extension|writeSetterNamed();
self::Extension|writeSetterNamed(value: value);
- self::Extension|genericWriteSetterRequired<core::int*>(value);
- self::Extension|genericWriteSetterRequired<core::int*>(value);
+ self::Extension|genericWriteSetterRequired<core::int>(value);
+ self::Extension|genericWriteSetterRequired<core::int>(value);
self::Extension|genericWriteSetterOptional<dynamic>();
- self::Extension|genericWriteSetterOptional<core::int*>();
- self::Extension|genericWriteSetterOptional<core::int*>(value);
- self::Extension|genericWriteSetterOptional<core::int*>(value);
+ self::Extension|genericWriteSetterOptional<core::int>();
+ self::Extension|genericWriteSetterOptional<core::int>(value);
+ self::Extension|genericWriteSetterOptional<core::int>(value);
self::Extension|genericWriteSetterNamed<dynamic>();
- self::Extension|genericWriteSetterNamed<core::int*>();
- self::Extension|genericWriteSetterNamed<core::int*>(value: value);
- self::Extension|genericWriteSetterNamed<core::int*>(value: value);
+ self::Extension|genericWriteSetterNamed<core::int>();
+ self::Extension|genericWriteSetterNamed<core::int>(value: value);
+ self::Extension|genericWriteSetterNamed<core::int>(value: value);
}
-static method Extension|tearOffsFromStaticContext(core::int* value) → dynamic {
- () →* dynamic tearOffNoArgs = #C2;
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = #C3;
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = #C4;
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = #C5;
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
- <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
- tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
- tearOffGenericRequired<core::int*>(value){(core::int*) →* dynamic};
- <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
- tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
- tearOffGenericOptional<core::int*>(){([core::int*]) →* dynamic};
- tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
- tearOffGenericOptional<core::int*>(value){([core::int*]) →* dynamic};
- <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
- tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
- tearOffGenericNamed<core::int*>(){({value: core::int*}) →* dynamic};
- tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
- tearOffGenericNamed<core::int*>(value: value){({value: core::int*}) →* dynamic};
+static method Extension|tearOffsFromStaticContext(core::int value) → dynamic {
+ () → dynamic tearOffNoArgs = #C2;
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = #C3;
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = #C4;
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = #C5;
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
+ <S extends core::Object? = dynamic>(S%) → dynamic tearOffGenericRequired = #C6;
+ tearOffGenericRequired<core::int>(value){(core::int) → dynamic};
+ tearOffGenericRequired<core::int>(value){(core::int) → dynamic};
+ <S extends core::Object? = dynamic>([S?]) → dynamic tearOffGenericOptional = #C7;
+ tearOffGenericOptional<dynamic>(){([dynamic]) → dynamic};
+ tearOffGenericOptional<core::int>(){([core::int?]) → dynamic};
+ tearOffGenericOptional<core::int>(value){([core::int?]) → dynamic};
+ tearOffGenericOptional<core::int>(value){([core::int?]) → dynamic};
+ <S extends core::Object? = dynamic>({value: S?}) → dynamic tearOffGenericNamed = #C8;
+ tearOffGenericNamed<dynamic>(){({value: dynamic}) → dynamic};
+ tearOffGenericNamed<core::int>(){({value: core::int?}) → dynamic};
+ tearOffGenericNamed<core::int>(value: value){({value: core::int?}) → dynamic};
+ tearOffGenericNamed<core::int>(value: value){({value: core::int?}) → dynamic};
}
static method Extension|fieldAccessFromStaticContext() → dynamic {
self::Extension|field = self::Extension|property;
self::Extension|property = self::Extension|field;
}
-static method Extension|getterCallsFromStaticContext(core::int* value) → dynamic {
+static method Extension|getterCallsFromStaticContext(core::int value) → dynamic {
self::Extension|tearOffGetterNoArgs{dynamic}.call();
self::Extension|tearOffGetterRequired{dynamic}.call(value);
self::Extension|tearOffGetterOptional{dynamic}.call();
@@ -145,70 +135,70 @@
self::Extension|tearOffGetterNamed{dynamic}.call();
self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
- self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int*>(value);
+ self::Extension|tearOffGetterGenericRequired{dynamic}.call<core::int>(value);
self::Extension|tearOffGetterGenericOptional{dynamic}.call();
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>();
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int>();
self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int*>(value);
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<core::int>(value);
self::Extension|tearOffGetterGenericNamed{dynamic}.call();
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>();
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int>();
self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int*>(value: value);
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<core::int>(value: value);
}
-static method Extension|invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T*>* #this, self::Extension|invocationsFromInstanceContext::T* value) → dynamic {
+static method Extension|invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|invocationsFromInstanceContext::T%> #this, self::Extension|invocationsFromInstanceContext::T% value) → dynamic {
self::Extension|readGetter();
self::Extension|writeSetterRequired(value);
self::Extension|writeSetterOptional();
self::Extension|writeSetterOptional(value);
self::Extension|writeSetterNamed();
self::Extension|writeSetterNamed(value: value);
- self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T*>(value);
- self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T*>(value);
+ self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T%>(value);
+ self::Extension|genericWriteSetterRequired<self::Extension|invocationsFromInstanceContext::T%>(value);
self::Extension|genericWriteSetterOptional<dynamic>();
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>();
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>(value);
- self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T*>(value);
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>();
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>(value);
+ self::Extension|genericWriteSetterOptional<self::Extension|invocationsFromInstanceContext::T%>(value);
self::Extension|genericWriteSetterNamed<dynamic>();
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>();
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>(value: value);
- self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T*>(value: value);
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>();
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>(value: value);
+ self::Extension|genericWriteSetterNamed<self::Extension|invocationsFromInstanceContext::T%>(value: value);
}
-static method Extension|get#invocationsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T*>* #this) → (self::Extension|get#invocationsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#invocationsFromInstanceContext::T* value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T*>(#this, value);
-static method Extension|tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T*>* #this, self::Extension|tearOffsFromInstanceContext::T* value) → dynamic {
- () →* dynamic tearOffNoArgs = #C2;
- tearOffNoArgs(){() →* dynamic};
- (dynamic) →* dynamic tearOffRequired = #C3;
- tearOffRequired(value){(dynamic) →* dynamic};
- ([dynamic]) →* dynamic tearOffOptional = #C4;
- tearOffOptional(){([dynamic]) →* dynamic};
- tearOffOptional(value){([dynamic]) →* dynamic};
- ({value: dynamic}) →* dynamic tearOffNamed = #C5;
- tearOffNamed(){({value: dynamic}) →* dynamic};
- tearOffNamed(value: value){({value: dynamic}) →* dynamic};
- <S extends core::Object* = dynamic>(S*) →* dynamic tearOffGenericRequired = #C6;
- tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
- tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T*>(value){(self::Extension|tearOffsFromInstanceContext::T*) →* dynamic};
- <S extends core::Object* = dynamic>([S*]) →* dynamic tearOffGenericOptional = #C7;
- tearOffGenericOptional<dynamic>(){([dynamic]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T*>(value){([self::Extension|tearOffsFromInstanceContext::T*]) →* dynamic};
- <S extends core::Object* = dynamic>({value: S*}) →* dynamic tearOffGenericNamed = #C8;
- tearOffGenericNamed<dynamic>(){({value: dynamic}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
- tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T*>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T*}) →* dynamic};
+static method Extension|get#invocationsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#invocationsFromInstanceContext::T%> #this) → (self::Extension|get#invocationsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#invocationsFromInstanceContext::T% value) → dynamic => self::Extension|invocationsFromInstanceContext<self::Extension|get#invocationsFromInstanceContext::T%>(#this, value);
+static method Extension|tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|tearOffsFromInstanceContext::T%> #this, self::Extension|tearOffsFromInstanceContext::T% value) → dynamic {
+ () → dynamic tearOffNoArgs = #C2;
+ tearOffNoArgs(){() → dynamic};
+ (dynamic) → dynamic tearOffRequired = #C3;
+ tearOffRequired(value){(dynamic) → dynamic};
+ ([dynamic]) → dynamic tearOffOptional = #C4;
+ tearOffOptional(){([dynamic]) → dynamic};
+ tearOffOptional(value){([dynamic]) → dynamic};
+ ({value: dynamic}) → dynamic tearOffNamed = #C5;
+ tearOffNamed(){({value: dynamic}) → dynamic};
+ tearOffNamed(value: value){({value: dynamic}) → dynamic};
+ <S extends core::Object? = dynamic>(S%) → dynamic tearOffGenericRequired = #C6;
+ tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T%>(value){(self::Extension|tearOffsFromInstanceContext::T%) → dynamic};
+ tearOffGenericRequired<self::Extension|tearOffsFromInstanceContext::T%>(value){(self::Extension|tearOffsFromInstanceContext::T%) → dynamic};
+ <S extends core::Object? = dynamic>([S?]) → dynamic tearOffGenericOptional = #C7;
+ tearOffGenericOptional<dynamic>(){([dynamic]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(value){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ tearOffGenericOptional<self::Extension|tearOffsFromInstanceContext::T%>(value){([self::Extension|tearOffsFromInstanceContext::T?]) → dynamic};
+ <S extends core::Object? = dynamic>({value: S?}) → dynamic tearOffGenericNamed = #C8;
+ tearOffGenericNamed<dynamic>(){({value: dynamic}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
+ tearOffGenericNamed<self::Extension|tearOffsFromInstanceContext::T%>(value: value){({value: self::Extension|tearOffsFromInstanceContext::T?}) → dynamic};
}
-static method Extension|get#tearOffsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T*>* #this) → (self::Extension|get#tearOffsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#tearOffsFromInstanceContext::T* value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T*>(#this, value);
-static method Extension|fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T*>* #this) → dynamic {
+static method Extension|get#tearOffsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#tearOffsFromInstanceContext::T%> #this) → (self::Extension|get#tearOffsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#tearOffsFromInstanceContext::T% value) → dynamic => self::Extension|tearOffsFromInstanceContext<self::Extension|get#tearOffsFromInstanceContext::T%>(#this, value);
+static method Extension|fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|fieldAccessFromInstanceContext::T%> #this) → dynamic {
self::Extension|field = self::Extension|property;
self::Extension|property = self::Extension|field;
}
-static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T*>(#this);
-static method Extension|getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T*>* #this, self::Extension|getterCallsFromInstanceContext::T* value) → dynamic {
+static method Extension|get#fieldAccessFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#fieldAccessFromInstanceContext::T%> #this) → () → dynamic
+ return () → dynamic => self::Extension|fieldAccessFromInstanceContext<self::Extension|get#fieldAccessFromInstanceContext::T%>(#this);
+static method Extension|getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|getterCallsFromInstanceContext::T%> #this, self::Extension|getterCallsFromInstanceContext::T% value) → dynamic {
self::Extension|tearOffGetterNoArgs{dynamic}.call();
self::Extension|tearOffGetterRequired{dynamic}.call(value);
self::Extension|tearOffGetterOptional{dynamic}.call();
@@ -216,18 +206,18 @@
self::Extension|tearOffGetterNamed{dynamic}.call();
self::Extension|tearOffGetterNamed{dynamic}.call(value: value);
self::Extension|tearOffGetterGenericRequired{dynamic}.call(value);
- self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+ self::Extension|tearOffGetterGenericRequired{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value);
self::Extension|tearOffGetterGenericOptional{dynamic}.call();
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>();
self::Extension|tearOffGetterGenericOptional{dynamic}.call(value);
- self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value);
+ self::Extension|tearOffGetterGenericOptional{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value);
self::Extension|tearOffGetterGenericNamed{dynamic}.call();
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>();
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>();
self::Extension|tearOffGetterGenericNamed{dynamic}.call(value: value);
- self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T*>(value: value);
+ self::Extension|tearOffGetterGenericNamed{dynamic}.call<self::Extension|getterCallsFromInstanceContext::T%>(value: value);
}
-static method Extension|get#getterCallsFromInstanceContext<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T*>* #this) → (self::Extension|get#getterCallsFromInstanceContext::T*) →* dynamic
- return (self::Extension|get#getterCallsFromInstanceContext::T* value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T*>(#this, value);
+static method Extension|get#getterCallsFromInstanceContext<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#getterCallsFromInstanceContext::T%> #this) → (self::Extension|get#getterCallsFromInstanceContext::T%) → dynamic
+ return (self::Extension|get#getterCallsFromInstanceContext::T% value) → dynamic => self::Extension|getterCallsFromInstanceContext<self::Extension|get#getterCallsFromInstanceContext::T%>(#this, value);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart b/pkg/front_end/testcases/extensions/dynamic_invoke.dart
index c449576..bd327b7 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {
noSuchMethod(Invocation i) => 123;
}
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline.expect
index de6b9c9..5ee7ab2 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
noSuchMethod(Invocation i) => 123;
}
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline_modelled.expect
index ab98ca8..df09e5e 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
noSuchMethod(Invocation i) => 123;
}
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect
index 8289cb4..7f2c062 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.expect
@@ -1,24 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- method noSuchMethod(core::Invocation* i) → dynamic
+ method noSuchMethod(core::Invocation i) → dynamic
return 123;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
method method = self::ClassExtension|method;
tearoff method = self::ClassExtension|get#method;
}
@@ -26,24 +17,24 @@
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method ClassExtension|method(lowered final self::Class* #this) → core::int*
+static method ClassExtension|method(lowered final self::Class #this) → core::int
return 42;
-static method ClassExtension|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::ClassExtension|method(#this);
-static method Extension|method(lowered final dynamic #this) → core::int*
+static method ClassExtension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::ClassExtension|method(#this);
+static method Extension|method(lowered final dynamic #this) → core::int
return 87;
-static method Extension|get#method(lowered final dynamic #this) → () →* core::int*
- return () → core::int* => self::Extension|method(#this);
+static method Extension|get#method(lowered final dynamic #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
static method main() → dynamic {
dynamic c0 = new self::Class::•();
- core::Object* c1 = new self::Class::•();
- self::Class* c2 = new self::Class::•();
+ core::Object c1 = new self::Class::•();
+ self::Class c2 = new self::Class::•();
self::expect(123, c0{dynamic}.method());
self::expect(87, self::Extension|method(c1));
self::expect(42, self::ClassExtension|method(c2));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.modular.expect
index 8289cb4..7f2c062 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.modular.expect
@@ -1,24 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- method noSuchMethod(core::Invocation* i) → dynamic
+ method noSuchMethod(core::Invocation i) → dynamic
return 123;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
method method = self::ClassExtension|method;
tearoff method = self::ClassExtension|get#method;
}
@@ -26,24 +17,24 @@
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method ClassExtension|method(lowered final self::Class* #this) → core::int*
+static method ClassExtension|method(lowered final self::Class #this) → core::int
return 42;
-static method ClassExtension|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::ClassExtension|method(#this);
-static method Extension|method(lowered final dynamic #this) → core::int*
+static method ClassExtension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::ClassExtension|method(#this);
+static method Extension|method(lowered final dynamic #this) → core::int
return 87;
-static method Extension|get#method(lowered final dynamic #this) → () →* core::int*
- return () → core::int* => self::Extension|method(#this);
+static method Extension|get#method(lowered final dynamic #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
static method main() → dynamic {
dynamic c0 = new self::Class::•();
- core::Object* c1 = new self::Class::•();
- self::Class* c2 = new self::Class::•();
+ core::Object c1 = new self::Class::•();
+ self::Class c2 = new self::Class::•();
self::expect(123, c0{dynamic}.method());
self::expect(87, self::Extension|method(c1));
self::expect(42, self::ClassExtension|method(c2));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.outline.expect
index 1f8c07d..c33f586 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.outline.expect
@@ -1,23 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- method noSuchMethod(core::Invocation* i) → dynamic
+ method noSuchMethod(core::Invocation i) → dynamic
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
method method = self::ClassExtension|method;
tearoff method = self::ClassExtension|get#method;
}
@@ -25,14 +16,14 @@
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method ClassExtension|method(lowered final self::Class* #this) → core::int*
+static method ClassExtension|method(lowered final self::Class #this) → core::int
;
-static method ClassExtension|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::ClassExtension|method(#this);
-static method Extension|method(lowered final dynamic #this) → core::int*
+static method ClassExtension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::ClassExtension|method(#this);
+static method Extension|method(lowered final dynamic #this) → core::int
;
-static method Extension|get#method(lowered final dynamic #this) → () →* core::int*
- return () → core::int* => self::Extension|method(#this);
+static method Extension|get#method(lowered final dynamic #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
static method main() → dynamic
;
static method expect(dynamic expected, dynamic actual) → dynamic
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect
index 8289cb4..7f2c062 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.weak.transformed.expect
@@ -1,24 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- method noSuchMethod(core::Invocation* i) → dynamic
+ method noSuchMethod(core::Invocation i) → dynamic
return 123;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ClassExtension on self::Class* {
+extension ClassExtension on self::Class {
method method = self::ClassExtension|method;
tearoff method = self::ClassExtension|get#method;
}
@@ -26,24 +17,24 @@
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method ClassExtension|method(lowered final self::Class* #this) → core::int*
+static method ClassExtension|method(lowered final self::Class #this) → core::int
return 42;
-static method ClassExtension|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::ClassExtension|method(#this);
-static method Extension|method(lowered final dynamic #this) → core::int*
+static method ClassExtension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::ClassExtension|method(#this);
+static method Extension|method(lowered final dynamic #this) → core::int
return 87;
-static method Extension|get#method(lowered final dynamic #this) → () →* core::int*
- return () → core::int* => self::Extension|method(#this);
+static method Extension|get#method(lowered final dynamic #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
static method main() → dynamic {
dynamic c0 = new self::Class::•();
- core::Object* c1 = new self::Class::•();
- self::Class* c2 = new self::Class::•();
+ core::Object c1 = new self::Class::•();
+ self::Class c2 = new self::Class::•();
self::expect(123, c0{dynamic}.method());
self::expect(87, self::Extension|method(c1));
self::expect(42, self::ClassExtension|method(c2));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart b/pkg/front_end/testcases/extensions/explicit_extension_access.dart
index 88b2d04..dc5a1e5 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {
int field1 = 42;
int field2 = 87;
@@ -13,7 +13,7 @@
field1 = value;
}
int method() => field1;
- int genericMethod<T extends num>(T t) => field1 + t;
+ num genericMethod<T extends num>(T t) => field1 + t;
}
extension Extension2 on Class {
@@ -22,7 +22,7 @@
field2 = value;
}
int method() => field2;
- int genericMethod<T extends num>(T t) => field2 + t;
+ num genericMethod<T extends num>(T t) => field2 + t;
}
main() {
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline.expect
index 7d088c6..94ec7bc 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
int field1 = 42;
int field2 = 87;
@@ -8,14 +7,14 @@
int get field => field1;
void set field(int value) {}
int method() => field1;
- int genericMethod<T extends num>(T t) => field1 + t;
+ num genericMethod<T extends num>(T t) => field1 + t;
}
extension Extension2 on Class {
int get field => field2;
void set field(int value) {}
int method() => field2;
- int genericMethod<T extends num>(T t) => field2 + t;
+ num genericMethod<T extends num>(T t) => field2 + t;
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline_modelled.expect
index 6e3b6e5..a014681 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
int field1 = 42;
int field2 = 87;
@@ -7,16 +6,16 @@
expect(expected, actual) {}
extension Extension1 on Class {
- int genericMethod<T extends num>(T t) => field1 + t;
int get field => field1;
int method() => field1;
+ num genericMethod<T extends num>(T t) => field1 + t;
void set field(int value) {}
}
extension Extension2 on Class {
- int genericMethod<T extends num>(T t) => field2 + t;
int get field => field2;
int method() => field2;
+ num genericMethod<T extends num>(T t) => field2 + t;
void set field(int value) {}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect
index b2bd40c..4af2463 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field1 = 42;
- field core::int* field2 = 87;
- synthetic constructor •() → self::Class*
+ field core::int field1 = 42;
+ field core::int field2 = 87;
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get field = self::Extension1|get#field;
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
@@ -27,7 +17,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2 on self::Class* {
+extension Extension2 on self::Class {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -35,59 +25,59 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static method Extension1|get#field(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field1}{core::int*};
-static method Extension1|set#field(lowered final self::Class* #this, core::int* value) → void {
+static method Extension1|get#field(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field1}{core::int};
+static method Extension1|set#field(lowered final self::Class #this, core::int value) → void {
#this.{self::Class::field1} = value;
}
-static method Extension1|method(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field1}{core::int*};
-static method Extension1|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension1|genericMethod::T* t) → core::int*
- return #this.{self::Class::field1}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
-static method Extension1|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|get#field(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field2}{core::int*};
-static method Extension2|set#field(lowered final self::Class* #this, core::int* value) → void {
+static method Extension1|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field1}{core::int};
+static method Extension1|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension1|genericMethod::T t) → core::num
+ return #this.{self::Class::field1}{core::int}.{core::num::+}(t){(core::num) → core::num};
+static method Extension1|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|get#field(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field2}{core::int};
+static method Extension2|set#field(lowered final self::Class #this, core::int value) → void {
#this.{self::Class::field2} = value;
}
-static method Extension2|method(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field2}{core::int*};
-static method Extension2|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension2|genericMethod::T* t) → core::int*
- return #this.{self::Class::field2}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
-static method Extension2|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field2}{core::int};
+static method Extension2|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension2|genericMethod::T t) → core::num
+ return #this.{self::Class::field2}{core::int}.{core::num::+}(t){(core::num) → core::num};
+static method Extension2|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(42, self::Extension1|get#field(c));
self::expect(87, self::Extension2|get#field(c));
self::expect(42, self::Extension1|method(c));
self::expect(87, self::Extension2|method(c));
- () →* core::int* tearOff1 = self::Extension1|get#method(c);
- () →* core::int* tearOff2 = self::Extension2|get#method(c);
- self::expect(42, tearOff1(){() →* core::int*});
- self::expect(87, tearOff2(){() →* core::int*});
- self::expect(52, self::Extension1|genericMethod<core::int*>(c, 10));
- self::expect(97, self::Extension2|genericMethod<core::int*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::num*>(c, 10));
- self::expect(97, self::Extension2|genericMethod<core::num*>(c, 10));
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c);
- <T extends core::num*>(T*) →* core::int* genericTearOff2 = self::Extension2|get#genericMethod(c);
- self::expect(52, genericTearOff1<core::int*>(10){(core::int*) →* core::int*});
- self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::int*});
- self::expect(52, genericTearOff1<core::num*>(10){(core::num*) →* core::int*});
- self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::int*});
- self::expect(23, let final self::Class* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
- self::expect(67, let final self::Class* #t4 = c in let final core::int* #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
+ () → core::int tearOff1 = self::Extension1|get#method(c);
+ () → core::int tearOff2 = self::Extension2|get#method(c);
+ self::expect(42, tearOff1(){() → core::int});
+ self::expect(87, tearOff2(){() → core::int});
+ self::expect(52, self::Extension1|genericMethod<core::int>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::int>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::num>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num>(c, 10));
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension1|get#genericMethod(c);
+ <T extends core::num>(T) → core::num genericTearOff2 = self::Extension2|get#genericMethod(c);
+ self::expect(52, genericTearOff1<core::int>(10){(core::int) → core::num});
+ self::expect(97, genericTearOff2<core::int>(10){(core::int) → core::num});
+ self::expect(52, genericTearOff1<core::num>(10){(core::num) → core::num});
+ self::expect(97, genericTearOff2<core::num>(10){(core::num) → core::num});
+ self::expect(23, let final self::Class #t1 = c in let final core::int #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
+ self::expect(67, let final self::Class #t4 = c in let final core::int #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
self::expect(23, self::Extension1|get#field(c));
self::expect(67, self::Extension2|get#field(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.modular.expect
index b2bd40c..4af2463 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field1 = 42;
- field core::int* field2 = 87;
- synthetic constructor •() → self::Class*
+ field core::int field1 = 42;
+ field core::int field2 = 87;
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get field = self::Extension1|get#field;
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
@@ -27,7 +17,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2 on self::Class* {
+extension Extension2 on self::Class {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -35,59 +25,59 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static method Extension1|get#field(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field1}{core::int*};
-static method Extension1|set#field(lowered final self::Class* #this, core::int* value) → void {
+static method Extension1|get#field(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field1}{core::int};
+static method Extension1|set#field(lowered final self::Class #this, core::int value) → void {
#this.{self::Class::field1} = value;
}
-static method Extension1|method(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field1}{core::int*};
-static method Extension1|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension1|genericMethod::T* t) → core::int*
- return #this.{self::Class::field1}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
-static method Extension1|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|get#field(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field2}{core::int*};
-static method Extension2|set#field(lowered final self::Class* #this, core::int* value) → void {
+static method Extension1|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field1}{core::int};
+static method Extension1|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension1|genericMethod::T t) → core::num
+ return #this.{self::Class::field1}{core::int}.{core::num::+}(t){(core::num) → core::num};
+static method Extension1|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|get#field(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field2}{core::int};
+static method Extension2|set#field(lowered final self::Class #this, core::int value) → void {
#this.{self::Class::field2} = value;
}
-static method Extension2|method(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field2}{core::int*};
-static method Extension2|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension2|genericMethod::T* t) → core::int*
- return #this.{self::Class::field2}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
-static method Extension2|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field2}{core::int};
+static method Extension2|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension2|genericMethod::T t) → core::num
+ return #this.{self::Class::field2}{core::int}.{core::num::+}(t){(core::num) → core::num};
+static method Extension2|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(42, self::Extension1|get#field(c));
self::expect(87, self::Extension2|get#field(c));
self::expect(42, self::Extension1|method(c));
self::expect(87, self::Extension2|method(c));
- () →* core::int* tearOff1 = self::Extension1|get#method(c);
- () →* core::int* tearOff2 = self::Extension2|get#method(c);
- self::expect(42, tearOff1(){() →* core::int*});
- self::expect(87, tearOff2(){() →* core::int*});
- self::expect(52, self::Extension1|genericMethod<core::int*>(c, 10));
- self::expect(97, self::Extension2|genericMethod<core::int*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::num*>(c, 10));
- self::expect(97, self::Extension2|genericMethod<core::num*>(c, 10));
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c);
- <T extends core::num*>(T*) →* core::int* genericTearOff2 = self::Extension2|get#genericMethod(c);
- self::expect(52, genericTearOff1<core::int*>(10){(core::int*) →* core::int*});
- self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::int*});
- self::expect(52, genericTearOff1<core::num*>(10){(core::num*) →* core::int*});
- self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::int*});
- self::expect(23, let final self::Class* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
- self::expect(67, let final self::Class* #t4 = c in let final core::int* #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
+ () → core::int tearOff1 = self::Extension1|get#method(c);
+ () → core::int tearOff2 = self::Extension2|get#method(c);
+ self::expect(42, tearOff1(){() → core::int});
+ self::expect(87, tearOff2(){() → core::int});
+ self::expect(52, self::Extension1|genericMethod<core::int>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::int>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::num>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num>(c, 10));
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension1|get#genericMethod(c);
+ <T extends core::num>(T) → core::num genericTearOff2 = self::Extension2|get#genericMethod(c);
+ self::expect(52, genericTearOff1<core::int>(10){(core::int) → core::num});
+ self::expect(97, genericTearOff2<core::int>(10){(core::int) → core::num});
+ self::expect(52, genericTearOff1<core::num>(10){(core::num) → core::num});
+ self::expect(97, genericTearOff2<core::num>(10){(core::num) → core::num});
+ self::expect(23, let final self::Class #t1 = c in let final core::int #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
+ self::expect(67, let final self::Class #t4 = c in let final core::int #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
self::expect(23, self::Extension1|get#field(c));
self::expect(67, self::Extension2|get#field(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.outline.expect
index a5c90f6..28875a9 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.outline.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field1;
- field core::int* field2;
- synthetic constructor •() → self::Class*
+ field core::int field1;
+ field core::int field2;
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get field = self::Extension1|get#field;
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
@@ -26,7 +16,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2 on self::Class* {
+extension Extension2 on self::Class {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -34,30 +24,30 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static method Extension1|get#field(lowered final self::Class* #this) → core::int*
+static method Extension1|get#field(lowered final self::Class #this) → core::int
;
-static method Extension1|set#field(lowered final self::Class* #this, core::int* value) → void
+static method Extension1|set#field(lowered final self::Class #this, core::int value) → void
;
-static method Extension1|method(lowered final self::Class* #this) → core::int*
+static method Extension1|method(lowered final self::Class #this) → core::int
;
-static method Extension1|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension1|genericMethod::T* t) → core::int*
+static method Extension1|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension1|genericMethod::T t) → core::num
;
-static method Extension1|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|get#field(lowered final self::Class* #this) → core::int*
+static method Extension1|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|get#field(lowered final self::Class #this) → core::int
;
-static method Extension2|set#field(lowered final self::Class* #this, core::int* value) → void
+static method Extension2|set#field(lowered final self::Class #this, core::int value) → void
;
-static method Extension2|method(lowered final self::Class* #this) → core::int*
+static method Extension2|method(lowered final self::Class #this) → core::int
;
-static method Extension2|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension2|genericMethod::T* t) → core::int*
+static method Extension2|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension2|genericMethod::T t) → core::num
;
-static method Extension2|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic
;
static method expect(dynamic expected, dynamic actual) → dynamic
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect
index 5beead8..aac476a 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field1 = 42;
- field core::int* field2 = 87;
- synthetic constructor •() → self::Class*
+ field core::int field1 = 42;
+ field core::int field2 = 87;
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get field = self::Extension1|get#field;
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
@@ -27,7 +17,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2 on self::Class* {
+extension Extension2 on self::Class {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -35,59 +25,59 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static method Extension1|get#field(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field1}{core::int*};
-static method Extension1|set#field(lowered final self::Class* #this, core::int* value) → void {
+static method Extension1|get#field(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field1}{core::int};
+static method Extension1|set#field(lowered final self::Class #this, core::int value) → void {
#this.{self::Class::field1} = value;
}
-static method Extension1|method(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field1}{core::int*};
-static method Extension1|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension1|genericMethod::T* t) → core::int*
- return #this.{self::Class::field1}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
-static method Extension1|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|get#field(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field2}{core::int*};
-static method Extension2|set#field(lowered final self::Class* #this, core::int* value) → void {
+static method Extension1|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field1}{core::int};
+static method Extension1|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension1|genericMethod::T t) → core::num
+ return #this.{self::Class::field1}{core::int}.{core::num::+}(t){(core::num) → core::num};
+static method Extension1|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|get#field(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field2}{core::int};
+static method Extension2|set#field(lowered final self::Class #this, core::int value) → void {
#this.{self::Class::field2} = value;
}
-static method Extension2|method(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field2}{core::int*};
-static method Extension2|get#method(lowered final self::Class* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class* #this, self::Extension2|genericMethod::T* t) → core::int*
- return #this.{self::Class::field2}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
-static method Extension2|get#genericMethod(lowered final self::Class* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field2}{core::int};
+static method Extension2|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class #this, self::Extension2|genericMethod::T t) → core::num
+ return #this.{self::Class::field2}{core::int}.{core::num::+}(t){(core::num) → core::num};
+static method Extension2|get#genericMethod(lowered final self::Class #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(42, self::Extension1|get#field(c));
self::expect(87, self::Extension2|get#field(c));
self::expect(42, self::Extension1|method(c));
self::expect(87, self::Extension2|method(c));
- () →* core::int* tearOff1 = self::Extension1|get#method(c);
- () →* core::int* tearOff2 = self::Extension2|get#method(c);
- self::expect(42, tearOff1(){() →* core::int*});
- self::expect(87, tearOff2(){() →* core::int*});
- self::expect(52, self::Extension1|genericMethod<core::int*>(c, 10));
- self::expect(97, self::Extension2|genericMethod<core::int*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::num*>(c, 10));
- self::expect(97, self::Extension2|genericMethod<core::num*>(c, 10));
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c);
- <T extends core::num*>(T*) →* core::int* genericTearOff2 = self::Extension2|get#genericMethod(c);
- self::expect(52, genericTearOff1<core::int*>(10){(core::int*) →* core::int*});
- self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::int*});
- self::expect(52, genericTearOff1<core::num*>(10){(core::num*) →* core::int*});
- self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::int*});
- self::expect(23, let final self::Class* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
- self::expect(67, let final self::Class* #t4 = c in let final core::int* #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
+ () → core::int tearOff1 = self::Extension1|get#method(c);
+ () → core::int tearOff2 = self::Extension2|get#method(c);
+ self::expect(42, tearOff1(){() → core::int});
+ self::expect(87, tearOff2(){() → core::int});
+ self::expect(52, self::Extension1|genericMethod<core::int>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::int>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::num>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num>(c, 10));
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension1|get#genericMethod(c);
+ <T extends core::num>(T) → core::num genericTearOff2 = self::Extension2|get#genericMethod(c);
+ self::expect(52, genericTearOff1<core::int>(10){(core::int) → core::num});
+ self::expect(97, genericTearOff2<core::int>(10){(core::int) → core::num});
+ self::expect(52, genericTearOff1<core::num>(10){(core::num) → core::num});
+ self::expect(97, genericTearOff2<core::num>(10){(core::num) → core::num});
+ self::expect(23, let final self::Class #t1 = c in let final core::int #t2 = 23 in let final void #t3 = self::Extension1|set#field(#t1, #t2) in #t2);
+ self::expect(67, let final self::Class #t4 = c in let final core::int #t5 = 67 in let final void #t6 = self::Extension2|set#field(#t4, #t5) in #t5);
self::expect(23, self::Extension1|get#field(c));
self::expect(67, self::Extension2|get#field(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -98,4 +88,4 @@
Evaluated: VariableGet @ org-dartlang-testcase:///explicit_extension_access.dart:48:36 -> IntConstant(23)
Evaluated: VariableGet @ org-dartlang-testcase:///explicit_extension_access.dart:49:36 -> IntConstant(67)
Evaluated: VariableGet @ org-dartlang-testcase:///explicit_extension_access.dart:49:36 -> IntConstant(67)
-Extra constant evaluation: evaluated: 121, effectively constant: 4
+Extra constant evaluation: evaluated: 119, effectively constant: 4
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart
index a8ea3d7..55b65e2 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class A {}
class B extends A {}
class C extends B {}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart
new file mode 100644
index 0000000..cf078bd
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart
@@ -0,0 +1,92 @@
+// Copyright (c) 2019, 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 {}
+
+class B extends A {}
+
+class C extends B {}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T>? {
+ T? get property => null;
+
+ T? method(T? t) => null;
+
+ S? genericMethod1<S>(S? s) => null;
+}
+
+main() {
+ A? aVariable;
+ B? bVariable;
+ C? cVariable;
+
+ GenericClass<A> aClass = new GenericClass<A>();
+ GenericClass<B> bClass = new GenericClass<B>();
+ GenericClass<C> cClass = new GenericClass<C>();
+
+ aVariable = GenericExtension(aClass).property;
+ aVariable = GenericExtension<A>(aClass).property;
+
+ bVariable = GenericExtension(bClass).property;
+ aVariable = GenericExtension<A>(bClass).property;
+ bVariable = GenericExtension<B>(bClass).property;
+
+ cVariable = GenericExtension(cClass).property;
+ aVariable = GenericExtension<A>(cClass).property;
+ bVariable = GenericExtension<B>(cClass).property;
+ cVariable = GenericExtension<C>(cClass).property;
+
+ aVariable = GenericExtension(aClass).method(aVariable);
+ aVariable = GenericExtension<A>(aClass).method(aVariable);
+
+ bVariable = GenericExtension(bClass).method(bVariable);
+ aVariable = GenericExtension<A>(bClass).method(aVariable);
+ bVariable = GenericExtension<B>(bClass).method(bVariable);
+
+ cVariable = GenericExtension(cClass).method(cVariable);
+ aVariable = GenericExtension<A>(cClass).method(aVariable);
+ bVariable = GenericExtension<B>(cClass).method(bVariable);
+ cVariable = GenericExtension<C>(cClass).method(cVariable);
+
+ cVariable = GenericExtension(aClass).genericMethod1(cVariable);
+ aVariable = GenericExtension(aClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension(aClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension(aClass).genericMethod1<C>(cVariable);
+ cVariable = GenericExtension<A>(aClass).genericMethod1(cVariable);
+ aVariable = GenericExtension<A>(aClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension<A>(aClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension<A>(aClass).genericMethod1<C>(cVariable);
+
+ cVariable = GenericExtension(bClass).genericMethod1(cVariable);
+ aVariable = GenericExtension(bClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension(bClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension(bClass).genericMethod1<C>(cVariable);
+ cVariable = GenericExtension<A>(bClass).genericMethod1(cVariable);
+ aVariable = GenericExtension<A>(bClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension<A>(bClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension<A>(bClass).genericMethod1<C>(cVariable);
+ cVariable = GenericExtension<B>(bClass).genericMethod1(cVariable);
+ aVariable = GenericExtension<B>(bClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension<B>(bClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension<B>(bClass).genericMethod1<C>(cVariable);
+
+ cVariable = GenericExtension(cClass).genericMethod1(cVariable);
+ aVariable = GenericExtension(cClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension(cClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension(cClass).genericMethod1<C>(cVariable);
+ cVariable = GenericExtension<A>(cClass).genericMethod1(cVariable);
+ aVariable = GenericExtension<A>(cClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension<A>(cClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension<A>(cClass).genericMethod1<C>(cVariable);
+ cVariable = GenericExtension<B>(cClass).genericMethod1(cVariable);
+ aVariable = GenericExtension<B>(cClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension<B>(cClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension<B>(cClass).genericMethod1<C>(cVariable);
+ cVariable = GenericExtension<C>(cClass).genericMethod1(cVariable);
+ aVariable = GenericExtension<C>(cClass).genericMethod1<A>(cVariable);
+ bVariable = GenericExtension<C>(cClass).genericMethod1<B>(cVariable);
+ cVariable = GenericExtension<C>(cClass).genericMethod1<C>(cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.textual_outline.expect
new file mode 100644
index 0000000..3b9c293
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.textual_outline.expect
@@ -0,0 +1,15 @@
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T>? {
+ T? get property => null;
+ T? method(T? t) => null;
+ S? genericMethod1<S>(S? s) => null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0afc203
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.textual_outline_modelled.expect
@@ -0,0 +1,15 @@
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T>? {
+ S? genericMethod1<S>(S? s) => null;
+ T? get property => null;
+ T? method(T? t) => null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.expect
new file mode 100644
index 0000000..88c6eb7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.expect
@@ -0,0 +1,103 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ : super self::B::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%>? {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%>? #this) → self::GenericExtension|get#property::T?
+ return null;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%>? #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ return null;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%>? #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%>? #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ return null;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%>? #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic {
+ self::A? aVariable;
+ self::B? bVariable;
+ self::C? cVariable;
+ self::GenericClass<self::A> aClass = new self::GenericClass::•<self::A>();
+ self::GenericClass<self::B> bClass = new self::GenericClass::•<self::B>();
+ self::GenericClass<self::C> cClass = new self::GenericClass::•<self::C>();
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ aVariable = self::GenericExtension|get#property<self::A>(bClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|get#property<self::A>(cClass);
+ bVariable = self::GenericExtension|get#property<self::B>(cClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ aVariable = self::GenericExtension|method<self::A>(bClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|method<self::A>(cClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(cClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.modular.expect
new file mode 100644
index 0000000..88c6eb7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.modular.expect
@@ -0,0 +1,103 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ : super self::B::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%>? {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%>? #this) → self::GenericExtension|get#property::T?
+ return null;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%>? #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ return null;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%>? #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%>? #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ return null;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%>? #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic {
+ self::A? aVariable;
+ self::B? bVariable;
+ self::C? cVariable;
+ self::GenericClass<self::A> aClass = new self::GenericClass::•<self::A>();
+ self::GenericClass<self::B> bClass = new self::GenericClass::•<self::B>();
+ self::GenericClass<self::C> cClass = new self::GenericClass::•<self::C>();
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ aVariable = self::GenericExtension|get#property<self::A>(bClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|get#property<self::A>(cClass);
+ bVariable = self::GenericExtension|get#property<self::B>(cClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ aVariable = self::GenericExtension|method<self::A>(bClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|method<self::A>(cClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(cClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.outline.expect
new file mode 100644
index 0000000..056d4a3
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.outline.expect
@@ -0,0 +1,39 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%>? {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%>? #this) → self::GenericExtension|get#property::T?
+ ;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%>? #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ ;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%>? #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%>? #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ ;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%>? #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.transformed.expect
new file mode 100644
index 0000000..88c6eb7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference2.dart.weak.transformed.expect
@@ -0,0 +1,103 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ : super self::B::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%>? {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%>? #this) → self::GenericExtension|get#property::T?
+ return null;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%>? #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ return null;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%>? #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%>? #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ return null;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%>? #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic {
+ self::A? aVariable;
+ self::B? bVariable;
+ self::C? cVariable;
+ self::GenericClass<self::A> aClass = new self::GenericClass::•<self::A>();
+ self::GenericClass<self::B> bClass = new self::GenericClass::•<self::B>();
+ self::GenericClass<self::C> cClass = new self::GenericClass::•<self::C>();
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ aVariable = self::GenericExtension|get#property<self::A>(bClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|get#property<self::A>(cClass);
+ bVariable = self::GenericExtension|get#property<self::B>(cClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ aVariable = self::GenericExtension|method<self::A>(bClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|method<self::A>(cClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(cClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart
index 7cde52c..3cc9224 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class<T extends num> {
T field1;
T field2;
@@ -10,7 +10,7 @@
}
extension Extension1<T extends num> on Class<T> {
- static String latestType;
+ static String? latestType;
T get field {
latestType = '$T';
return field1;
@@ -25,7 +25,7 @@
}
T genericMethod<S extends num>(S t) {
latestType = '$T:$S';
- return field1 + t;
+ return (field1 + t) as T;
}
}
@@ -35,7 +35,7 @@
field2 = value;
}
T method() => field2;
- T genericMethod<S extends num>(S t) => field2 + t;
+ T genericMethod<S extends num>(S t) => (field2 + t) as T;
}
main() {
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline.expect
index 90dcfe1..f7cbe30 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T extends num> {
T field1;
T field2;
@@ -6,7 +5,7 @@
}
extension Extension1<T extends num> on Class<T> {
- static String latestType;
+ static String? latestType;
T get field {}
void set field(T value) {}
T method() {}
@@ -17,7 +16,7 @@
T get field => field2;
void set field(T value) {}
T method() => field2;
- T genericMethod<S extends num>(S t) => field2 + t;
+ T genericMethod<S extends num>(S t) => (field2 + t) as T;
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline_modelled.expect
index 11d1037..69276f1 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T extends num> {
Class(this.field1, this.field2);
T field1;
@@ -11,12 +10,12 @@
T genericMethod<S extends num>(S t) {}
T get field {}
T method() {}
- static String latestType;
+ static String? latestType;
void set field(T value) {}
}
extension Extension2<T extends num> on Class<T> {
- T genericMethod<S extends num>(S t) => field2 + t;
+ T genericMethod<S extends num>(S t) => (field2 + t) as T;
T get field => field2;
T method() => field2;
void set field(T value) {}
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect
index ad69a00..44f1f384 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::num*> extends core::Object {
- covariant-by-class field self::Class::T* field1;
- covariant-by-class field self::Class::T* field2;
- constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
+class Class<T extends core::num> extends core::Object {
+ covariant-by-class field self::Class::T field1;
+ covariant-by-class field self::Class::T field2;
+ constructor •(self::Class::T field1, self::Class::T field2) → self::Class<self::Class::T>
: self::Class::field1 = field1, self::Class::field2 = field2, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1<T extends core::num*> on self::Class<T*>* {
+extension Extension1<T extends core::num> on self::Class<T> {
static field latestType = self::Extension1|latestType;
get field = self::Extension1|get#field;
method method = self::Extension1|method;
@@ -28,7 +18,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2<T extends core::num*> on self::Class<T*>* {
+extension Extension2<T extends core::num> on self::Class<T> {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -36,99 +26,99 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static field core::String* Extension1|latestType;
-static method Extension1|get#field<T extends core::num*>(lowered final self::Class<self::Extension1|get#field::T*>* #this) → self::Extension1|get#field::T* {
- self::Extension1|latestType = "${self::Extension1|get#field::T*}";
- return #this.{self::Class::field1}{self::Extension1|get#field::T*};
+static field core::String? Extension1|latestType;
+static method Extension1|get#field<T extends core::num>(lowered final self::Class<self::Extension1|get#field::T> #this) → self::Extension1|get#field::T {
+ self::Extension1|latestType = "${self::Extension1|get#field::T}";
+ return #this.{self::Class::field1}{self::Extension1|get#field::T};
}
-static method Extension1|set#field<T extends core::num*>(lowered final self::Class<self::Extension1|set#field::T*>* #this, self::Extension1|set#field::T* value) → void {
- self::Extension1|latestType = "${self::Extension1|set#field::T*}";
+static method Extension1|set#field<T extends core::num>(lowered final self::Class<self::Extension1|set#field::T> #this, self::Extension1|set#field::T value) → void {
+ self::Extension1|latestType = "${self::Extension1|set#field::T}";
#this.{self::Class::field1} = value;
}
-static method Extension1|method<T extends core::num*>(lowered final self::Class<self::Extension1|method::T*>* #this) → self::Extension1|method::T* {
- self::Extension1|latestType = "${self::Extension1|method::T*}";
- return #this.{self::Class::field1}{self::Extension1|method::T*};
+static method Extension1|method<T extends core::num>(lowered final self::Class<self::Extension1|method::T> #this) → self::Extension1|method::T {
+ self::Extension1|latestType = "${self::Extension1|method::T}";
+ return #this.{self::Class::field1}{self::Extension1|method::T};
}
-static method Extension1|get#method<T extends core::num*>(lowered final self::Class<self::Extension1|get#method::T*>* #this) → () →* self::Extension1|get#method::T*
- return () → self::Extension1|get#method::T* => self::Extension1|method<self::Extension1|get#method::T*>(#this);
-static method Extension1|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension1|genericMethod::T*>* #this, self::Extension1|genericMethod::S* t) → self::Extension1|genericMethod::T* {
- self::Extension1|latestType = "${self::Extension1|genericMethod::T*}:${self::Extension1|genericMethod::S*}";
- return #this.{self::Class::field1}{self::Extension1|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension1|genericMethod::T*;
+static method Extension1|get#method<T extends core::num>(lowered final self::Class<self::Extension1|get#method::T> #this) → () → self::Extension1|get#method::T
+ return () → self::Extension1|get#method::T => self::Extension1|method<self::Extension1|get#method::T>(#this);
+static method Extension1|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension1|genericMethod::T> #this, self::Extension1|genericMethod::S t) → self::Extension1|genericMethod::T {
+ self::Extension1|latestType = "${self::Extension1|genericMethod::T}:${self::Extension1|genericMethod::S}";
+ return #this.{self::Class::field1}{self::Extension1|genericMethod::T}.{core::num::+}(t){(core::num) → core::num} as{ForNonNullableByDefault} self::Extension1|genericMethod::T;
}
-static method Extension1|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension1|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension1|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension1|get#genericMethod::T* => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T*, S*>(#this, t);
-static method Extension2|get#field<T extends core::num*>(lowered final self::Class<self::Extension2|get#field::T*>* #this) → self::Extension2|get#field::T*
- return #this.{self::Class::field2}{self::Extension2|get#field::T*};
-static method Extension2|set#field<T extends core::num*>(lowered final self::Class<self::Extension2|set#field::T*>* #this, self::Extension2|set#field::T* value) → void {
+static method Extension1|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension1|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension1|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension1|get#genericMethod::T => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T, S>(#this, t);
+static method Extension2|get#field<T extends core::num>(lowered final self::Class<self::Extension2|get#field::T> #this) → self::Extension2|get#field::T
+ return #this.{self::Class::field2}{self::Extension2|get#field::T};
+static method Extension2|set#field<T extends core::num>(lowered final self::Class<self::Extension2|set#field::T> #this, self::Extension2|set#field::T value) → void {
#this.{self::Class::field2} = value;
}
-static method Extension2|method<T extends core::num*>(lowered final self::Class<self::Extension2|method::T*>* #this) → self::Extension2|method::T*
- return #this.{self::Class::field2}{self::Extension2|method::T*};
-static method Extension2|get#method<T extends core::num*>(lowered final self::Class<self::Extension2|get#method::T*>* #this) → () →* self::Extension2|get#method::T*
- return () → self::Extension2|get#method::T* => self::Extension2|method<self::Extension2|get#method::T*>(#this);
-static method Extension2|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension2|genericMethod::T*>* #this, self::Extension2|genericMethod::S* t) → self::Extension2|genericMethod::T*
- return #this.{self::Class::field2}{self::Extension2|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension2|genericMethod::T*;
-static method Extension2|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension2|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension2|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension2|get#genericMethod::T* => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T*, S*>(#this, t);
+static method Extension2|method<T extends core::num>(lowered final self::Class<self::Extension2|method::T> #this) → self::Extension2|method::T
+ return #this.{self::Class::field2}{self::Extension2|method::T};
+static method Extension2|get#method<T extends core::num>(lowered final self::Class<self::Extension2|get#method::T> #this) → () → self::Extension2|get#method::T
+ return () → self::Extension2|get#method::T => self::Extension2|method<self::Extension2|get#method::T>(#this);
+static method Extension2|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension2|genericMethod::T> #this, self::Extension2|genericMethod::S t) → self::Extension2|genericMethod::T
+ return #this.{self::Class::field2}{self::Extension2|genericMethod::T}.{core::num::+}(t){(core::num) → core::num} as{ForNonNullableByDefault} self::Extension2|genericMethod::T;
+static method Extension2|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension2|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension2|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension2|get#genericMethod::T => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T, S>(#this, t);
static method main() → dynamic {
- self::Class<core::int*>* c = new self::Class::•<core::int*>(42, 87);
- self::expect(42, self::Extension1|get#field<core::num*>(c));
+ self::Class<core::int> c = new self::Class::•<core::int>(42, 87);
+ self::expect(42, self::Extension1|get#field<core::num>(c));
self::expect("num", self::Extension1|latestType);
- self::expect(42, self::Extension1|get#field<core::int*>(c));
+ self::expect(42, self::Extension1|get#field<core::int>(c));
self::expect("int", self::Extension1|latestType);
- self::expect(87, self::Extension2|get#field<core::num*>(c));
- self::expect(42, self::Extension1|method<core::num*>(c));
+ self::expect(87, self::Extension2|get#field<core::num>(c));
+ self::expect(42, self::Extension1|method<core::num>(c));
self::expect("num", self::Extension1|latestType);
- self::expect(42, self::Extension1|method<core::int*>(c));
+ self::expect(42, self::Extension1|method<core::int>(c));
self::expect("int", self::Extension1|latestType);
- self::expect(87, self::Extension2|method<core::num*>(c));
- () →* core::num* tearOffNumber1 = self::Extension1|get#method<core::num*>(c);
- () →* core::int* tearOffInteger1 = self::Extension1|get#method<core::int*>(c);
- () →* core::num* tearOff2 = self::Extension2|get#method<core::num*>(c);
- self::expect(42, tearOffNumber1(){() →* core::num*});
+ self::expect(87, self::Extension2|method<core::num>(c));
+ () → core::num tearOffNumber1 = self::Extension1|get#method<core::num>(c);
+ () → core::int tearOffInteger1 = self::Extension1|get#method<core::int>(c);
+ () → core::num tearOff2 = self::Extension2|get#method<core::num>(c);
+ self::expect(42, tearOffNumber1(){() → core::num});
self::expect("num", self::Extension1|latestType);
- self::expect(42, tearOffInteger1(){() →* core::int*});
+ self::expect(42, tearOffInteger1(){() → core::int});
self::expect("int", self::Extension1|latestType);
- self::expect(87, tearOff2(){() →* core::num*});
- self::expect(52, self::Extension1|genericMethod<core::num*, core::int*>(c, 10));
+ self::expect(87, tearOff2(){() → core::num});
+ self::expect(52, self::Extension1|genericMethod<core::num, core::int>(c, 10));
self::expect("num:int", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- self::expect(97, self::Extension2|genericMethod<core::num*, core::int*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::num*, core::num*>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num, core::int>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::num, core::num>(c, 10));
self::expect("num:num", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::num*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::num>(c, 10));
self::expect("int:num", self::Extension1|latestType);
- self::expect(97, self::Extension2|genericMethod<core::num*, core::num*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num, core::num>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::num*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::num>(c, 10));
self::expect("int:num", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- <S extends core::num*>(S*) →* core::num* genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num*>(c);
- <S extends core::num*>(S*) →* core::int* genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int*>(c);
- <S extends core::num*>(S*) →* core::num* genericTearOff2 = self::Extension2|get#genericMethod<core::num*>(c);
- self::expect(52, genericTearOffNumber1<core::int*>(10){(core::int*) →* core::num*});
+ <S extends core::num>(S) → core::num genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num>(c);
+ <S extends core::num>(S) → core::int genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int>(c);
+ <S extends core::num>(S) → core::num genericTearOff2 = self::Extension2|get#genericMethod<core::num>(c);
+ self::expect(52, genericTearOffNumber1<core::int>(10){(core::int) → core::num});
self::expect("num:int", self::Extension1|latestType);
- self::expect(52, genericTearOffInteger1<core::int*>(10){(core::int*) →* core::int*});
+ self::expect(52, genericTearOffInteger1<core::int>(10){(core::int) → core::int});
self::expect("int:int", self::Extension1|latestType);
- self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::num*});
- self::expect(52, genericTearOffNumber1<core::num*>(10){(core::num*) →* core::num*});
+ self::expect(97, genericTearOff2<core::int>(10){(core::int) → core::num});
+ self::expect(52, genericTearOffNumber1<core::num>(10){(core::num) → core::num});
self::expect("num:num", self::Extension1|latestType);
- self::expect(52, genericTearOffInteger1<core::num*>(10){(core::num*) →* core::int*});
+ self::expect(52, genericTearOffInteger1<core::num>(10){(core::num) → core::int});
self::expect("int:num", self::Extension1|latestType);
- self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::num*});
- self::expect(23, let final self::Class<core::int*>* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num*>(#t1, #t2) in #t2);
+ self::expect(97, genericTearOff2<core::num>(10){(core::num) → core::num});
+ self::expect(23, let final self::Class<core::int> #t1 = c in let final core::int #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num>(#t1, #t2) in #t2);
self::expect("num", self::Extension1|latestType);
- self::expect(23, let final self::Class<core::int*>* #t4 = c in let final core::int* #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int*>(#t4, #t5) in #t5);
+ self::expect(23, let final self::Class<core::int> #t4 = c in let final core::int #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int>(#t4, #t5) in #t5);
self::expect("int", self::Extension1|latestType);
- self::expect(67, let final self::Class<core::int*>* #t7 = c in let final core::int* #t8 = 67 in let final void #t9 = self::Extension2|set#field<core::num*>(#t7, #t8) in #t8);
- self::expect(23, self::Extension1|get#field<core::num*>(c));
- self::expect(67, self::Extension2|get#field<core::num*>(c));
+ self::expect(67, let final self::Class<core::int> #t7 = c in let final core::int #t8 = 67 in let final void #t9 = self::Extension2|set#field<core::num>(#t7, #t8) in #t8);
+ self::expect(23, self::Extension1|get#field<core::num>(c));
+ self::expect(67, self::Extension2|get#field<core::num>(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.modular.expect
index ad69a00..44f1f384 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::num*> extends core::Object {
- covariant-by-class field self::Class::T* field1;
- covariant-by-class field self::Class::T* field2;
- constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
+class Class<T extends core::num> extends core::Object {
+ covariant-by-class field self::Class::T field1;
+ covariant-by-class field self::Class::T field2;
+ constructor •(self::Class::T field1, self::Class::T field2) → self::Class<self::Class::T>
: self::Class::field1 = field1, self::Class::field2 = field2, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1<T extends core::num*> on self::Class<T*>* {
+extension Extension1<T extends core::num> on self::Class<T> {
static field latestType = self::Extension1|latestType;
get field = self::Extension1|get#field;
method method = self::Extension1|method;
@@ -28,7 +18,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2<T extends core::num*> on self::Class<T*>* {
+extension Extension2<T extends core::num> on self::Class<T> {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -36,99 +26,99 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static field core::String* Extension1|latestType;
-static method Extension1|get#field<T extends core::num*>(lowered final self::Class<self::Extension1|get#field::T*>* #this) → self::Extension1|get#field::T* {
- self::Extension1|latestType = "${self::Extension1|get#field::T*}";
- return #this.{self::Class::field1}{self::Extension1|get#field::T*};
+static field core::String? Extension1|latestType;
+static method Extension1|get#field<T extends core::num>(lowered final self::Class<self::Extension1|get#field::T> #this) → self::Extension1|get#field::T {
+ self::Extension1|latestType = "${self::Extension1|get#field::T}";
+ return #this.{self::Class::field1}{self::Extension1|get#field::T};
}
-static method Extension1|set#field<T extends core::num*>(lowered final self::Class<self::Extension1|set#field::T*>* #this, self::Extension1|set#field::T* value) → void {
- self::Extension1|latestType = "${self::Extension1|set#field::T*}";
+static method Extension1|set#field<T extends core::num>(lowered final self::Class<self::Extension1|set#field::T> #this, self::Extension1|set#field::T value) → void {
+ self::Extension1|latestType = "${self::Extension1|set#field::T}";
#this.{self::Class::field1} = value;
}
-static method Extension1|method<T extends core::num*>(lowered final self::Class<self::Extension1|method::T*>* #this) → self::Extension1|method::T* {
- self::Extension1|latestType = "${self::Extension1|method::T*}";
- return #this.{self::Class::field1}{self::Extension1|method::T*};
+static method Extension1|method<T extends core::num>(lowered final self::Class<self::Extension1|method::T> #this) → self::Extension1|method::T {
+ self::Extension1|latestType = "${self::Extension1|method::T}";
+ return #this.{self::Class::field1}{self::Extension1|method::T};
}
-static method Extension1|get#method<T extends core::num*>(lowered final self::Class<self::Extension1|get#method::T*>* #this) → () →* self::Extension1|get#method::T*
- return () → self::Extension1|get#method::T* => self::Extension1|method<self::Extension1|get#method::T*>(#this);
-static method Extension1|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension1|genericMethod::T*>* #this, self::Extension1|genericMethod::S* t) → self::Extension1|genericMethod::T* {
- self::Extension1|latestType = "${self::Extension1|genericMethod::T*}:${self::Extension1|genericMethod::S*}";
- return #this.{self::Class::field1}{self::Extension1|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension1|genericMethod::T*;
+static method Extension1|get#method<T extends core::num>(lowered final self::Class<self::Extension1|get#method::T> #this) → () → self::Extension1|get#method::T
+ return () → self::Extension1|get#method::T => self::Extension1|method<self::Extension1|get#method::T>(#this);
+static method Extension1|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension1|genericMethod::T> #this, self::Extension1|genericMethod::S t) → self::Extension1|genericMethod::T {
+ self::Extension1|latestType = "${self::Extension1|genericMethod::T}:${self::Extension1|genericMethod::S}";
+ return #this.{self::Class::field1}{self::Extension1|genericMethod::T}.{core::num::+}(t){(core::num) → core::num} as{ForNonNullableByDefault} self::Extension1|genericMethod::T;
}
-static method Extension1|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension1|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension1|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension1|get#genericMethod::T* => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T*, S*>(#this, t);
-static method Extension2|get#field<T extends core::num*>(lowered final self::Class<self::Extension2|get#field::T*>* #this) → self::Extension2|get#field::T*
- return #this.{self::Class::field2}{self::Extension2|get#field::T*};
-static method Extension2|set#field<T extends core::num*>(lowered final self::Class<self::Extension2|set#field::T*>* #this, self::Extension2|set#field::T* value) → void {
+static method Extension1|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension1|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension1|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension1|get#genericMethod::T => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T, S>(#this, t);
+static method Extension2|get#field<T extends core::num>(lowered final self::Class<self::Extension2|get#field::T> #this) → self::Extension2|get#field::T
+ return #this.{self::Class::field2}{self::Extension2|get#field::T};
+static method Extension2|set#field<T extends core::num>(lowered final self::Class<self::Extension2|set#field::T> #this, self::Extension2|set#field::T value) → void {
#this.{self::Class::field2} = value;
}
-static method Extension2|method<T extends core::num*>(lowered final self::Class<self::Extension2|method::T*>* #this) → self::Extension2|method::T*
- return #this.{self::Class::field2}{self::Extension2|method::T*};
-static method Extension2|get#method<T extends core::num*>(lowered final self::Class<self::Extension2|get#method::T*>* #this) → () →* self::Extension2|get#method::T*
- return () → self::Extension2|get#method::T* => self::Extension2|method<self::Extension2|get#method::T*>(#this);
-static method Extension2|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension2|genericMethod::T*>* #this, self::Extension2|genericMethod::S* t) → self::Extension2|genericMethod::T*
- return #this.{self::Class::field2}{self::Extension2|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension2|genericMethod::T*;
-static method Extension2|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension2|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension2|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension2|get#genericMethod::T* => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T*, S*>(#this, t);
+static method Extension2|method<T extends core::num>(lowered final self::Class<self::Extension2|method::T> #this) → self::Extension2|method::T
+ return #this.{self::Class::field2}{self::Extension2|method::T};
+static method Extension2|get#method<T extends core::num>(lowered final self::Class<self::Extension2|get#method::T> #this) → () → self::Extension2|get#method::T
+ return () → self::Extension2|get#method::T => self::Extension2|method<self::Extension2|get#method::T>(#this);
+static method Extension2|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension2|genericMethod::T> #this, self::Extension2|genericMethod::S t) → self::Extension2|genericMethod::T
+ return #this.{self::Class::field2}{self::Extension2|genericMethod::T}.{core::num::+}(t){(core::num) → core::num} as{ForNonNullableByDefault} self::Extension2|genericMethod::T;
+static method Extension2|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension2|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension2|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension2|get#genericMethod::T => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T, S>(#this, t);
static method main() → dynamic {
- self::Class<core::int*>* c = new self::Class::•<core::int*>(42, 87);
- self::expect(42, self::Extension1|get#field<core::num*>(c));
+ self::Class<core::int> c = new self::Class::•<core::int>(42, 87);
+ self::expect(42, self::Extension1|get#field<core::num>(c));
self::expect("num", self::Extension1|latestType);
- self::expect(42, self::Extension1|get#field<core::int*>(c));
+ self::expect(42, self::Extension1|get#field<core::int>(c));
self::expect("int", self::Extension1|latestType);
- self::expect(87, self::Extension2|get#field<core::num*>(c));
- self::expect(42, self::Extension1|method<core::num*>(c));
+ self::expect(87, self::Extension2|get#field<core::num>(c));
+ self::expect(42, self::Extension1|method<core::num>(c));
self::expect("num", self::Extension1|latestType);
- self::expect(42, self::Extension1|method<core::int*>(c));
+ self::expect(42, self::Extension1|method<core::int>(c));
self::expect("int", self::Extension1|latestType);
- self::expect(87, self::Extension2|method<core::num*>(c));
- () →* core::num* tearOffNumber1 = self::Extension1|get#method<core::num*>(c);
- () →* core::int* tearOffInteger1 = self::Extension1|get#method<core::int*>(c);
- () →* core::num* tearOff2 = self::Extension2|get#method<core::num*>(c);
- self::expect(42, tearOffNumber1(){() →* core::num*});
+ self::expect(87, self::Extension2|method<core::num>(c));
+ () → core::num tearOffNumber1 = self::Extension1|get#method<core::num>(c);
+ () → core::int tearOffInteger1 = self::Extension1|get#method<core::int>(c);
+ () → core::num tearOff2 = self::Extension2|get#method<core::num>(c);
+ self::expect(42, tearOffNumber1(){() → core::num});
self::expect("num", self::Extension1|latestType);
- self::expect(42, tearOffInteger1(){() →* core::int*});
+ self::expect(42, tearOffInteger1(){() → core::int});
self::expect("int", self::Extension1|latestType);
- self::expect(87, tearOff2(){() →* core::num*});
- self::expect(52, self::Extension1|genericMethod<core::num*, core::int*>(c, 10));
+ self::expect(87, tearOff2(){() → core::num});
+ self::expect(52, self::Extension1|genericMethod<core::num, core::int>(c, 10));
self::expect("num:int", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- self::expect(97, self::Extension2|genericMethod<core::num*, core::int*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::num*, core::num*>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num, core::int>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::num, core::num>(c, 10));
self::expect("num:num", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::num*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::num>(c, 10));
self::expect("int:num", self::Extension1|latestType);
- self::expect(97, self::Extension2|genericMethod<core::num*, core::num*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num, core::num>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::num*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::num>(c, 10));
self::expect("int:num", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- <S extends core::num*>(S*) →* core::num* genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num*>(c);
- <S extends core::num*>(S*) →* core::int* genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int*>(c);
- <S extends core::num*>(S*) →* core::num* genericTearOff2 = self::Extension2|get#genericMethod<core::num*>(c);
- self::expect(52, genericTearOffNumber1<core::int*>(10){(core::int*) →* core::num*});
+ <S extends core::num>(S) → core::num genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num>(c);
+ <S extends core::num>(S) → core::int genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int>(c);
+ <S extends core::num>(S) → core::num genericTearOff2 = self::Extension2|get#genericMethod<core::num>(c);
+ self::expect(52, genericTearOffNumber1<core::int>(10){(core::int) → core::num});
self::expect("num:int", self::Extension1|latestType);
- self::expect(52, genericTearOffInteger1<core::int*>(10){(core::int*) →* core::int*});
+ self::expect(52, genericTearOffInteger1<core::int>(10){(core::int) → core::int});
self::expect("int:int", self::Extension1|latestType);
- self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::num*});
- self::expect(52, genericTearOffNumber1<core::num*>(10){(core::num*) →* core::num*});
+ self::expect(97, genericTearOff2<core::int>(10){(core::int) → core::num});
+ self::expect(52, genericTearOffNumber1<core::num>(10){(core::num) → core::num});
self::expect("num:num", self::Extension1|latestType);
- self::expect(52, genericTearOffInteger1<core::num*>(10){(core::num*) →* core::int*});
+ self::expect(52, genericTearOffInteger1<core::num>(10){(core::num) → core::int});
self::expect("int:num", self::Extension1|latestType);
- self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::num*});
- self::expect(23, let final self::Class<core::int*>* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num*>(#t1, #t2) in #t2);
+ self::expect(97, genericTearOff2<core::num>(10){(core::num) → core::num});
+ self::expect(23, let final self::Class<core::int> #t1 = c in let final core::int #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num>(#t1, #t2) in #t2);
self::expect("num", self::Extension1|latestType);
- self::expect(23, let final self::Class<core::int*>* #t4 = c in let final core::int* #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int*>(#t4, #t5) in #t5);
+ self::expect(23, let final self::Class<core::int> #t4 = c in let final core::int #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int>(#t4, #t5) in #t5);
self::expect("int", self::Extension1|latestType);
- self::expect(67, let final self::Class<core::int*>* #t7 = c in let final core::int* #t8 = 67 in let final void #t9 = self::Extension2|set#field<core::num*>(#t7, #t8) in #t8);
- self::expect(23, self::Extension1|get#field<core::num*>(c));
- self::expect(67, self::Extension2|get#field<core::num*>(c));
+ self::expect(67, let final self::Class<core::int> #t7 = c in let final core::int #t8 = 67 in let final void #t9 = self::Extension2|set#field<core::num>(#t7, #t8) in #t8);
+ self::expect(23, self::Extension1|get#field<core::num>(c));
+ self::expect(67, self::Extension2|get#field<core::num>(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.outline.expect
index 322d3b1..17ed754 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.outline.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::num*> extends core::Object {
- covariant-by-class field self::Class::T* field1;
- covariant-by-class field self::Class::T* field2;
- constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
+class Class<T extends core::num> extends core::Object {
+ covariant-by-class field self::Class::T field1;
+ covariant-by-class field self::Class::T field2;
+ constructor •(self::Class::T field1, self::Class::T field2) → self::Class<self::Class::T>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1<T extends core::num*> on self::Class<T*>* {
+extension Extension1<T extends core::num> on self::Class<T> {
static field latestType = self::Extension1|latestType;
get field = self::Extension1|get#field;
method method = self::Extension1|method;
@@ -27,7 +17,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2<T extends core::num*> on self::Class<T*>* {
+extension Extension2<T extends core::num> on self::Class<T> {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -35,31 +25,31 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static field core::String* Extension1|latestType;
-static method Extension1|get#field<T extends core::num*>(lowered final self::Class<self::Extension1|get#field::T*>* #this) → self::Extension1|get#field::T*
+static field core::String? Extension1|latestType;
+static method Extension1|get#field<T extends core::num>(lowered final self::Class<self::Extension1|get#field::T> #this) → self::Extension1|get#field::T
;
-static method Extension1|set#field<T extends core::num*>(lowered final self::Class<self::Extension1|set#field::T*>* #this, self::Extension1|set#field::T* value) → void
+static method Extension1|set#field<T extends core::num>(lowered final self::Class<self::Extension1|set#field::T> #this, self::Extension1|set#field::T value) → void
;
-static method Extension1|method<T extends core::num*>(lowered final self::Class<self::Extension1|method::T*>* #this) → self::Extension1|method::T*
+static method Extension1|method<T extends core::num>(lowered final self::Class<self::Extension1|method::T> #this) → self::Extension1|method::T
;
-static method Extension1|get#method<T extends core::num*>(lowered final self::Class<self::Extension1|get#method::T*>* #this) → () →* self::Extension1|get#method::T*
- return () → self::Extension1|get#method::T* => self::Extension1|method<self::Extension1|get#method::T*>(#this);
-static method Extension1|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension1|genericMethod::T*>* #this, self::Extension1|genericMethod::S* t) → self::Extension1|genericMethod::T*
+static method Extension1|get#method<T extends core::num>(lowered final self::Class<self::Extension1|get#method::T> #this) → () → self::Extension1|get#method::T
+ return () → self::Extension1|get#method::T => self::Extension1|method<self::Extension1|get#method::T>(#this);
+static method Extension1|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension1|genericMethod::T> #this, self::Extension1|genericMethod::S t) → self::Extension1|genericMethod::T
;
-static method Extension1|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension1|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension1|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension1|get#genericMethod::T* => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T*, S*>(#this, t);
-static method Extension2|get#field<T extends core::num*>(lowered final self::Class<self::Extension2|get#field::T*>* #this) → self::Extension2|get#field::T*
+static method Extension1|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension1|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension1|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension1|get#genericMethod::T => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T, S>(#this, t);
+static method Extension2|get#field<T extends core::num>(lowered final self::Class<self::Extension2|get#field::T> #this) → self::Extension2|get#field::T
;
-static method Extension2|set#field<T extends core::num*>(lowered final self::Class<self::Extension2|set#field::T*>* #this, self::Extension2|set#field::T* value) → void
+static method Extension2|set#field<T extends core::num>(lowered final self::Class<self::Extension2|set#field::T> #this, self::Extension2|set#field::T value) → void
;
-static method Extension2|method<T extends core::num*>(lowered final self::Class<self::Extension2|method::T*>* #this) → self::Extension2|method::T*
+static method Extension2|method<T extends core::num>(lowered final self::Class<self::Extension2|method::T> #this) → self::Extension2|method::T
;
-static method Extension2|get#method<T extends core::num*>(lowered final self::Class<self::Extension2|get#method::T*>* #this) → () →* self::Extension2|get#method::T*
- return () → self::Extension2|get#method::T* => self::Extension2|method<self::Extension2|get#method::T*>(#this);
-static method Extension2|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension2|genericMethod::T*>* #this, self::Extension2|genericMethod::S* t) → self::Extension2|genericMethod::T*
+static method Extension2|get#method<T extends core::num>(lowered final self::Class<self::Extension2|get#method::T> #this) → () → self::Extension2|get#method::T
+ return () → self::Extension2|get#method::T => self::Extension2|method<self::Extension2|get#method::T>(#this);
+static method Extension2|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension2|genericMethod::T> #this, self::Extension2|genericMethod::S t) → self::Extension2|genericMethod::T
;
-static method Extension2|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension2|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension2|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension2|get#genericMethod::T* => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T*, S*>(#this, t);
+static method Extension2|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension2|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension2|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension2|get#genericMethod::T => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T, S>(#this, t);
static method main() → dynamic
;
static method expect(dynamic expected, dynamic actual) → dynamic
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect
index 225240c..911b823 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::num*> extends core::Object {
- covariant-by-class field self::Class::T* field1;
- covariant-by-class field self::Class::T* field2;
- constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
+class Class<T extends core::num> extends core::Object {
+ covariant-by-class field self::Class::T field1;
+ covariant-by-class field self::Class::T field2;
+ constructor •(self::Class::T field1, self::Class::T field2) → self::Class<self::Class::T>
: self::Class::field1 = field1, self::Class::field2 = field2, super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1<T extends core::num*> on self::Class<T*>* {
+extension Extension1<T extends core::num> on self::Class<T> {
static field latestType = self::Extension1|latestType;
get field = self::Extension1|get#field;
method method = self::Extension1|method;
@@ -28,7 +18,7 @@
tearoff genericMethod = self::Extension1|get#genericMethod;
set field = self::Extension1|set#field;
}
-extension Extension2<T extends core::num*> on self::Class<T*>* {
+extension Extension2<T extends core::num> on self::Class<T> {
get field = self::Extension2|get#field;
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
@@ -36,99 +26,99 @@
tearoff genericMethod = self::Extension2|get#genericMethod;
set field = self::Extension2|set#field;
}
-static field core::String* Extension1|latestType;
-static method Extension1|get#field<T extends core::num*>(lowered final self::Class<self::Extension1|get#field::T*>* #this) → self::Extension1|get#field::T* {
- self::Extension1|latestType = "${self::Extension1|get#field::T*}";
- return #this.{self::Class::field1}{self::Extension1|get#field::T*};
+static field core::String? Extension1|latestType;
+static method Extension1|get#field<T extends core::num>(lowered final self::Class<self::Extension1|get#field::T> #this) → self::Extension1|get#field::T {
+ self::Extension1|latestType = "${self::Extension1|get#field::T}";
+ return #this.{self::Class::field1}{self::Extension1|get#field::T};
}
-static method Extension1|set#field<T extends core::num*>(lowered final self::Class<self::Extension1|set#field::T*>* #this, self::Extension1|set#field::T* value) → void {
- self::Extension1|latestType = "${self::Extension1|set#field::T*}";
+static method Extension1|set#field<T extends core::num>(lowered final self::Class<self::Extension1|set#field::T> #this, self::Extension1|set#field::T value) → void {
+ self::Extension1|latestType = "${self::Extension1|set#field::T}";
#this.{self::Class::field1} = value;
}
-static method Extension1|method<T extends core::num*>(lowered final self::Class<self::Extension1|method::T*>* #this) → self::Extension1|method::T* {
- self::Extension1|latestType = "${self::Extension1|method::T*}";
- return #this.{self::Class::field1}{self::Extension1|method::T*};
+static method Extension1|method<T extends core::num>(lowered final self::Class<self::Extension1|method::T> #this) → self::Extension1|method::T {
+ self::Extension1|latestType = "${self::Extension1|method::T}";
+ return #this.{self::Class::field1}{self::Extension1|method::T};
}
-static method Extension1|get#method<T extends core::num*>(lowered final self::Class<self::Extension1|get#method::T*>* #this) → () →* self::Extension1|get#method::T*
- return () → self::Extension1|get#method::T* => self::Extension1|method<self::Extension1|get#method::T*>(#this);
-static method Extension1|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension1|genericMethod::T*>* #this, self::Extension1|genericMethod::S* t) → self::Extension1|genericMethod::T* {
- self::Extension1|latestType = "${self::Extension1|genericMethod::T*}:${self::Extension1|genericMethod::S*}";
- return #this.{self::Class::field1}{self::Extension1|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension1|genericMethod::T*;
+static method Extension1|get#method<T extends core::num>(lowered final self::Class<self::Extension1|get#method::T> #this) → () → self::Extension1|get#method::T
+ return () → self::Extension1|get#method::T => self::Extension1|method<self::Extension1|get#method::T>(#this);
+static method Extension1|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension1|genericMethod::T> #this, self::Extension1|genericMethod::S t) → self::Extension1|genericMethod::T {
+ self::Extension1|latestType = "${self::Extension1|genericMethod::T}:${self::Extension1|genericMethod::S}";
+ return #this.{self::Class::field1}{self::Extension1|genericMethod::T}.{core::num::+}(t){(core::num) → core::num} as{ForNonNullableByDefault} self::Extension1|genericMethod::T;
}
-static method Extension1|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension1|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension1|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension1|get#genericMethod::T* => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T*, S*>(#this, t);
-static method Extension2|get#field<T extends core::num*>(lowered final self::Class<self::Extension2|get#field::T*>* #this) → self::Extension2|get#field::T*
- return #this.{self::Class::field2}{self::Extension2|get#field::T*};
-static method Extension2|set#field<T extends core::num*>(lowered final self::Class<self::Extension2|set#field::T*>* #this, self::Extension2|set#field::T* value) → void {
+static method Extension1|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension1|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension1|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension1|get#genericMethod::T => self::Extension1|genericMethod<self::Extension1|get#genericMethod::T, S>(#this, t);
+static method Extension2|get#field<T extends core::num>(lowered final self::Class<self::Extension2|get#field::T> #this) → self::Extension2|get#field::T
+ return #this.{self::Class::field2}{self::Extension2|get#field::T};
+static method Extension2|set#field<T extends core::num>(lowered final self::Class<self::Extension2|set#field::T> #this, self::Extension2|set#field::T value) → void {
#this.{self::Class::field2} = value;
}
-static method Extension2|method<T extends core::num*>(lowered final self::Class<self::Extension2|method::T*>* #this) → self::Extension2|method::T*
- return #this.{self::Class::field2}{self::Extension2|method::T*};
-static method Extension2|get#method<T extends core::num*>(lowered final self::Class<self::Extension2|get#method::T*>* #this) → () →* self::Extension2|get#method::T*
- return () → self::Extension2|get#method::T* => self::Extension2|method<self::Extension2|get#method::T*>(#this);
-static method Extension2|genericMethod<T extends core::num*, S extends core::num*>(lowered final self::Class<self::Extension2|genericMethod::T*>* #this, self::Extension2|genericMethod::S* t) → self::Extension2|genericMethod::T*
- return #this.{self::Class::field2}{self::Extension2|genericMethod::T*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} self::Extension2|genericMethod::T*;
-static method Extension2|get#genericMethod<T extends core::num*>(lowered final self::Class<self::Extension2|get#genericMethod::T*>* #this) → <S extends core::num*>(S*) →* self::Extension2|get#genericMethod::T*
- return <S extends core::num*>(S* t) → self::Extension2|get#genericMethod::T* => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T*, S*>(#this, t);
+static method Extension2|method<T extends core::num>(lowered final self::Class<self::Extension2|method::T> #this) → self::Extension2|method::T
+ return #this.{self::Class::field2}{self::Extension2|method::T};
+static method Extension2|get#method<T extends core::num>(lowered final self::Class<self::Extension2|get#method::T> #this) → () → self::Extension2|get#method::T
+ return () → self::Extension2|get#method::T => self::Extension2|method<self::Extension2|get#method::T>(#this);
+static method Extension2|genericMethod<T extends core::num, S extends core::num>(lowered final self::Class<self::Extension2|genericMethod::T> #this, self::Extension2|genericMethod::S t) → self::Extension2|genericMethod::T
+ return #this.{self::Class::field2}{self::Extension2|genericMethod::T}.{core::num::+}(t){(core::num) → core::num} as{ForNonNullableByDefault} self::Extension2|genericMethod::T;
+static method Extension2|get#genericMethod<T extends core::num>(lowered final self::Class<self::Extension2|get#genericMethod::T> #this) → <S extends core::num>(S) → self::Extension2|get#genericMethod::T
+ return <S extends core::num>(S t) → self::Extension2|get#genericMethod::T => self::Extension2|genericMethod<self::Extension2|get#genericMethod::T, S>(#this, t);
static method main() → dynamic {
- self::Class<core::int*>* c = new self::Class::•<core::int*>(42, 87);
- self::expect(42, self::Extension1|get#field<core::num*>(c));
+ self::Class<core::int> c = new self::Class::•<core::int>(42, 87);
+ self::expect(42, self::Extension1|get#field<core::num>(c));
self::expect("num", self::Extension1|latestType);
- self::expect(42, self::Extension1|get#field<core::int*>(c));
+ self::expect(42, self::Extension1|get#field<core::int>(c));
self::expect("int", self::Extension1|latestType);
- self::expect(87, self::Extension2|get#field<core::num*>(c));
- self::expect(42, self::Extension1|method<core::num*>(c));
+ self::expect(87, self::Extension2|get#field<core::num>(c));
+ self::expect(42, self::Extension1|method<core::num>(c));
self::expect("num", self::Extension1|latestType);
- self::expect(42, self::Extension1|method<core::int*>(c));
+ self::expect(42, self::Extension1|method<core::int>(c));
self::expect("int", self::Extension1|latestType);
- self::expect(87, self::Extension2|method<core::num*>(c));
- () →* core::num* tearOffNumber1 = self::Extension1|get#method<core::num*>(c);
- () →* core::int* tearOffInteger1 = self::Extension1|get#method<core::int*>(c);
- () →* core::num* tearOff2 = self::Extension2|get#method<core::num*>(c);
- self::expect(42, tearOffNumber1(){() →* core::num*});
+ self::expect(87, self::Extension2|method<core::num>(c));
+ () → core::num tearOffNumber1 = self::Extension1|get#method<core::num>(c);
+ () → core::int tearOffInteger1 = self::Extension1|get#method<core::int>(c);
+ () → core::num tearOff2 = self::Extension2|get#method<core::num>(c);
+ self::expect(42, tearOffNumber1(){() → core::num});
self::expect("num", self::Extension1|latestType);
- self::expect(42, tearOffInteger1(){() →* core::int*});
+ self::expect(42, tearOffInteger1(){() → core::int});
self::expect("int", self::Extension1|latestType);
- self::expect(87, tearOff2(){() →* core::num*});
- self::expect(52, self::Extension1|genericMethod<core::num*, core::int*>(c, 10));
+ self::expect(87, tearOff2(){() → core::num});
+ self::expect(52, self::Extension1|genericMethod<core::num, core::int>(c, 10));
self::expect("num:int", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- self::expect(97, self::Extension2|genericMethod<core::num*, core::int*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::num*, core::num*>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num, core::int>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::num, core::num>(c, 10));
self::expect("num:num", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::num*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::num>(c, 10));
self::expect("int:num", self::Extension1|latestType);
- self::expect(97, self::Extension2|genericMethod<core::num*, core::num*>(c, 10));
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(97, self::Extension2|genericMethod<core::num, core::num>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::num*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::num>(c, 10));
self::expect("int:num", self::Extension1|latestType);
- self::expect(52, self::Extension1|genericMethod<core::int*, core::int*>(c, 10));
+ self::expect(52, self::Extension1|genericMethod<core::int, core::int>(c, 10));
self::expect("int:int", self::Extension1|latestType);
- <S extends core::num*>(S*) →* core::num* genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num*>(c);
- <S extends core::num*>(S*) →* core::int* genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int*>(c);
- <S extends core::num*>(S*) →* core::num* genericTearOff2 = self::Extension2|get#genericMethod<core::num*>(c);
- self::expect(52, genericTearOffNumber1<core::int*>(10){(core::int*) →* core::num*});
+ <S extends core::num>(S) → core::num genericTearOffNumber1 = self::Extension1|get#genericMethod<core::num>(c);
+ <S extends core::num>(S) → core::int genericTearOffInteger1 = self::Extension1|get#genericMethod<core::int>(c);
+ <S extends core::num>(S) → core::num genericTearOff2 = self::Extension2|get#genericMethod<core::num>(c);
+ self::expect(52, genericTearOffNumber1<core::int>(10){(core::int) → core::num});
self::expect("num:int", self::Extension1|latestType);
- self::expect(52, genericTearOffInteger1<core::int*>(10){(core::int*) →* core::int*});
+ self::expect(52, genericTearOffInteger1<core::int>(10){(core::int) → core::int});
self::expect("int:int", self::Extension1|latestType);
- self::expect(97, genericTearOff2<core::int*>(10){(core::int*) →* core::num*});
- self::expect(52, genericTearOffNumber1<core::num*>(10){(core::num*) →* core::num*});
+ self::expect(97, genericTearOff2<core::int>(10){(core::int) → core::num});
+ self::expect(52, genericTearOffNumber1<core::num>(10){(core::num) → core::num});
self::expect("num:num", self::Extension1|latestType);
- self::expect(52, genericTearOffInteger1<core::num*>(10){(core::num*) →* core::int*});
+ self::expect(52, genericTearOffInteger1<core::num>(10){(core::num) → core::int});
self::expect("int:num", self::Extension1|latestType);
- self::expect(97, genericTearOff2<core::num*>(10){(core::num*) →* core::num*});
- self::expect(23, let final self::Class<core::int*>* #t1 = c in let final core::int* #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num*>(#t1, #t2) in #t2);
+ self::expect(97, genericTearOff2<core::num>(10){(core::num) → core::num});
+ self::expect(23, let final self::Class<core::int> #t1 = c in let final core::int #t2 = 23 in let final void #t3 = self::Extension1|set#field<core::num>(#t1, #t2) in #t2);
self::expect("num", self::Extension1|latestType);
- self::expect(23, let final self::Class<core::int*>* #t4 = c in let final core::int* #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int*>(#t4, #t5) in #t5);
+ self::expect(23, let final self::Class<core::int> #t4 = c in let final core::int #t5 = 23 in let final void #t6 = self::Extension1|set#field<core::int>(#t4, #t5) in #t5);
self::expect("int", self::Extension1|latestType);
- self::expect(67, let final self::Class<core::int*>* #t7 = c in let final core::int* #t8 = 67 in let final void #t9 = self::Extension2|set#field<core::num*>(#t7, #t8) in #t8);
- self::expect(23, self::Extension1|get#field<core::num*>(c));
- self::expect(67, self::Extension2|get#field<core::num*>(c));
+ self::expect(67, let final self::Class<core::int> #t7 = c in let final core::int #t8 = 67 in let final void #t9 = self::Extension2|set#field<core::num>(#t7, #t8) in #t8);
+ self::expect(23, self::Extension1|get#field<core::num>(c));
+ self::expect(67, self::Extension2|get#field<core::num>(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart
index 64a0534..fc8cd69 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {}
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline.expect
index e158dbb..c1b8b08 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {}
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline_modelled.expect
index 311863a..43c658b 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
errors(Class c) {}
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.expect
index f0bae7e..a22bd35 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,23 +26,13 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
}
-static method errors(self::Class* c) → dynamic {
+static method errors(self::Class c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:10:3: Error: Explicit extension application cannot be used as an expression.
Extension(c);
^^^^^^^^^";
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.modular.expect
index f0bae7e..a22bd35 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,23 +26,13 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
}
-static method errors(self::Class* c) → dynamic {
+static method errors(self::Class c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:10:3: Error: Explicit extension application cannot be used as an expression.
Extension(c);
^^^^^^^^^";
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.outline.expect
index f5961c4..bb12384 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.outline.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
}
-static method errors(self::Class* c) → dynamic
+static method errors(self::Class c) → dynamic
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.transformed.expect
index f0bae7e..a22bd35 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,23 +26,13 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
}
-static method errors(self::Class* c) → dynamic {
+static method errors(self::Class c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/explicit_invalid_access.dart:10:3: Error: Explicit extension application cannot be used as an expression.
Extension(c);
^^^^^^^^^";
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart b/pkg/front_end/testcases/extensions/explicit_this.dart
index 8557323..6e444df 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart
@@ -1,16 +1,16 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class A1 {
- Object field;
+ Object? field;
void method1() {}
}
extension A2 on A1 {
void method2() => this.method1();
- Object method3() => this.field;
+ Object? method3() => this.field;
void method4(Object o) {
this.field = o;
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline.expect
index 63c3acd..67d83c3 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline.expect
@@ -1,12 +1,11 @@
-// @dart = 2.9
class A1 {
- Object field;
+ Object? field;
void method1() {}
}
extension A2 on A1 {
void method2() => this.method1();
- Object method3() => this.field;
+ Object? method3() => this.field;
void method4(Object o) {}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline_modelled.expect
index fb368df..7fd231e 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.textual_outline_modelled.expect
@@ -1,11 +1,10 @@
-// @dart = 2.9
class A1 {
- Object field;
+ Object? field;
void method1() {}
}
extension A2 on A1 {
- Object method3() => this.field;
+ Object? method3() => this.field;
void method2() => this.method1();
void method4(Object o) {}
}
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect
index 9328ef6..862dfb1 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field = null;
- synthetic constructor •() → self::A1*
+ field core::Object? field = null;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
method method1() → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
- return #this.{self::A1::method1}(){() →* void};
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|method2(lowered final self::A1 #this) → void
+ return #this.{self::A1::method1}(){() → void};
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
- return #this.{self::A1::field}{core::Object*};
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
+static method A2|method3(lowered final self::A1 #this) → core::Object?
+ return #this.{self::A1::field}{core::Object?};
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object o) → void {
#this.{self::A1::field} = o;
}
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object) → void
+ return (core::Object o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.modular.expect
index 9328ef6..862dfb1 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field = null;
- synthetic constructor •() → self::A1*
+ field core::Object? field = null;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
method method1() → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
- return #this.{self::A1::method1}(){() →* void};
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|method2(lowered final self::A1 #this) → void
+ return #this.{self::A1::method1}(){() → void};
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
- return #this.{self::A1::field}{core::Object*};
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
+static method A2|method3(lowered final self::A1 #this) → core::Object?
+ return #this.{self::A1::field}{core::Object?};
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object o) → void {
#this.{self::A1::field} = o;
}
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object) → void
+ return (core::Object o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.outline.expect
index 21fa5c7..7af82c7 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.outline.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field;
- synthetic constructor •() → self::A1*
+ field core::Object? field;
+ synthetic constructor •() → self::A1
;
method method1() → void
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
+static method A2|method2(lowered final self::A1 #this) → void
;
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
+static method A2|method3(lowered final self::A1 #this) → core::Object?
;
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object o) → void
;
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object) → void
+ return (core::Object o) → void => self::A2|method4(#this, o);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect
index 9328ef6..862dfb1 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field = null;
- synthetic constructor •() → self::A1*
+ field core::Object? field = null;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
method method1() → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
- return #this.{self::A1::method1}(){() →* void};
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|method2(lowered final self::A1 #this) → void
+ return #this.{self::A1::method1}(){() → void};
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
- return #this.{self::A1::field}{core::Object*};
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
+static method A2|method3(lowered final self::A1 #this) → core::Object?
+ return #this.{self::A1::field}{core::Object?};
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object o) → void {
#this.{self::A1::field} = o;
}
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object) → void
+ return (core::Object o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart b/pkg/front_end/testcases/extensions/export_from_dill/main.dart
index 3c64e58..6524b05 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
import 'main_lib1.dart';
main() {
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline.expect
index 37f878a..b27adef 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'main_lib1.dart';
main() {}
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline_modelled.expect
index 37f878a..b27adef 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'main_lib1.dart';
main() {}
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.expect b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.expect
index 214f428..afed0e9 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "main_lib2.dart" as mai;
import "dart:core" as core;
@@ -16,7 +16,7 @@
#C2;
}
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "main_lib2.dart" as mai;
additionalExports = (mai::Extension)
@@ -24,11 +24,11 @@
export "org-dartlang-testcase:///main_lib2.dart";
-library;
+library /*isNonNullableByDefault*/;
import self as mai;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
get instanceProperty = mai::Extension|get#instanceProperty;
method instanceMethod = mai::Extension|instanceMethod;
tearoff instanceMethod = mai::Extension|get#instanceMethod;
@@ -40,18 +40,18 @@
set instanceProperty = mai::Extension|set#instanceProperty;
static set staticProperty = set mai::Extension|staticProperty;
}
-static field core::int* Extension|staticField = 42;
-static final field core::int* Extension|staticFinalField = 42;
-static const field core::int* Extension|staticConstField = #C1;
-static method Extension|get#instanceProperty(lowered final core::int* #this) → core::int*
+static field core::int Extension|staticField = 42;
+static final field core::int Extension|staticFinalField = 42;
+static const field core::int Extension|staticConstField = #C1;
+static method Extension|get#instanceProperty(lowered final core::int #this) → core::int
return 42;
-static method Extension|set#instanceProperty(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|instanceMethod(lowered final core::int* #this) → void {}
-static method Extension|get#instanceMethod(lowered final core::int* #this) → () →* void
+static method Extension|set#instanceProperty(lowered final core::int #this, core::int value) → void {}
+static method Extension|instanceMethod(lowered final core::int #this) → void {}
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → void
return () → void => mai::Extension|instanceMethod(#this);
-static get Extension|staticProperty() → core::int*
+static get Extension|staticProperty() → core::int
return 42;
-static set Extension|staticProperty(core::int* value) → void {}
+static set Extension|staticProperty(core::int value) → void {}
static method Extension|staticMethod() → void {}
constants {
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.modular.expect
index 6a3bebc..f4287ea 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "main_lib2.dart" as mai;
import "dart:core" as core;
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.outline.expect
index 70bd997..5a68e2d 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///main_lib1.dart";
@@ -6,7 +6,7 @@
static method main() → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "main_lib2.dart" as mai;
additionalExports = (mai::Extension)
@@ -14,11 +14,11 @@
export "org-dartlang-testcase:///main_lib2.dart";
-library;
+library /*isNonNullableByDefault*/;
import self as mai;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
get instanceProperty = mai::Extension|get#instanceProperty;
method instanceMethod = mai::Extension|instanceMethod;
tearoff instanceMethod = mai::Extension|get#instanceMethod;
@@ -30,20 +30,20 @@
set instanceProperty = mai::Extension|set#instanceProperty;
static set staticProperty = set mai::Extension|staticProperty;
}
-static field core::int* Extension|staticField;
-static final field core::int* Extension|staticFinalField;
-static const field core::int* Extension|staticConstField = #C1;
-static method Extension|get#instanceProperty(lowered final core::int* #this) → core::int*
+static field core::int Extension|staticField;
+static final field core::int Extension|staticFinalField;
+static const field core::int Extension|staticConstField = #C1;
+static method Extension|get#instanceProperty(lowered final core::int #this) → core::int
;
-static method Extension|set#instanceProperty(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#instanceProperty(lowered final core::int #this, core::int value) → void
;
-static method Extension|instanceMethod(lowered final core::int* #this) → void
+static method Extension|instanceMethod(lowered final core::int #this) → void
;
-static method Extension|get#instanceMethod(lowered final core::int* #this) → () →* void
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → void
return () → void => mai::Extension|instanceMethod(#this);
-static get Extension|staticProperty() → core::int*
+static get Extension|staticProperty() → core::int
;
-static set Extension|staticProperty(core::int* value) → void
+static set Extension|staticProperty(core::int value) → void
;
static method Extension|staticMethod() → void
;
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.transformed.expect
index 214f428..afed0e9 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "main_lib2.dart" as mai;
import "dart:core" as core;
@@ -16,7 +16,7 @@
#C2;
}
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "main_lib2.dart" as mai;
additionalExports = (mai::Extension)
@@ -24,11 +24,11 @@
export "org-dartlang-testcase:///main_lib2.dart";
-library;
+library /*isNonNullableByDefault*/;
import self as mai;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
get instanceProperty = mai::Extension|get#instanceProperty;
method instanceMethod = mai::Extension|instanceMethod;
tearoff instanceMethod = mai::Extension|get#instanceMethod;
@@ -40,18 +40,18 @@
set instanceProperty = mai::Extension|set#instanceProperty;
static set staticProperty = set mai::Extension|staticProperty;
}
-static field core::int* Extension|staticField = 42;
-static final field core::int* Extension|staticFinalField = 42;
-static const field core::int* Extension|staticConstField = #C1;
-static method Extension|get#instanceProperty(lowered final core::int* #this) → core::int*
+static field core::int Extension|staticField = 42;
+static final field core::int Extension|staticFinalField = 42;
+static const field core::int Extension|staticConstField = #C1;
+static method Extension|get#instanceProperty(lowered final core::int #this) → core::int
return 42;
-static method Extension|set#instanceProperty(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|instanceMethod(lowered final core::int* #this) → void {}
-static method Extension|get#instanceMethod(lowered final core::int* #this) → () →* void
+static method Extension|set#instanceProperty(lowered final core::int #this, core::int value) → void {}
+static method Extension|instanceMethod(lowered final core::int #this) → void {}
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → void
return () → void => mai::Extension|instanceMethod(#this);
-static get Extension|staticProperty() → core::int*
+static get Extension|staticProperty() → core::int
return 42;
-static set Extension|staticProperty(core::int* value) → void {}
+static set Extension|staticProperty(core::int value) → void {}
static method Extension|staticMethod() → void {}
constants {
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main_lib1.dart b/pkg/front_end/testcases/extensions/export_from_dill/main_lib1.dart
index 3ea16b6..6c6153b 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main_lib1.dart
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main_lib1.dart
@@ -1,5 +1,5 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
export 'main_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/export_from_dill/main_lib2.dart b/pkg/front_end/testcases/extensions/export_from_dill/main_lib2.dart
index 4eba373..b08ae03 100644
--- a/pkg/front_end/testcases/extensions/export_from_dill/main_lib2.dart
+++ b/pkg/front_end/testcases/extensions/export_from_dill/main_lib2.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension Extension on int {
int get instanceProperty => 42;
void set instanceProperty(int value) {}
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart b/pkg/front_end/testcases/extensions/export_twice.dart
index da8915c..6fdc20a 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart
+++ b/pkg/front_end/testcases/extensions/export_twice.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'export_twice_lib1.dart';
import 'export_twice_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline.expect
index 1fc614e..3e4ce72 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'export_twice_lib1.dart';
import 'export_twice_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline_modelled.expect
index 1fc614e..3e4ce72 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'export_twice_lib1.dart';
import 'export_twice_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.weak.expect b/pkg/front_end/testcases/extensions/export_twice.dart.weak.expect
index d7eef99..ffd5701 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "export_twice_lib1.dart" as exp;
@@ -9,34 +9,24 @@
exp::Extension|method(new exp::Class::•());
}
-library;
+library /*isNonNullableByDefault*/;
import self as exp;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → exp::Class*
+ synthetic constructor •() → exp::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on exp::Class* {
+extension Extension on exp::Class {
method method = exp::Extension|method;
tearoff method = exp::Extension|get#method;
}
-static method Extension|method(lowered final exp::Class* #this) → dynamic {}
-static method Extension|get#method(lowered final exp::Class* #this) → () →* dynamic
+static method Extension|method(lowered final exp::Class #this) → dynamic {}
+static method Extension|get#method(lowered final exp::Class #this) → () → dynamic
return () → dynamic => exp::Extension|method(#this);
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "export_twice_lib1.dart" as exp;
additionalExports = (exp::Extension)
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/export_twice.dart.weak.modular.expect
index d7eef99..ffd5701 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "export_twice_lib1.dart" as exp;
@@ -9,34 +9,24 @@
exp::Extension|method(new exp::Class::•());
}
-library;
+library /*isNonNullableByDefault*/;
import self as exp;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → exp::Class*
+ synthetic constructor •() → exp::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on exp::Class* {
+extension Extension on exp::Class {
method method = exp::Extension|method;
tearoff method = exp::Extension|get#method;
}
-static method Extension|method(lowered final exp::Class* #this) → dynamic {}
-static method Extension|get#method(lowered final exp::Class* #this) → () →* dynamic
+static method Extension|method(lowered final exp::Class #this) → dynamic {}
+static method Extension|get#method(lowered final exp::Class #this) → () → dynamic
return () → dynamic => exp::Extension|method(#this);
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "export_twice_lib1.dart" as exp;
additionalExports = (exp::Extension)
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/export_twice.dart.weak.outline.expect
index a7b9b7e..b4f09a9 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///export_twice_lib1.dart";
@@ -7,34 +7,24 @@
static method main() → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self2::Class*
+ synthetic constructor •() → self2::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self2::Class* {
+extension Extension on self2::Class {
method method = self2::Extension|method;
tearoff method = self2::Extension|get#method;
}
-static method Extension|method(lowered final self2::Class* #this) → dynamic
+static method Extension|method(lowered final self2::Class #this) → dynamic
;
-static method Extension|get#method(lowered final self2::Class* #this) → () →* dynamic
+static method Extension|get#method(lowered final self2::Class #this) → () → dynamic
return () → dynamic => self2::Extension|method(#this);
-library;
+library /*isNonNullableByDefault*/;
import self as self3;
import "export_twice_lib1.dart" as self2;
additionalExports = (self2::Extension)
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/export_twice.dart.weak.transformed.expect
index d7eef99..ffd5701 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "export_twice_lib1.dart" as exp;
@@ -9,34 +9,24 @@
exp::Extension|method(new exp::Class::•());
}
-library;
+library /*isNonNullableByDefault*/;
import self as exp;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → exp::Class*
+ synthetic constructor •() → exp::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on exp::Class* {
+extension Extension on exp::Class {
method method = exp::Extension|method;
tearoff method = exp::Extension|get#method;
}
-static method Extension|method(lowered final exp::Class* #this) → dynamic {}
-static method Extension|get#method(lowered final exp::Class* #this) → () →* dynamic
+static method Extension|method(lowered final exp::Class #this) → dynamic {}
+static method Extension|get#method(lowered final exp::Class #this) → () → dynamic
return () → dynamic => exp::Extension|method(#this);
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "export_twice_lib1.dart" as exp;
additionalExports = (exp::Extension)
diff --git a/pkg/front_end/testcases/extensions/export_twice_lib1.dart b/pkg/front_end/testcases/extensions/export_twice_lib1.dart
index 22867f5..1004de0 100644
--- a/pkg/front_end/testcases/extensions/export_twice_lib1.dart
+++ b/pkg/front_end/testcases/extensions/export_twice_lib1.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/export_twice_lib2.dart b/pkg/front_end/testcases/extensions/export_twice_lib2.dart
index 59fe68b..adeca01 100644
--- a/pkg/front_end/testcases/extensions/export_twice_lib2.dart
+++ b/pkg/front_end/testcases/extensions/export_twice_lib2.dart
@@ -1,5 +1,5 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
export 'export_twice_lib1.dart' show Extension;
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart b/pkg/front_end/testcases/extensions/extension_call.dart
index 4df75bd..026883a 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart
+++ b/pkg/front_end/testcases/extensions/extension_call.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class<T> {
T method(T a) => a;
}
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline.expect
index 5083960..3acad15 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T> {
T method(T a) => a;
}
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline_modelled.expect
index 2f1e610..7edde0e 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T> {
T method(T a) => a;
}
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect
index 13106a6..c844073 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.weak.expect
@@ -1,43 +1,33 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- method method(covariant-by-class self::Class::T* a) → self::Class::T*
+ method method(covariant-by-class self::Class::T% a) → self::Class::T%
return a;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T*
- return #this.{self::Class::method}(a){(self::Extension|call::T*) →* self::Extension|call::T*};
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T*
- return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a);
+static method Extension|call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|call::T%> #this, self::Extension|call::T% a) → self::Extension|call::T%
+ return #this.{self::Class::method}(a){(self::Extension|call::T%) → self::Extension|call::T%};
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#call::T%> #this) → (self::Extension|get#call::T%) → self::Extension|get#call::T%
+ return (self::Extension|get#call::T% a) → self::Extension|get#call::T% => self::Extension|call<self::Extension|get#call::T%>(#this, a);
static method main() → dynamic {
- self::Class<core::int*>* c = new self::Class::•<core::int*>();
- self::expect(42, self::Extension|call<core::int*>(c, 42));
- self::expect(87, self::Extension|call<core::int*>(c, 87));
- self::expect(123, self::Extension|call<core::int*>(c, 123));
- self::expect(42, self::Extension|call<core::int*>(c, 42));
- self::expect(87, self::Extension|call<core::int*>(c, 87));
- self::expect(123, self::Extension|call<core::int*>(c, 123));
+ self::Class<core::int> c = new self::Class::•<core::int>();
+ self::expect(42, self::Extension|call<core::int>(c, 42));
+ self::expect(87, self::Extension|call<core::int>(c, 87));
+ self::expect(123, self::Extension|call<core::int>(c, 123));
+ self::expect(42, self::Extension|call<core::int>(c, 42));
+ self::expect(87, self::Extension|call<core::int>(c, 87));
+ self::expect(123, self::Extension|call<core::int>(c, 123));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_call.dart.weak.modular.expect
index 13106a6..c844073 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.weak.modular.expect
@@ -1,43 +1,33 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- method method(covariant-by-class self::Class::T* a) → self::Class::T*
+ method method(covariant-by-class self::Class::T% a) → self::Class::T%
return a;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T*
- return #this.{self::Class::method}(a){(self::Extension|call::T*) →* self::Extension|call::T*};
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T*
- return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a);
+static method Extension|call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|call::T%> #this, self::Extension|call::T% a) → self::Extension|call::T%
+ return #this.{self::Class::method}(a){(self::Extension|call::T%) → self::Extension|call::T%};
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#call::T%> #this) → (self::Extension|get#call::T%) → self::Extension|get#call::T%
+ return (self::Extension|get#call::T% a) → self::Extension|get#call::T% => self::Extension|call<self::Extension|get#call::T%>(#this, a);
static method main() → dynamic {
- self::Class<core::int*>* c = new self::Class::•<core::int*>();
- self::expect(42, self::Extension|call<core::int*>(c, 42));
- self::expect(87, self::Extension|call<core::int*>(c, 87));
- self::expect(123, self::Extension|call<core::int*>(c, 123));
- self::expect(42, self::Extension|call<core::int*>(c, 42));
- self::expect(87, self::Extension|call<core::int*>(c, 87));
- self::expect(123, self::Extension|call<core::int*>(c, 123));
+ self::Class<core::int> c = new self::Class::•<core::int>();
+ self::expect(42, self::Extension|call<core::int>(c, 42));
+ self::expect(87, self::Extension|call<core::int>(c, 87));
+ self::expect(123, self::Extension|call<core::int>(c, 123));
+ self::expect(42, self::Extension|call<core::int>(c, 42));
+ self::expect(87, self::Extension|call<core::int>(c, 87));
+ self::expect(123, self::Extension|call<core::int>(c, 123));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_call.dart.weak.outline.expect
index b4a47b5..2705423 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.weak.outline.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
;
- method method(covariant-by-class self::Class::T* a) → self::Class::T*
+ method method(covariant-by-class self::Class::T% a) → self::Class::T%
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T*
+static method Extension|call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|call::T%> #this, self::Extension|call::T% a) → self::Extension|call::T%
;
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T*
- return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a);
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#call::T%> #this) → (self::Extension|get#call::T%) → self::Extension|get#call::T%
+ return (self::Extension|get#call::T% a) → self::Extension|get#call::T% => self::Extension|call<self::Extension|get#call::T%>(#this, a);
static method main() → dynamic
;
static method expect(dynamic expected, dynamic actual) → dynamic
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect
index 13106a6..c844073 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.weak.transformed.expect
@@ -1,43 +1,33 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- method method(covariant-by-class self::Class::T* a) → self::Class::T*
+ method method(covariant-by-class self::Class::T% a) → self::Class::T%
return a;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T*
- return #this.{self::Class::method}(a){(self::Extension|call::T*) →* self::Extension|call::T*};
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T*
- return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a);
+static method Extension|call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|call::T%> #this, self::Extension|call::T% a) → self::Extension|call::T%
+ return #this.{self::Class::method}(a){(self::Extension|call::T%) → self::Extension|call::T%};
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#call::T%> #this) → (self::Extension|get#call::T%) → self::Extension|get#call::T%
+ return (self::Extension|get#call::T% a) → self::Extension|get#call::T% => self::Extension|call<self::Extension|get#call::T%>(#this, a);
static method main() → dynamic {
- self::Class<core::int*>* c = new self::Class::•<core::int*>();
- self::expect(42, self::Extension|call<core::int*>(c, 42));
- self::expect(87, self::Extension|call<core::int*>(c, 87));
- self::expect(123, self::Extension|call<core::int*>(c, 123));
- self::expect(42, self::Extension|call<core::int*>(c, 42));
- self::expect(87, self::Extension|call<core::int*>(c, 87));
- self::expect(123, self::Extension|call<core::int*>(c, 123));
+ self::Class<core::int> c = new self::Class::•<core::int>();
+ self::expect(42, self::Extension|call<core::int>(c, 42));
+ self::expect(87, self::Extension|call<core::int>(c, 87));
+ self::expect(123, self::Extension|call<core::int>(c, 123));
+ self::expect(42, self::Extension|call<core::int>(c, 42));
+ self::expect(87, self::Extension|call<core::int>(c, 87));
+ self::expect(123, self::Extension|call<core::int>(c, 123));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart b/pkg/front_end/testcases/extensions/extension_constructor.dart
index 44773f4..5cd257d 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.textual_outline.expect
index d24be05..ac6bee2 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
Extension() {}
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.expect
index 8400d5d..f86c11f 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,25 +26,15 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
+static method Extension|method(lowered final self::Class #this) → dynamic {}
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|method(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.modular.expect
index 8400d5d..f86c11f 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,25 +26,15 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
+static method Extension|method(lowered final self::Class #this) → dynamic {}
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|method(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.outline.expect
index fec0bcb..7ef855d 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,26 +26,16 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method(lowered final self::Class* #this) → dynamic
+static method Extension|method(lowered final self::Class #this) → dynamic
;
-static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|method(#this);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.transformed.expect
index 8400d5d..f86c11f 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,25 +26,15 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
+static method Extension|method(lowered final self::Class #this) → dynamic {}
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|method(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart b/pkg/front_end/testcases/extensions/extension_member_conflict.dart
index 547cb0e..ef4e4de 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension Extension<T> on int {
int get duplicateInstanceGetter => 0;
int get duplicateInstanceGetter => 0;
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline.expect
index 7404877..f9f55d9 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension<T> on int {
int get duplicateInstanceGetter => 0;
int get duplicateInstanceGetter => 0;
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline_modelled.expect
index 903bc75..88f38e3 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension<T> on int {
int get duplicateInstanceGetter => 0;
int get duplicateInstanceGetter => 0;
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.expect
index fd72cf1..d2335e5 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -140,7 +140,7 @@
import self as self;
import "dart:core" as core;
-extension Extension<T extends core::Object* = dynamic> on core::int* {
+extension Extension<T extends core::Object? = dynamic> on core::int {
get duplicateInstanceGetter = self::Extension|get#duplicateInstanceGetter;
method duplicateInstanceMethod = self::Extension|duplicateInstanceMethod;
tearoff duplicateInstanceMethod = self::Extension|get#duplicateInstanceMethod;
@@ -168,42 +168,42 @@
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
}
-static field core::int* Extension|duplicateStaticField;
-static method Extension|get#duplicateInstanceGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static field core::int Extension|duplicateStaticField;
+static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → void {}
-static method Extension|get#duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → () →* void
- return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T*>(#this);
-static get Extension|duplicateStaticGetter() → core::int*
+static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → void {}
+static method Extension|get#duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → () → void
+ return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T%>(#this);
+static get Extension|duplicateStaticGetter() → core::int
return 0;
-static set Extension|duplicateStaticSetter(core::int* value) → void {}
+static set Extension|duplicateStaticSetter(core::int value) → void {}
static method Extension|duplicateStaticMethod() → void {}
-static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static get Extension|duplicateStaticGetterPlusSetter() → core::int*
+static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static get Extension|duplicateStaticGetterPlusSetter() → core::int
return 0;
-static set Extension|duplicateStaticGetterPlusSetter(core::int* value) → void {}
-static get Extension|duplicateStaticSetterPlusGetter() → core::int*
+static set Extension|duplicateStaticGetterPlusSetter(core::int value) → void {}
+static get Extension|duplicateStaticSetterPlusGetter() → core::int
return 0;
-static set Extension|duplicateStaticSetterPlusGetter(core::int* value) → void {}
-static get Extension|duplicateStaticGetterAndSetter() → core::int*
+static set Extension|duplicateStaticSetterPlusGetter(core::int value) → void {}
+static get Extension|duplicateStaticGetterAndSetter() → core::int
return 0;
-static set Extension|duplicateStaticGetterAndSetter(core::int* value) → void {}
-static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static set Extension|duplicateStaticGetterAndSetter(core::int value) → void {}
+static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static set Extension|instanceGetterAndStaticSetter(core::int* value) → void {}
-static get Extension|instanceSetterAndStaticGetter() → core::int*
+static set Extension|instanceGetterAndStaticSetter(core::int value) → void {}
+static get Extension|instanceSetterAndStaticGetter() → core::int
return 0;
-static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#instanceGetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#instanceGetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#instanceSetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
+static method Extension|set#instanceSetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.modular.expect
index fd72cf1..d2335e5 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -140,7 +140,7 @@
import self as self;
import "dart:core" as core;
-extension Extension<T extends core::Object* = dynamic> on core::int* {
+extension Extension<T extends core::Object? = dynamic> on core::int {
get duplicateInstanceGetter = self::Extension|get#duplicateInstanceGetter;
method duplicateInstanceMethod = self::Extension|duplicateInstanceMethod;
tearoff duplicateInstanceMethod = self::Extension|get#duplicateInstanceMethod;
@@ -168,42 +168,42 @@
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
}
-static field core::int* Extension|duplicateStaticField;
-static method Extension|get#duplicateInstanceGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static field core::int Extension|duplicateStaticField;
+static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → void {}
-static method Extension|get#duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → () →* void
- return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T*>(#this);
-static get Extension|duplicateStaticGetter() → core::int*
+static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → void {}
+static method Extension|get#duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → () → void
+ return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T%>(#this);
+static get Extension|duplicateStaticGetter() → core::int
return 0;
-static set Extension|duplicateStaticSetter(core::int* value) → void {}
+static set Extension|duplicateStaticSetter(core::int value) → void {}
static method Extension|duplicateStaticMethod() → void {}
-static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static get Extension|duplicateStaticGetterPlusSetter() → core::int*
+static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static get Extension|duplicateStaticGetterPlusSetter() → core::int
return 0;
-static set Extension|duplicateStaticGetterPlusSetter(core::int* value) → void {}
-static get Extension|duplicateStaticSetterPlusGetter() → core::int*
+static set Extension|duplicateStaticGetterPlusSetter(core::int value) → void {}
+static get Extension|duplicateStaticSetterPlusGetter() → core::int
return 0;
-static set Extension|duplicateStaticSetterPlusGetter(core::int* value) → void {}
-static get Extension|duplicateStaticGetterAndSetter() → core::int*
+static set Extension|duplicateStaticSetterPlusGetter(core::int value) → void {}
+static get Extension|duplicateStaticGetterAndSetter() → core::int
return 0;
-static set Extension|duplicateStaticGetterAndSetter(core::int* value) → void {}
-static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static set Extension|duplicateStaticGetterAndSetter(core::int value) → void {}
+static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static set Extension|instanceGetterAndStaticSetter(core::int* value) → void {}
-static get Extension|instanceSetterAndStaticGetter() → core::int*
+static set Extension|instanceGetterAndStaticSetter(core::int value) → void {}
+static get Extension|instanceSetterAndStaticGetter() → core::int
return 0;
-static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#instanceGetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#instanceGetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#instanceSetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
+static method Extension|set#instanceSetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.outline.expect
index 4010730..649c9bc 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -140,7 +140,7 @@
import self as self;
import "dart:core" as core;
-extension Extension<T extends core::Object* = dynamic> on core::int* {
+extension Extension<T extends core::Object? = dynamic> on core::int {
get duplicateInstanceGetter = self::Extension|get#duplicateInstanceGetter;
method duplicateInstanceMethod = self::Extension|duplicateInstanceMethod;
tearoff duplicateInstanceMethod = self::Extension|get#duplicateInstanceMethod;
@@ -168,56 +168,56 @@
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
}
-static field core::int* Extension|duplicateStaticField;
-static method Extension|get#duplicateInstanceGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static field core::int Extension|duplicateStaticField;
+static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
;
-static method Extension|set#duplicateInstanceSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void
;
-static method Extension|duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → void
+static method Extension|duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → void
;
-static method Extension|get#duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → () →* void
- return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T*>(#this);
-static get Extension|duplicateStaticGetter() → core::int*
+static method Extension|get#duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → () → void
+ return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T%>(#this);
+static get Extension|duplicateStaticGetter() → core::int
;
-static set Extension|duplicateStaticSetter(core::int* value) → void
+static set Extension|duplicateStaticSetter(core::int value) → void
;
static method Extension|duplicateStaticMethod() → void
;
-static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
;
-static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void
;
-static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
;
-static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void
;
-static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
;
-static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void
;
-static get Extension|duplicateStaticGetterPlusSetter() → core::int*
+static get Extension|duplicateStaticGetterPlusSetter() → core::int
;
-static set Extension|duplicateStaticGetterPlusSetter(core::int* value) → void
+static set Extension|duplicateStaticGetterPlusSetter(core::int value) → void
;
-static get Extension|duplicateStaticSetterPlusGetter() → core::int*
+static get Extension|duplicateStaticSetterPlusGetter() → core::int
;
-static set Extension|duplicateStaticSetterPlusGetter(core::int* value) → void
+static set Extension|duplicateStaticSetterPlusGetter(core::int value) → void
;
-static get Extension|duplicateStaticGetterAndSetter() → core::int*
+static get Extension|duplicateStaticGetterAndSetter() → core::int
;
-static set Extension|duplicateStaticGetterAndSetter(core::int* value) → void
+static set Extension|duplicateStaticGetterAndSetter(core::int value) → void
;
-static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
;
-static set Extension|instanceGetterAndStaticSetter(core::int* value) → void
+static set Extension|instanceGetterAndStaticSetter(core::int value) → void
;
-static get Extension|instanceSetterAndStaticGetter() → core::int*
+static get Extension|instanceSetterAndStaticGetter() → core::int
;
-static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void
;
-static method Extension|get#instanceGetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#instanceGetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
;
-static method Extension|set#instanceSetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#instanceSetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.transformed.expect
index fd72cf1..d2335e5 100644
--- a/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_member_conflict.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -140,7 +140,7 @@
import self as self;
import "dart:core" as core;
-extension Extension<T extends core::Object* = dynamic> on core::int* {
+extension Extension<T extends core::Object? = dynamic> on core::int {
get duplicateInstanceGetter = self::Extension|get#duplicateInstanceGetter;
method duplicateInstanceMethod = self::Extension|duplicateInstanceMethod;
tearoff duplicateInstanceMethod = self::Extension|get#duplicateInstanceMethod;
@@ -168,42 +168,42 @@
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
}
-static field core::int* Extension|duplicateStaticField;
-static method Extension|get#duplicateInstanceGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static field core::int Extension|duplicateStaticField;
+static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → void {}
-static method Extension|get#duplicateInstanceMethod<T extends core::Object* = dynamic>(lowered final core::int* #this) → () →* void
- return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T*>(#this);
-static get Extension|duplicateStaticGetter() → core::int*
+static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → void {}
+static method Extension|get#duplicateInstanceMethod<T extends core::Object? = dynamic>(lowered final core::int #this) → () → void
+ return () → void => self::Extension|duplicateInstanceMethod<self::Extension|get#duplicateInstanceMethod::T%>(#this);
+static get Extension|duplicateStaticGetter() → core::int
return 0;
-static set Extension|duplicateStaticSetter(core::int* value) → void {}
+static set Extension|duplicateStaticSetter(core::int value) → void {}
static method Extension|duplicateStaticMethod() → void {}
-static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|get#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#duplicateInstanceGetterPlusSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#duplicateInstanceSetterPlusGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static get Extension|duplicateStaticGetterPlusSetter() → core::int*
+static method Extension|set#duplicateInstanceGetterAndSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static get Extension|duplicateStaticGetterPlusSetter() → core::int
return 0;
-static set Extension|duplicateStaticGetterPlusSetter(core::int* value) → void {}
-static get Extension|duplicateStaticSetterPlusGetter() → core::int*
+static set Extension|duplicateStaticGetterPlusSetter(core::int value) → void {}
+static get Extension|duplicateStaticSetterPlusGetter() → core::int
return 0;
-static set Extension|duplicateStaticSetterPlusGetter(core::int* value) → void {}
-static get Extension|duplicateStaticGetterAndSetter() → core::int*
+static set Extension|duplicateStaticSetterPlusGetter(core::int value) → void {}
+static get Extension|duplicateStaticGetterAndSetter() → core::int
return 0;
-static set Extension|duplicateStaticGetterAndSetter(core::int* value) → void {}
-static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static set Extension|duplicateStaticGetterAndSetter(core::int value) → void {}
+static method Extension|get#instanceGetterAndStaticSetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static set Extension|instanceGetterAndStaticSetter(core::int* value) → void {}
-static get Extension|instanceSetterAndStaticGetter() → core::int*
+static set Extension|instanceGetterAndStaticSetter(core::int value) → void {}
+static get Extension|instanceSetterAndStaticGetter() → core::int
return 0;
-static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|get#instanceGetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this) → core::int*
+static method Extension|set#instanceSetterAndStaticGetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
+static method Extension|get#instanceGetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
return 0;
-static method Extension|set#instanceSetterAndStaticField<T extends core::Object* = dynamic>(lowered final core::int* #this, core::int* value) → void {}
+static method Extension|set#instanceSetterAndStaticField<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart b/pkg/front_end/testcases/extensions/extension_methods.dart
index 958a313..079b344 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart=2.9
-
import 'package:expect/expect.dart';
class C {
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline.expect
index 298f478..5ed8d9d8 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'package:expect/expect.dart';
class C {
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline_modelled.expect
index 298f478..5ed8d9d8 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'package:expect/expect.dart';
class C {
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect
index dd3ee97..4ac2693 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;
@@ -6,29 +6,19 @@
import "package:expect/expect.dart";
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- get one() → core::int*
+ get one() → core::int
return 1;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
get two = self::E|get#two;
}
-static method E|get#two(lowered final self::C* #this) → core::int*
+static method E|get#two(lowered final self::C #this) → core::int
return 2;
static method main() → dynamic {
- self::C* c = new self::C::•();
- core::int* result = c.{self::C::one}{core::int*}.{core::num::+}(self::E|get#two(c)){(core::num*) →* core::int*};
+ self::C c = new self::C::•();
+ core::int result = c.{self::C::one}{core::int}.{core::num::+}(self::E|get#two(c)){(core::num) → core::int};
exp::Expect::equals(result, 3);
}
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.modular.expect
index dd3ee97..4ac2693 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;
@@ -6,29 +6,19 @@
import "package:expect/expect.dart";
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- get one() → core::int*
+ get one() → core::int
return 1;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
get two = self::E|get#two;
}
-static method E|get#two(lowered final self::C* #this) → core::int*
+static method E|get#two(lowered final self::C #this) → core::int
return 2;
static method main() → dynamic {
- self::C* c = new self::C::•();
- core::int* result = c.{self::C::one}{core::int*}.{core::num::+}(self::E|get#two(c)){(core::num*) →* core::int*};
+ self::C c = new self::C::•();
+ core::int result = c.{self::C::one}{core::int}.{core::num::+}(self::E|get#two(c)){(core::num) → core::int};
exp::Expect::equals(result, 3);
}
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.outline.expect
index 20fb805..d7ba71b 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.outline.expect
@@ -1,29 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart";
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
;
- get one() → core::int*
+ get one() → core::int
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
get two = self::E|get#two;
}
-static method E|get#two(lowered final self::C* #this) → core::int*
+static method E|get#two(lowered final self::C #this) → core::int
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect
index dd3ee97..4ac2693 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;
@@ -6,29 +6,19 @@
import "package:expect/expect.dart";
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- get one() → core::int*
+ get one() → core::int
return 1;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
get two = self::E|get#two;
}
-static method E|get#two(lowered final self::C* #this) → core::int*
+static method E|get#two(lowered final self::C #this) → core::int
return 2;
static method main() → dynamic {
- self::C* c = new self::C::•();
- core::int* result = c.{self::C::one}{core::int*}.{core::num::+}(self::E|get#two(c)){(core::num*) →* core::int*};
+ self::C c = new self::C::•();
+ core::int result = c.{self::C::one}{core::int}.{core::num::+}(self::E|get#two(c)){(core::num) → core::int};
exp::Expect::equals(result, 3);
}
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart b/pkg/front_end/testcases/extensions/extension_setter.dart
index de402ac..99a3f11 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class Class {
int field;
}
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect
index 27a9a41..795fc5b 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart.weak.transformed.expect
@@ -224,104 +224,104 @@
Extra constant evaluation status:
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:47:30 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:47:30 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:51:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:51:32 -> IntConstant(2)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:56:24 -> IntConstant(-2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:58:34 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:58:34 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:60:12 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:60:35 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:65:25 -> IntConstant(-2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:67:35 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:67:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:69:12 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:69:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:86:30 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:86:30 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:89:41 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:89:41 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:93:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:93:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:97:43 -> IntConstant(6)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:97:43 -> IntConstant(6)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:102:24 -> IntConstant(-2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:104:34 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:104:34 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:106:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:106:35 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:110:35 -> IntConstant(-6)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:112:45 -> IntConstant(7)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:112:45 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:114:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:114:46 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:119:25 -> IntConstant(-2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:121:35 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:121:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:123:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:123:36 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:127:36 -> IntConstant(-6)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:129:46 -> IntConstant(7)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:129:46 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:131:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:131:47 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:136:31 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:136:31 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:139:41 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:139:41 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:143:33 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:143:33 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:147:43 -> IntConstant(6)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:147:43 -> IntConstant(6)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:152:25 -> IntConstant(-2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:154:35 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:154:35 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:156:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:156:36 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:160:35 -> IntConstant(-6)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:162:45 -> IntConstant(7)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:162:45 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:164:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:164:46 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:169:26 -> IntConstant(-2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:171:36 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:171:36 -> IntConstant(3)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:173:10 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:173:37 -> IntConstant(-4)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:177:36 -> IntConstant(-6)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:179:46 -> IntConstant(7)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:179:46 -> IntConstant(7)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:181:10 -> IntConstant(-8)
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:181:47 -> IntConstant(-8)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:187:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:187:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:49:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:49:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:53:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:53:32 -> IntConstant(2)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:58:24 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:60:34 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:60:34 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:62:12 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:62:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:62:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:62:35 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:67:25 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:69:35 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:69:35 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:71:12 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:71:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:71:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:71:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:88:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:88:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:91:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:91:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:95:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:95:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:99:43 -> IntConstant(6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:99:43 -> IntConstant(6)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:104:24 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:106:34 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:106:34 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:108:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:108:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:108:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:108:35 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:112:35 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:114:45 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:114:45 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:116:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:116:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:116:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:116:46 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:121:25 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:123:35 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:123:35 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:125:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:125:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:125:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:125:36 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:129:36 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:131:46 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:131:46 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:133:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:133:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:133:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:133:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:138:31 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:138:31 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:141:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:141:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:145:33 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:145:33 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:149:43 -> IntConstant(6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:149:43 -> IntConstant(6)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:154:25 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:156:35 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:156:35 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:158:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:158:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:158:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:158:36 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:162:35 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:164:45 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:164:45 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:166:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:166:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:166:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:166:46 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:171:26 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:173:36 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:173:36 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:175:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:175:37 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:175:37 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:175:37 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:179:36 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:181:46 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:181:46 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:183:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:183:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:183:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:183:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:189:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:189:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:194:33 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:194:33 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:191:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:191:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:196:33 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:196:33 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:201:53 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:201:53 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:198:33 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:198:33 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:203:53 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:203:53 -> IntConstant(1)
Extra constant evaluation: evaluated: 835, effectively constant: 100
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart b/pkg/front_end/testcases/extensions/extension_setter2.dart
new file mode 100644
index 0000000..4709711
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart
@@ -0,0 +1,222 @@
+// Copyright (c) 2019, 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 Class {
+ int field;
+ int? nullableField;
+
+ Class(this.field);
+}
+
+extension Extension on Class {
+ int get simpleSetter => field;
+
+ set simpleSetter(int value) {
+ field = value;
+ }
+
+ int? get simpleNullableSetter => nullableField;
+
+ set simpleNullableSetter(int? value) {
+ nullableField = value;
+ }
+
+ int get mutatingSetter => field;
+
+ set mutatingSetter(int value) {
+ value = value + 1;
+ field = value;
+ }
+
+ int get setterWithReturn => field;
+
+ set setterWithReturn(int value) {
+ if (value < 0) {
+ field = -value;
+ return;
+ }
+ field = value;
+ }
+
+ int get setterWithClosure => field;
+
+ set setterWithClosure(int value) {
+ abs(value) {
+ return value < 0 ? -value : value;
+ }
+
+ field = abs(value);
+ }
+
+ testInternal() {
+ expect(-1, field);
+
+ simpleSetter = 0;
+ expect(0, field);
+ expect(1, simpleSetter = 1);
+
+ mutatingSetter = 0;
+ expect(1, field);
+ expect(2, mutatingSetter = 2);
+ expect(3, field);
+
+ setterWithReturn = 1;
+ expect(1, field);
+ setterWithReturn = -2;
+ expect(2, field);
+ expect(3, setterWithReturn = 3);
+ expect(3, field);
+ expect(-4, setterWithReturn = -4);
+ expect(4, field);
+
+ setterWithClosure = 1;
+ expect(1, field);
+ setterWithClosure = -2;
+ expect(2, field);
+ expect(3, setterWithClosure = 3);
+ expect(3, field);
+ expect(-4, setterWithClosure = -4);
+ expect(4, field);
+ }
+}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T> {
+ set setter(T value) {}
+}
+
+main() {
+ var c = new Class(-1);
+ test(c, c);
+}
+
+test(Class c, Class? cn) {
+ expect(-1, c.field);
+
+ c.simpleSetter = 0;
+ expect(0, c.field);
+ expect(1, c.simpleSetter = 1);
+ Extension(c).simpleSetter = 2;
+ expect(2, c.field);
+ expect(3, Extension(c).simpleSetter = 3);
+
+ c.mutatingSetter = 0;
+ expect(1, c.field);
+ expect(2, c.mutatingSetter = 2);
+ expect(3, c.field);
+ Extension(c).mutatingSetter = 4;
+ expect(5, c.field);
+ expect(6, Extension(c).mutatingSetter = 6);
+ expect(7, c.field);
+
+ c.setterWithReturn = 1;
+ expect(1, c.field);
+ c.setterWithReturn = -2;
+ expect(2, c.field);
+ expect(3, c.setterWithReturn = 3);
+ expect(3, c.field);
+ expect(-4, c.setterWithReturn = -4);
+ expect(4, c.field);
+ Extension(c).setterWithReturn = 5;
+ expect(5, c.field);
+ Extension(c).setterWithReturn = -6;
+ expect(6, c.field);
+ expect(7, Extension(c).setterWithReturn = 7);
+ expect(7, c.field);
+ expect(-8, Extension(c).setterWithReturn = -8);
+ expect(8, c.field);
+
+ c.setterWithClosure = 1;
+ expect(1, c.field);
+ c.setterWithClosure = -2;
+ expect(2, c.field);
+ expect(3, c.setterWithClosure = 3);
+ expect(3, c.field);
+ expect(-4, c.setterWithClosure = -4);
+ expect(4, c.field);
+ Extension(c).setterWithClosure = 5;
+ expect(5, c.field);
+ Extension(c).setterWithClosure = -6;
+ expect(6, c.field);
+ expect(7, Extension(c).setterWithClosure = 7);
+ expect(7, c.field);
+ expect(-8, Extension(c).setterWithClosure = -8);
+ expect(8, c.field);
+
+ c.simpleSetter = 0;
+ expect(0, cn?.field);
+ expect(1, cn?.simpleSetter = 1);
+ Extension(c).simpleSetter = 2;
+ expect(2, cn?.field);
+ expect(3, Extension(c).simpleSetter = 3);
+
+ c.mutatingSetter = 0;
+ expect(1, cn?.field);
+ expect(2, cn?.mutatingSetter = 2);
+ expect(3, cn?.field);
+ Extension(c).mutatingSetter = 4;
+ expect(5, cn?.field);
+ expect(6, Extension(c).mutatingSetter = 6);
+ expect(7, cn?.field);
+
+ cn?.setterWithReturn = 1;
+ expect(1, cn?.field);
+ cn?.setterWithReturn = -2;
+ expect(2, cn?.field);
+ expect(3, cn?.setterWithReturn = 3);
+ expect(3, cn?.field);
+ expect(-4, cn?.setterWithReturn = -4);
+ expect(4, cn?.field);
+ Extension(c).setterWithReturn = 5;
+ expect(5, cn?.field);
+ Extension(c).setterWithReturn = -6;
+ expect(6, cn?.field);
+ expect(7, Extension(c).setterWithReturn = 7);
+ expect(7, cn?.field);
+ expect(-8, Extension(c).setterWithReturn = -8);
+ expect(8, cn?.field);
+
+ cn?.setterWithClosure = 1;
+ expect(1, cn?.field);
+ cn?.setterWithClosure = -2;
+ expect(2, cn?.field);
+ expect(3, cn?.setterWithClosure = 3);
+ expect(3, cn?.field);
+ expect(-4, cn?.setterWithClosure = -4);
+ expect(4, cn?.field);
+ Extension(c).setterWithClosure = 5;
+ expect(5, cn?.field);
+ Extension(c).setterWithClosure = -6;
+ expect(6, cn?.field);
+ expect(7, Extension(c).setterWithClosure = 7);
+ expect(7, cn?.field);
+ expect(-8, Extension(c).setterWithClosure = -8);
+ expect(8, cn?.field);
+
+ c.nullableField = null;
+ c.simpleNullableSetter ??= 1;
+ expect(1, c.nullableField);
+ expect(1, c.simpleNullableSetter ??= 2);
+ c.nullableField = null;
+ expect(2, c.simpleNullableSetter ??= 2);
+
+ cn?.nullableField = null;
+ cn?.simpleNullableSetter ??= 1;
+ expect(1, cn?.nullableField);
+ expect(1, cn?.simpleNullableSetter ??= 2);
+ cn?.nullableField = null;
+ expect(2, cn?.simpleNullableSetter ??= 2);
+
+ new Class(-1).testInternal();
+
+ GenericClass<int> genericClass = new GenericClass<int>();
+ expect(1, GenericExtension(genericClass).setter = 1);
+}
+
+expect(expected, actual) {
+ if (expected != actual) {
+ throw 'Mismatch: expected=$expected, actual=$actual';
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.textual_outline.expect
new file mode 100644
index 0000000..d0e8485
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.textual_outline.expect
@@ -0,0 +1,29 @@
+class Class {
+ int field;
+ int? nullableField;
+ Class(this.field);
+}
+
+extension Extension on Class {
+ int get simpleSetter => field;
+ set simpleSetter(int value) {}
+ int? get simpleNullableSetter => nullableField;
+ set simpleNullableSetter(int? value) {}
+ int get mutatingSetter => field;
+ set mutatingSetter(int value) {}
+ int get setterWithReturn => field;
+ set setterWithReturn(int value) {}
+ int get setterWithClosure => field;
+ set setterWithClosure(int value) {}
+ testInternal() {}
+}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T> {
+ set setter(T value) {}
+}
+
+main() {}
+test(Class c, Class? cn) {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3b3923ee
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.textual_outline_modelled.expect
@@ -0,0 +1,30 @@
+class Class {
+ Class(this.field);
+ int? nullableField;
+ int field;
+}
+
+class GenericClass<T> {}
+
+expect(expected, actual) {}
+
+extension Extension on Class {
+ int? get simpleNullableSetter => nullableField;
+ int get mutatingSetter => field;
+ int get setterWithClosure => field;
+ int get setterWithReturn => field;
+ int get simpleSetter => field;
+ set mutatingSetter(int value) {}
+ set setterWithClosure(int value) {}
+ set setterWithReturn(int value) {}
+ set simpleNullableSetter(int? value) {}
+ set simpleSetter(int value) {}
+ testInternal() {}
+}
+
+extension GenericExtension<T> on GenericClass<T> {
+ set setter(T value) {}
+}
+
+main() {}
+test(Class c, Class? cn) {}
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect
new file mode 100644
index 0000000..e483e9c
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect
@@ -0,0 +1,214 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ field core::int? nullableField = null;
+ constructor •(core::int field) → self::Class
+ : self::Class::field = field, super core::Object::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get simpleSetter = self::Extension|get#simpleSetter;
+ get simpleNullableSetter = self::Extension|get#simpleNullableSetter;
+ get mutatingSetter = self::Extension|get#mutatingSetter;
+ get setterWithReturn = self::Extension|get#setterWithReturn;
+ get setterWithClosure = self::Extension|get#setterWithClosure;
+ method testInternal = self::Extension|testInternal;
+ tearoff testInternal = self::Extension|get#testInternal;
+ set simpleSetter = self::Extension|set#simpleSetter;
+ set simpleNullableSetter = self::Extension|set#simpleNullableSetter;
+ set mutatingSetter = self::Extension|set#mutatingSetter;
+ set setterWithReturn = self::Extension|set#setterWithReturn;
+ set setterWithClosure = self::Extension|set#setterWithClosure;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ set setter = self::GenericExtension|set#setter;
+}
+static method Extension|get#simpleSetter(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#simpleSetter(lowered final self::Class #this, core::int value) → void {
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#simpleNullableSetter(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::nullableField}{core::int?};
+static method Extension|set#simpleNullableSetter(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::nullableField} = value;
+}
+static method Extension|get#mutatingSetter(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#mutatingSetter(lowered final self::Class #this, core::int value) → void {
+ value = value.{core::num::+}(1){(core::num) → core::int};
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#setterWithReturn(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#setterWithReturn(lowered final self::Class #this, core::int value) → void {
+ if(value.{core::num::<}(0){(core::num) → core::bool}) {
+ #this.{self::Class::field} = value.{core::int::unary-}(){() → core::int};
+ return;
+ }
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#setterWithClosure(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#setterWithClosure(lowered final self::Class #this, core::int value) → void {
+ function abs(dynamic value) → dynamic {
+ return value{dynamic}.<(0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool ?{dynamic} value{dynamic}.unary-() : value;
+ }
+ #this.{self::Class::field} = abs(value){(dynamic) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+}
+static method Extension|testInternal(lowered final self::Class #this) → dynamic {
+ self::expect(1.{core::int::unary-}(){() → core::int}, #this.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(#this, 0);
+ self::expect(0, #this.{self::Class::field}{core::int});
+ self::expect(1, let final core::int #t1 = 1 in let final void #t2 = self::Extension|set#simpleSetter(#this, #t1) in #t1);
+ self::Extension|set#mutatingSetter(#this, 0);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::expect(2, let final core::int #t3 = 2 in let final void #t4 = self::Extension|set#mutatingSetter(#this, #t3) in #t3);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(#this, 1);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, #this.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t7 = 4.{core::int::unary-}(){() → core::int} in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+ self::expect(4, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(#this, 1);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, #this.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t11 = 4.{core::int::unary-}(){() → core::int} in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+ self::expect(4, #this.{self::Class::field}{core::int});
+}
+static method Extension|get#testInternal(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testInternal(#this);
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T% value) → void {}
+static method main() → dynamic {
+ self::Class c = new self::Class::•(1.{core::int::unary-}(){() → core::int});
+ self::test(c, c);
+}
+static method test(self::Class c, self::Class? cn) → dynamic {
+ self::expect(1.{core::int::unary-}(){() → core::int}, c.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(c, 0);
+ self::expect(0, c.{self::Class::field}{core::int});
+ self::expect(1, let final core::int #t13 = 1 in let final void #t14 = self::Extension|set#simpleSetter(c, #t13) in #t13);
+ self::Extension|set#simpleSetter(c, 2);
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class #t15 = c in let final core::int #t16 = 3 in let final void #t17 = self::Extension|set#simpleSetter(#t15, #t16) in #t16);
+ self::Extension|set#mutatingSetter(c, 0);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::expect(2, let final core::int #t18 = 2 in let final void #t19 = self::Extension|set#mutatingSetter(c, #t18) in #t18);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::Extension|set#mutatingSetter(c, 4);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::expect(6, let final self::Class #t20 = c in let final core::int #t21 = 6 in let final void #t22 = self::Extension|set#mutatingSetter(#t20, #t21) in #t21);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 1);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t25 = 4.{core::int::unary-}(){() → core::int} in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+ self::expect(4, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 5);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, c.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t27 = c in let final core::int #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t30 = c in let final core::int #t31 = 8.{core::int::unary-}(){() → core::int} in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+ self::expect(8, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 1);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t35 = 4.{core::int::unary-}(){() → core::int} in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+ self::expect(4, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 5);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, c.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t37 = c in let final core::int #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t40 = c in let final core::int #t41 = 8.{core::int::unary-}(){() → core::int} in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+ self::expect(8, c.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(c, 0);
+ self::expect(0, let final self::Class? #t43 = cn in #t43 == null ?{core::int?} null : #t43{self::Class}.{self::Class::field}{core::int});
+ self::expect(1, let final self::Class? #t44 = cn in #t44 == null ?{core::int?} null : let final core::int #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44{self::Class}, #t45) in #t45);
+ self::Extension|set#simpleSetter(c, 2);
+ self::expect(2, let final self::Class? #t47 = cn in #t47 == null ?{core::int?} null : #t47{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class #t48 = c in let final core::int #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
+ self::Extension|set#mutatingSetter(c, 0);
+ self::expect(1, let final self::Class? #t51 = cn in #t51 == null ?{core::int?} null : #t51{self::Class}.{self::Class::field}{core::int});
+ self::expect(2, let final self::Class? #t52 = cn in #t52 == null ?{core::int?} null : let final core::int #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52{self::Class}, #t53) in #t53);
+ self::expect(3, let final self::Class? #t55 = cn in #t55 == null ?{core::int?} null : #t55{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#mutatingSetter(c, 4);
+ self::expect(5, let final self::Class? #t56 = cn in #t56 == null ?{core::int?} null : #t56{self::Class}.{self::Class::field}{core::int});
+ self::expect(6, let final self::Class #t57 = c in let final core::int #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
+ self::expect(7, let final self::Class? #t60 = cn in #t60 == null ?{core::int?} null : #t60{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t61 = cn in #t61 == null ?{core::int?} null : self::Extension|set#setterWithReturn(#t61{self::Class}, 1);
+ self::expect(1, let final self::Class? #t62 = cn in #t62 == null ?{core::int?} null : #t62{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t63 = cn in #t63 == null ?{core::int?} null : self::Extension|set#setterWithReturn(#t63{self::Class}, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, let final self::Class? #t64 = cn in #t64 == null ?{core::int?} null : #t64{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class? #t65 = cn in #t65 == null ?{core::int?} null : let final core::int #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65{self::Class}, #t66) in #t66);
+ self::expect(3, let final self::Class? #t68 = cn in #t68 == null ?{core::int?} null : #t68{self::Class}.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t69 = cn in #t69 == null ?{core::int?} null : let final core::int #t70 = 4.{core::int::unary-}(){() → core::int} in let final void #t71 = self::Extension|set#setterWithReturn(#t69{self::Class}, #t70) in #t70);
+ self::expect(4, let final self::Class? #t72 = cn in #t72 == null ?{core::int?} null : #t72{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 5);
+ self::expect(5, let final self::Class? #t73 = cn in #t73 == null ?{core::int?} null : #t73{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, let final self::Class? #t74 = cn in #t74 == null ?{core::int?} null : #t74{self::Class}.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t75 = c in let final core::int #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
+ self::expect(7, let final self::Class? #t78 = cn in #t78 == null ?{core::int?} null : #t78{self::Class}.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t79 = c in let final core::int #t80 = 8.{core::int::unary-}(){() → core::int} in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+ self::expect(8, let final self::Class? #t82 = cn in #t82 == null ?{core::int?} null : #t82{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t83 = cn in #t83 == null ?{core::int?} null : self::Extension|set#setterWithClosure(#t83{self::Class}, 1);
+ self::expect(1, let final self::Class? #t84 = cn in #t84 == null ?{core::int?} null : #t84{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t85 = cn in #t85 == null ?{core::int?} null : self::Extension|set#setterWithClosure(#t85{self::Class}, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, let final self::Class? #t86 = cn in #t86 == null ?{core::int?} null : #t86{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class? #t87 = cn in #t87 == null ?{core::int?} null : let final core::int #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87{self::Class}, #t88) in #t88);
+ self::expect(3, let final self::Class? #t90 = cn in #t90 == null ?{core::int?} null : #t90{self::Class}.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t91 = cn in #t91 == null ?{core::int?} null : let final core::int #t92 = 4.{core::int::unary-}(){() → core::int} in let final void #t93 = self::Extension|set#setterWithClosure(#t91{self::Class}, #t92) in #t92);
+ self::expect(4, let final self::Class? #t94 = cn in #t94 == null ?{core::int?} null : #t94{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 5);
+ self::expect(5, let final self::Class? #t95 = cn in #t95 == null ?{core::int?} null : #t95{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, let final self::Class? #t96 = cn in #t96 == null ?{core::int?} null : #t96{self::Class}.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t97 = c in let final core::int #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
+ self::expect(7, let final self::Class? #t100 = cn in #t100 == null ?{core::int?} null : #t100{self::Class}.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+ self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int});
+ c.{self::Class::nullableField} = null;
+ let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null;
+ self::expect(1, c.{self::Class::nullableField}{core::int?});
+ self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int});
+ c.{self::Class::nullableField} = null;
+ self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int});
+ let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null;
+ let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null;
+ self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?});
+ self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int});
+ let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null;
+ self::expect(2, let final self::Class? #t122 = cn in #t122 == null ?{core::int?} null : let final core::int? #t123 = self::Extension|get#simpleNullableSetter(#t122) in #t123 == null ?{core::int} let final core::int #t124 = 2 in let final void #t125 = self::Extension|set#simpleNullableSetter(#t122, #t124) in #t124 : #t123{core::int});
+ self::Extension|testInternal(new self::Class::•(1.{core::int::unary-}(){() → core::int}));
+ self::GenericClass<core::int> genericClass = new self::GenericClass::•<core::int>();
+ self::expect(1, let final self::GenericClass<core::int> #t126 = genericClass in let final core::int #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int>(#t126, #t127) in #t127);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect
new file mode 100644
index 0000000..e483e9c
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect
@@ -0,0 +1,214 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ field core::int? nullableField = null;
+ constructor •(core::int field) → self::Class
+ : self::Class::field = field, super core::Object::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get simpleSetter = self::Extension|get#simpleSetter;
+ get simpleNullableSetter = self::Extension|get#simpleNullableSetter;
+ get mutatingSetter = self::Extension|get#mutatingSetter;
+ get setterWithReturn = self::Extension|get#setterWithReturn;
+ get setterWithClosure = self::Extension|get#setterWithClosure;
+ method testInternal = self::Extension|testInternal;
+ tearoff testInternal = self::Extension|get#testInternal;
+ set simpleSetter = self::Extension|set#simpleSetter;
+ set simpleNullableSetter = self::Extension|set#simpleNullableSetter;
+ set mutatingSetter = self::Extension|set#mutatingSetter;
+ set setterWithReturn = self::Extension|set#setterWithReturn;
+ set setterWithClosure = self::Extension|set#setterWithClosure;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ set setter = self::GenericExtension|set#setter;
+}
+static method Extension|get#simpleSetter(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#simpleSetter(lowered final self::Class #this, core::int value) → void {
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#simpleNullableSetter(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::nullableField}{core::int?};
+static method Extension|set#simpleNullableSetter(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::nullableField} = value;
+}
+static method Extension|get#mutatingSetter(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#mutatingSetter(lowered final self::Class #this, core::int value) → void {
+ value = value.{core::num::+}(1){(core::num) → core::int};
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#setterWithReturn(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#setterWithReturn(lowered final self::Class #this, core::int value) → void {
+ if(value.{core::num::<}(0){(core::num) → core::bool}) {
+ #this.{self::Class::field} = value.{core::int::unary-}(){() → core::int};
+ return;
+ }
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#setterWithClosure(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#setterWithClosure(lowered final self::Class #this, core::int value) → void {
+ function abs(dynamic value) → dynamic {
+ return value{dynamic}.<(0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool ?{dynamic} value{dynamic}.unary-() : value;
+ }
+ #this.{self::Class::field} = abs(value){(dynamic) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+}
+static method Extension|testInternal(lowered final self::Class #this) → dynamic {
+ self::expect(1.{core::int::unary-}(){() → core::int}, #this.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(#this, 0);
+ self::expect(0, #this.{self::Class::field}{core::int});
+ self::expect(1, let final core::int #t1 = 1 in let final void #t2 = self::Extension|set#simpleSetter(#this, #t1) in #t1);
+ self::Extension|set#mutatingSetter(#this, 0);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::expect(2, let final core::int #t3 = 2 in let final void #t4 = self::Extension|set#mutatingSetter(#this, #t3) in #t3);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(#this, 1);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, #this.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t7 = 4.{core::int::unary-}(){() → core::int} in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+ self::expect(4, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(#this, 1);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, #this.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t11 = 4.{core::int::unary-}(){() → core::int} in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+ self::expect(4, #this.{self::Class::field}{core::int});
+}
+static method Extension|get#testInternal(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testInternal(#this);
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T% value) → void {}
+static method main() → dynamic {
+ self::Class c = new self::Class::•(1.{core::int::unary-}(){() → core::int});
+ self::test(c, c);
+}
+static method test(self::Class c, self::Class? cn) → dynamic {
+ self::expect(1.{core::int::unary-}(){() → core::int}, c.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(c, 0);
+ self::expect(0, c.{self::Class::field}{core::int});
+ self::expect(1, let final core::int #t13 = 1 in let final void #t14 = self::Extension|set#simpleSetter(c, #t13) in #t13);
+ self::Extension|set#simpleSetter(c, 2);
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class #t15 = c in let final core::int #t16 = 3 in let final void #t17 = self::Extension|set#simpleSetter(#t15, #t16) in #t16);
+ self::Extension|set#mutatingSetter(c, 0);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::expect(2, let final core::int #t18 = 2 in let final void #t19 = self::Extension|set#mutatingSetter(c, #t18) in #t18);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::Extension|set#mutatingSetter(c, 4);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::expect(6, let final self::Class #t20 = c in let final core::int #t21 = 6 in let final void #t22 = self::Extension|set#mutatingSetter(#t20, #t21) in #t21);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 1);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t25 = 4.{core::int::unary-}(){() → core::int} in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+ self::expect(4, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 5);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, c.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t27 = c in let final core::int #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t30 = c in let final core::int #t31 = 8.{core::int::unary-}(){() → core::int} in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+ self::expect(8, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 1);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t35 = 4.{core::int::unary-}(){() → core::int} in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+ self::expect(4, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 5);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, c.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t37 = c in let final core::int #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t40 = c in let final core::int #t41 = 8.{core::int::unary-}(){() → core::int} in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+ self::expect(8, c.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(c, 0);
+ self::expect(0, let final self::Class? #t43 = cn in #t43 == null ?{core::int?} null : #t43{self::Class}.{self::Class::field}{core::int});
+ self::expect(1, let final self::Class? #t44 = cn in #t44 == null ?{core::int?} null : let final core::int #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44{self::Class}, #t45) in #t45);
+ self::Extension|set#simpleSetter(c, 2);
+ self::expect(2, let final self::Class? #t47 = cn in #t47 == null ?{core::int?} null : #t47{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class #t48 = c in let final core::int #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
+ self::Extension|set#mutatingSetter(c, 0);
+ self::expect(1, let final self::Class? #t51 = cn in #t51 == null ?{core::int?} null : #t51{self::Class}.{self::Class::field}{core::int});
+ self::expect(2, let final self::Class? #t52 = cn in #t52 == null ?{core::int?} null : let final core::int #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52{self::Class}, #t53) in #t53);
+ self::expect(3, let final self::Class? #t55 = cn in #t55 == null ?{core::int?} null : #t55{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#mutatingSetter(c, 4);
+ self::expect(5, let final self::Class? #t56 = cn in #t56 == null ?{core::int?} null : #t56{self::Class}.{self::Class::field}{core::int});
+ self::expect(6, let final self::Class #t57 = c in let final core::int #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
+ self::expect(7, let final self::Class? #t60 = cn in #t60 == null ?{core::int?} null : #t60{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t61 = cn in #t61 == null ?{core::int?} null : self::Extension|set#setterWithReturn(#t61{self::Class}, 1);
+ self::expect(1, let final self::Class? #t62 = cn in #t62 == null ?{core::int?} null : #t62{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t63 = cn in #t63 == null ?{core::int?} null : self::Extension|set#setterWithReturn(#t63{self::Class}, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, let final self::Class? #t64 = cn in #t64 == null ?{core::int?} null : #t64{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class? #t65 = cn in #t65 == null ?{core::int?} null : let final core::int #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65{self::Class}, #t66) in #t66);
+ self::expect(3, let final self::Class? #t68 = cn in #t68 == null ?{core::int?} null : #t68{self::Class}.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t69 = cn in #t69 == null ?{core::int?} null : let final core::int #t70 = 4.{core::int::unary-}(){() → core::int} in let final void #t71 = self::Extension|set#setterWithReturn(#t69{self::Class}, #t70) in #t70);
+ self::expect(4, let final self::Class? #t72 = cn in #t72 == null ?{core::int?} null : #t72{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 5);
+ self::expect(5, let final self::Class? #t73 = cn in #t73 == null ?{core::int?} null : #t73{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, let final self::Class? #t74 = cn in #t74 == null ?{core::int?} null : #t74{self::Class}.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t75 = c in let final core::int #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
+ self::expect(7, let final self::Class? #t78 = cn in #t78 == null ?{core::int?} null : #t78{self::Class}.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t79 = c in let final core::int #t80 = 8.{core::int::unary-}(){() → core::int} in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+ self::expect(8, let final self::Class? #t82 = cn in #t82 == null ?{core::int?} null : #t82{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t83 = cn in #t83 == null ?{core::int?} null : self::Extension|set#setterWithClosure(#t83{self::Class}, 1);
+ self::expect(1, let final self::Class? #t84 = cn in #t84 == null ?{core::int?} null : #t84{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t85 = cn in #t85 == null ?{core::int?} null : self::Extension|set#setterWithClosure(#t85{self::Class}, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, let final self::Class? #t86 = cn in #t86 == null ?{core::int?} null : #t86{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class? #t87 = cn in #t87 == null ?{core::int?} null : let final core::int #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87{self::Class}, #t88) in #t88);
+ self::expect(3, let final self::Class? #t90 = cn in #t90 == null ?{core::int?} null : #t90{self::Class}.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t91 = cn in #t91 == null ?{core::int?} null : let final core::int #t92 = 4.{core::int::unary-}(){() → core::int} in let final void #t93 = self::Extension|set#setterWithClosure(#t91{self::Class}, #t92) in #t92);
+ self::expect(4, let final self::Class? #t94 = cn in #t94 == null ?{core::int?} null : #t94{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 5);
+ self::expect(5, let final self::Class? #t95 = cn in #t95 == null ?{core::int?} null : #t95{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, let final self::Class? #t96 = cn in #t96 == null ?{core::int?} null : #t96{self::Class}.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t97 = c in let final core::int #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
+ self::expect(7, let final self::Class? #t100 = cn in #t100 == null ?{core::int?} null : #t100{self::Class}.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+ self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int});
+ c.{self::Class::nullableField} = null;
+ let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null;
+ self::expect(1, c.{self::Class::nullableField}{core::int?});
+ self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int});
+ c.{self::Class::nullableField} = null;
+ self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int});
+ let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null;
+ let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null;
+ self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?});
+ self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int});
+ let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null;
+ self::expect(2, let final self::Class? #t122 = cn in #t122 == null ?{core::int?} null : let final core::int? #t123 = self::Extension|get#simpleNullableSetter(#t122) in #t123 == null ?{core::int} let final core::int #t124 = 2 in let final void #t125 = self::Extension|set#simpleNullableSetter(#t122, #t124) in #t124 : #t123{core::int});
+ self::Extension|testInternal(new self::Class::•(1.{core::int::unary-}(){() → core::int}));
+ self::GenericClass<core::int> genericClass = new self::GenericClass::•<core::int>();
+ self::expect(1, let final self::GenericClass<core::int> #t126 = genericClass in let final core::int #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int>(#t126, #t127) in #t127);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.outline.expect
new file mode 100644
index 0000000..6c50707
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.outline.expect
@@ -0,0 +1,63 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ field core::int? nullableField;
+ constructor •(core::int field) → self::Class
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ ;
+}
+extension Extension on self::Class {
+ get simpleSetter = self::Extension|get#simpleSetter;
+ get simpleNullableSetter = self::Extension|get#simpleNullableSetter;
+ get mutatingSetter = self::Extension|get#mutatingSetter;
+ get setterWithReturn = self::Extension|get#setterWithReturn;
+ get setterWithClosure = self::Extension|get#setterWithClosure;
+ method testInternal = self::Extension|testInternal;
+ tearoff testInternal = self::Extension|get#testInternal;
+ set simpleSetter = self::Extension|set#simpleSetter;
+ set simpleNullableSetter = self::Extension|set#simpleNullableSetter;
+ set mutatingSetter = self::Extension|set#mutatingSetter;
+ set setterWithReturn = self::Extension|set#setterWithReturn;
+ set setterWithClosure = self::Extension|set#setterWithClosure;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ set setter = self::GenericExtension|set#setter;
+}
+static method Extension|get#simpleSetter(lowered final self::Class #this) → core::int
+ ;
+static method Extension|set#simpleSetter(lowered final self::Class #this, core::int value) → void
+ ;
+static method Extension|get#simpleNullableSetter(lowered final self::Class #this) → core::int?
+ ;
+static method Extension|set#simpleNullableSetter(lowered final self::Class #this, core::int? value) → void
+ ;
+static method Extension|get#mutatingSetter(lowered final self::Class #this) → core::int
+ ;
+static method Extension|set#mutatingSetter(lowered final self::Class #this, core::int value) → void
+ ;
+static method Extension|get#setterWithReturn(lowered final self::Class #this) → core::int
+ ;
+static method Extension|set#setterWithReturn(lowered final self::Class #this, core::int value) → void
+ ;
+static method Extension|get#setterWithClosure(lowered final self::Class #this) → core::int
+ ;
+static method Extension|set#setterWithClosure(lowered final self::Class #this, core::int value) → void
+ ;
+static method Extension|testInternal(lowered final self::Class #this) → dynamic
+ ;
+static method Extension|get#testInternal(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testInternal(#this);
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T% value) → void
+ ;
+static method main() → dynamic
+ ;
+static method test(self::Class c, self::Class? cn) → dynamic
+ ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect
new file mode 100644
index 0000000..651b8fc
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect
@@ -0,0 +1,322 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ field core::int? nullableField = null;
+ constructor •(core::int field) → self::Class
+ : self::Class::field = field, super core::Object::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get simpleSetter = self::Extension|get#simpleSetter;
+ get simpleNullableSetter = self::Extension|get#simpleNullableSetter;
+ get mutatingSetter = self::Extension|get#mutatingSetter;
+ get setterWithReturn = self::Extension|get#setterWithReturn;
+ get setterWithClosure = self::Extension|get#setterWithClosure;
+ method testInternal = self::Extension|testInternal;
+ tearoff testInternal = self::Extension|get#testInternal;
+ set simpleSetter = self::Extension|set#simpleSetter;
+ set simpleNullableSetter = self::Extension|set#simpleNullableSetter;
+ set mutatingSetter = self::Extension|set#mutatingSetter;
+ set setterWithReturn = self::Extension|set#setterWithReturn;
+ set setterWithClosure = self::Extension|set#setterWithClosure;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ set setter = self::GenericExtension|set#setter;
+}
+static method Extension|get#simpleSetter(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#simpleSetter(lowered final self::Class #this, core::int value) → void {
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#simpleNullableSetter(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::nullableField}{core::int?};
+static method Extension|set#simpleNullableSetter(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::nullableField} = value;
+}
+static method Extension|get#mutatingSetter(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#mutatingSetter(lowered final self::Class #this, core::int value) → void {
+ value = value.{core::num::+}(1){(core::num) → core::int};
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#setterWithReturn(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#setterWithReturn(lowered final self::Class #this, core::int value) → void {
+ if(value.{core::num::<}(0){(core::num) → core::bool}) {
+ #this.{self::Class::field} = value.{core::int::unary-}(){() → core::int};
+ return;
+ }
+ #this.{self::Class::field} = value;
+}
+static method Extension|get#setterWithClosure(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#setterWithClosure(lowered final self::Class #this, core::int value) → void {
+ function abs(dynamic value) → dynamic {
+ return value{dynamic}.<(0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool ?{dynamic} value{dynamic}.unary-() : value;
+ }
+ #this.{self::Class::field} = abs(value){(dynamic) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+}
+static method Extension|testInternal(lowered final self::Class #this) → dynamic {
+ self::expect(1.{core::int::unary-}(){() → core::int}, #this.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(#this, 0);
+ self::expect(0, #this.{self::Class::field}{core::int});
+ self::expect(1, let final core::int #t1 = 1 in let final void #t2 = self::Extension|set#simpleSetter(#this, #t1) in #t1);
+ self::Extension|set#mutatingSetter(#this, 0);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::expect(2, let final core::int #t3 = 2 in let final void #t4 = self::Extension|set#mutatingSetter(#this, #t3) in #t3);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(#this, 1);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, #this.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t7 = 4.{core::int::unary-}(){() → core::int} in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+ self::expect(4, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(#this, 1);
+ self::expect(1, #this.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, #this.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
+ self::expect(3, #this.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t11 = 4.{core::int::unary-}(){() → core::int} in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+ self::expect(4, #this.{self::Class::field}{core::int});
+}
+static method Extension|get#testInternal(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testInternal(#this);
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T% value) → void {}
+static method main() → dynamic {
+ self::Class c = new self::Class::•(1.{core::int::unary-}(){() → core::int});
+ self::test(c, c);
+}
+static method test(self::Class c, self::Class? cn) → dynamic {
+ self::expect(1.{core::int::unary-}(){() → core::int}, c.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(c, 0);
+ self::expect(0, c.{self::Class::field}{core::int});
+ self::expect(1, let final core::int #t13 = 1 in let final void #t14 = self::Extension|set#simpleSetter(c, #t13) in #t13);
+ self::Extension|set#simpleSetter(c, 2);
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class #t15 = c in let final core::int #t16 = 3 in let final void #t17 = self::Extension|set#simpleSetter(#t15, #t16) in #t16);
+ self::Extension|set#mutatingSetter(c, 0);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::expect(2, let final core::int #t18 = 2 in let final void #t19 = self::Extension|set#mutatingSetter(c, #t18) in #t18);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::Extension|set#mutatingSetter(c, 4);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::expect(6, let final self::Class #t20 = c in let final core::int #t21 = 6 in let final void #t22 = self::Extension|set#mutatingSetter(#t20, #t21) in #t21);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 1);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t25 = 4.{core::int::unary-}(){() → core::int} in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+ self::expect(4, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 5);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, c.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t27 = c in let final core::int #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t30 = c in let final core::int #t31 = 8.{core::int::unary-}(){() → core::int} in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+ self::expect(8, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 1);
+ self::expect(1, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, c.{self::Class::field}{core::int});
+ self::expect(3, let final core::int #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
+ self::expect(3, c.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t35 = 4.{core::int::unary-}(){() → core::int} in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+ self::expect(4, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 5);
+ self::expect(5, c.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, c.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t37 = c in let final core::int #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
+ self::expect(7, c.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t40 = c in let final core::int #t41 = 8.{core::int::unary-}(){() → core::int} in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+ self::expect(8, c.{self::Class::field}{core::int});
+ self::Extension|set#simpleSetter(c, 0);
+ self::expect(0, let final self::Class? #t43 = cn in #t43 == null ?{core::int?} null : #t43{self::Class}.{self::Class::field}{core::int});
+ self::expect(1, let final self::Class? #t44 = cn in #t44 == null ?{core::int?} null : let final core::int #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44{self::Class}, #t45) in #t45);
+ self::Extension|set#simpleSetter(c, 2);
+ self::expect(2, let final self::Class? #t47 = cn in #t47 == null ?{core::int?} null : #t47{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class #t48 = c in let final core::int #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
+ self::Extension|set#mutatingSetter(c, 0);
+ self::expect(1, let final self::Class? #t51 = cn in #t51 == null ?{core::int?} null : #t51{self::Class}.{self::Class::field}{core::int});
+ self::expect(2, let final self::Class? #t52 = cn in #t52 == null ?{core::int?} null : let final core::int #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52{self::Class}, #t53) in #t53);
+ self::expect(3, let final self::Class? #t55 = cn in #t55 == null ?{core::int?} null : #t55{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#mutatingSetter(c, 4);
+ self::expect(5, let final self::Class? #t56 = cn in #t56 == null ?{core::int?} null : #t56{self::Class}.{self::Class::field}{core::int});
+ self::expect(6, let final self::Class #t57 = c in let final core::int #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
+ self::expect(7, let final self::Class? #t60 = cn in #t60 == null ?{core::int?} null : #t60{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t61 = cn in #t61 == null ?{core::int?} null : self::Extension|set#setterWithReturn(#t61{self::Class}, 1);
+ self::expect(1, let final self::Class? #t62 = cn in #t62 == null ?{core::int?} null : #t62{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t63 = cn in #t63 == null ?{core::int?} null : self::Extension|set#setterWithReturn(#t63{self::Class}, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, let final self::Class? #t64 = cn in #t64 == null ?{core::int?} null : #t64{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class? #t65 = cn in #t65 == null ?{core::int?} null : let final core::int #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65{self::Class}, #t66) in #t66);
+ self::expect(3, let final self::Class? #t68 = cn in #t68 == null ?{core::int?} null : #t68{self::Class}.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t69 = cn in #t69 == null ?{core::int?} null : let final core::int #t70 = 4.{core::int::unary-}(){() → core::int} in let final void #t71 = self::Extension|set#setterWithReturn(#t69{self::Class}, #t70) in #t70);
+ self::expect(4, let final self::Class? #t72 = cn in #t72 == null ?{core::int?} null : #t72{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 5);
+ self::expect(5, let final self::Class? #t73 = cn in #t73 == null ?{core::int?} null : #t73{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, let final self::Class? #t74 = cn in #t74 == null ?{core::int?} null : #t74{self::Class}.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t75 = c in let final core::int #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
+ self::expect(7, let final self::Class? #t78 = cn in #t78 == null ?{core::int?} null : #t78{self::Class}.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t79 = c in let final core::int #t80 = 8.{core::int::unary-}(){() → core::int} in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+ self::expect(8, let final self::Class? #t82 = cn in #t82 == null ?{core::int?} null : #t82{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t83 = cn in #t83 == null ?{core::int?} null : self::Extension|set#setterWithClosure(#t83{self::Class}, 1);
+ self::expect(1, let final self::Class? #t84 = cn in #t84 == null ?{core::int?} null : #t84{self::Class}.{self::Class::field}{core::int});
+ let final self::Class? #t85 = cn in #t85 == null ?{core::int?} null : self::Extension|set#setterWithClosure(#t85{self::Class}, 2.{core::int::unary-}(){() → core::int});
+ self::expect(2, let final self::Class? #t86 = cn in #t86 == null ?{core::int?} null : #t86{self::Class}.{self::Class::field}{core::int});
+ self::expect(3, let final self::Class? #t87 = cn in #t87 == null ?{core::int?} null : let final core::int #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87{self::Class}, #t88) in #t88);
+ self::expect(3, let final self::Class? #t90 = cn in #t90 == null ?{core::int?} null : #t90{self::Class}.{self::Class::field}{core::int});
+ self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t91 = cn in #t91 == null ?{core::int?} null : let final core::int #t92 = 4.{core::int::unary-}(){() → core::int} in let final void #t93 = self::Extension|set#setterWithClosure(#t91{self::Class}, #t92) in #t92);
+ self::expect(4, let final self::Class? #t94 = cn in #t94 == null ?{core::int?} null : #t94{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 5);
+ self::expect(5, let final self::Class? #t95 = cn in #t95 == null ?{core::int?} null : #t95{self::Class}.{self::Class::field}{core::int});
+ self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
+ self::expect(6, let final self::Class? #t96 = cn in #t96 == null ?{core::int?} null : #t96{self::Class}.{self::Class::field}{core::int});
+ self::expect(7, let final self::Class #t97 = c in let final core::int #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
+ self::expect(7, let final self::Class? #t100 = cn in #t100 == null ?{core::int?} null : #t100{self::Class}.{self::Class::field}{core::int});
+ self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+ self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int});
+ c.{self::Class::nullableField} = null;
+ let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null;
+ self::expect(1, c.{self::Class::nullableField}{core::int?});
+ self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int});
+ c.{self::Class::nullableField} = null;
+ self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int});
+ let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null;
+ let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null;
+ self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?});
+ self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int});
+ let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null;
+ self::expect(2, let final self::Class? #t122 = cn in #t122 == null ?{core::int?} null : let final core::int? #t123 = self::Extension|get#simpleNullableSetter(#t122) in #t123 == null ?{core::int} let final core::int #t124 = 2 in let final void #t125 = self::Extension|set#simpleNullableSetter(#t122, #t124) in #t124 : #t123{core::int});
+ self::Extension|testInternal(new self::Class::•(1.{core::int::unary-}(){() → core::int}));
+ self::GenericClass<core::int> genericClass = new self::GenericClass::•<core::int>();
+ self::expect(1, let final self::GenericClass<core::int> #t126 = genericClass in let final core::int #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int>(#t126, #t127) in #t127);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
+
+
+Extra constant evaluation status:
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:53:12 -> IntConstant(-1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:57:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:57:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:61:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:61:32 -> IntConstant(2)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:66:24 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:68:34 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:68:34 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:70:12 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:70:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:70:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:70:35 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:75:25 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:77:35 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:77:35 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:79:12 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:79:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:79:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:79:36 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:91:21 -> IntConstant(-1)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:96:10 -> IntConstant(-1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:100:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:100:30 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:103:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:103:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:107:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:107:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:111:43 -> IntConstant(6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:111:43 -> IntConstant(6)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:116:24 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:118:34 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:118:34 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:120:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:120:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:120:35 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:120:35 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:124:35 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:126:45 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:126:45 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:128:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:128:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:128:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:128:46 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:133:25 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:135:35 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:135:35 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:137:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:137:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:137:36 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:137:36 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:141:36 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:143:46 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:143:46 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:145:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:145:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:145:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:145:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:150:32 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:150:32 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:153:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:153:41 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:157:34 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:157:34 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:161:43 -> IntConstant(6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:161:43 -> IntConstant(6)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:166:26 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:168:36 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:168:36 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:170:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:170:37 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:170:37 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:170:37 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:174:35 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:176:45 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:176:45 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:178:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:178:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:178:46 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:178:46 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:183:27 -> IntConstant(-2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:185:37 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:185:37 -> IntConstant(3)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:187:10 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:187:38 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:187:38 -> IntConstant(-4)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:187:38 -> IntConstant(-4)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:191:36 -> IntConstant(-6)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:193:46 -> IntConstant(7)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:193:46 -> IntConstant(7)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:195:10 -> IntConstant(-8)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:195:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:195:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:195:47 -> IntConstant(-8)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:201:40 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:201:40 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:203:40 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:203:40 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:208:42 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:208:42 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:210:42 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:210:42 -> IntConstant(2)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:212:13 -> IntConstant(-1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:215:53 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:215:53 -> IntConstant(1)
+Extra constant evaluation: evaluated: 848, effectively constant: 104
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart b/pkg/front_end/testcases/extensions/extension_setter_error.dart
index a8b5d50..ffa19d7 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart
@@ -1,13 +1,15 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class GenericClass<T> {}
extension GenericExtension<T> on GenericClass<T> {
- set setter(T value) {}
+ set setter(T? value) {}
}
+main() {}
+
error() {
GenericClass<int> genericClass = new GenericClass<int>();
expect(null, GenericExtension<double>(genericClass).setter = null);
@@ -18,4 +20,4 @@
if (expected != actual) {
throw 'Mismatch: expected=$expected, actual=$actual';
}
-}
\ No newline at end of file
+}
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline.expect
index f98e6ac..ba70572 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline.expect
@@ -1,9 +1,9 @@
-// @dart = 2.9
class GenericClass<T> {}
extension GenericExtension<T> on GenericClass<T> {
- set setter(T value) {}
+ set setter(T? value) {}
}
+main() {}
error() {}
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline_modelled.expect
index 282faec..1202e1e 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.textual_outline_modelled.expect
@@ -1,9 +1,10 @@
-// @dart = 2.9
class GenericClass<T> {}
error() {}
expect(expected, actual) {}
extension GenericExtension<T> on GenericClass<T> {
- set setter(T value) {}
+ set setter(T? value) {}
}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect
index d2d6b51..0994723 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/extension_setter_error.dart:13:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
+// pkg/front_end/testcases/extensions/extension_setter_error.dart:15:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
// - 'GenericClass' is from 'pkg/front_end/testcases/extensions/extension_setter_error.dart'.
// expect(null, GenericExtension<double>(genericClass).setter = null);
// ^
@@ -10,34 +10,25 @@
import self as self;
import "dart:core" as core;
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
set setter = self::GenericExtension|set#setter;
}
-static method GenericExtension|set#setter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T*>* #this, self::GenericExtension|set#setter::T* value) → void {}
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T? value) → void {}
+static method main() → dynamic {}
static method error() → dynamic {
- self::GenericClass<core::int*>* genericClass = new self::GenericClass::•<core::int*>();
- self::expect(null, let final self::GenericClass<core::int*>* #t1 = invalid-expression "pkg/front_end/testcases/extensions/extension_setter_error.dart:13:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
+ self::GenericClass<core::int> genericClass = new self::GenericClass::•<core::int>();
+ self::expect(null, let final self::GenericClass<core::int> #t1 = invalid-expression "pkg/front_end/testcases/extensions/extension_setter_error.dart:15:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/extension_setter_error.dart'.
expect(null, GenericExtension<double>(genericClass).setter = null);
- ^" in genericClass as{TypeError} self::GenericClass<core::double*>* in let final has-declared-initializer Null #t2 = null in let final void #t3 = self::GenericExtension|set#setter<core::double*>(#t1, #t2) in #t2);
+ ^" in genericClass as{TypeError,ForNonNullableByDefault} self::GenericClass<core::double> in let final has-declared-initializer Null #t2 = null in let final void #t3 = self::GenericExtension|set#setter<core::double>(#t1, #t2) in #t2);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.modular.expect
index d2d6b51..0994723 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.modular.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/extension_setter_error.dart:13:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
+// pkg/front_end/testcases/extensions/extension_setter_error.dart:15:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
// - 'GenericClass' is from 'pkg/front_end/testcases/extensions/extension_setter_error.dart'.
// expect(null, GenericExtension<double>(genericClass).setter = null);
// ^
@@ -10,34 +10,25 @@
import self as self;
import "dart:core" as core;
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
set setter = self::GenericExtension|set#setter;
}
-static method GenericExtension|set#setter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T*>* #this, self::GenericExtension|set#setter::T* value) → void {}
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T? value) → void {}
+static method main() → dynamic {}
static method error() → dynamic {
- self::GenericClass<core::int*>* genericClass = new self::GenericClass::•<core::int*>();
- self::expect(null, let final self::GenericClass<core::int*>* #t1 = invalid-expression "pkg/front_end/testcases/extensions/extension_setter_error.dart:13:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
+ self::GenericClass<core::int> genericClass = new self::GenericClass::•<core::int>();
+ self::expect(null, let final self::GenericClass<core::int> #t1 = invalid-expression "pkg/front_end/testcases/extensions/extension_setter_error.dart:15:41: Error: A value of type 'GenericClass<int>' can't be assigned to a variable of type 'GenericClass<double>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/extension_setter_error.dart'.
expect(null, GenericExtension<double>(genericClass).setter = null);
- ^" in genericClass as{TypeError} self::GenericClass<core::double*>* in let final has-declared-initializer Null #t2 = null in let final void #t3 = self::GenericExtension|set#setter<core::double*>(#t1, #t2) in #t2);
+ ^" in genericClass as{TypeError,ForNonNullableByDefault} self::GenericClass<core::double> in let final has-declared-initializer Null #t2 = null in let final void #t3 = self::GenericExtension|set#setter<core::double>(#t1, #t2) in #t2);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.outline.expect
index 2b0f430..3cd0642 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.weak.outline.expect
@@ -1,25 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
set setter = self::GenericExtension|set#setter;
}
-static method GenericExtension|set#setter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T*>* #this, self::GenericExtension|set#setter::T* value) → void
+static method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T? value) → void
+ ;
+static method main() → dynamic
;
static method error() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart
index 60e02c6..e841612 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart
@@ -1,14 +1,14 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
/// Regression test for missing substitution of type variable used in the
/// return type of a generic method on a generic extension.
class Class<T> {}
extension Extension<T> on Class<T> {
- R method<R>(T t) => null;
+ R? method<R>(T t) => null;
}
main() {
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline.expect
index 77c5035..1a6e56b 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline.expect
@@ -1,8 +1,7 @@
-// @dart = 2.9
class Class<T> {}
extension Extension<T> on Class<T> {
- R method<R>(T t) => null;
+ R? method<R>(T t) => null;
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline_modelled.expect
index 77c5035..1a6e56b 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.textual_outline_modelled.expect
@@ -1,8 +1,7 @@
-// @dart = 2.9
class Class<T> {}
extension Extension<T> on Class<T> {
- R method<R>(T t) => null;
+ R? method<R>(T t) => null;
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect
index 47243334..a1316a5 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.expect
@@ -1,30 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final self::Class<self::Extension|method::T*>* #this, self::Extension|method::T* t) → self::Extension|method::R*
+static method Extension|method<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method::T%> #this, self::Extension|method::T% t) → self::Extension|method::R?
return null;
-static method Extension|get#method<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#method::T*>* #this) → <R extends core::Object* = dynamic>(self::Extension|get#method::T*) →* R*
- return <R extends core::Object* = dynamic>(self::Extension|get#method::T* t) → R* => self::Extension|method<self::Extension|get#method::T*, R*>(#this, t);
+static method Extension|get#method<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method::T%> #this) → <R extends core::Object? = dynamic>(self::Extension|get#method::T%) → R?
+ return <R extends core::Object? = dynamic>(self::Extension|get#method::T% t) → R? => self::Extension|method<self::Extension|get#method::T%, R%>(#this, t);
static method main() → dynamic {
- let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1 == null ?{core::String*} null : #t1.{core::Object::toString}(){() →* core::String*};
+ let final dynamic #t1 = self::Extension|method<core::int, dynamic>(new self::Class::•<core::int>(), 0) in #t1 == null ?{core::String?} null : #t1.{core::Object::toString}(){() → core::String};
}
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.modular.expect
index 47243334..a1316a5 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.modular.expect
@@ -1,30 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final self::Class<self::Extension|method::T*>* #this, self::Extension|method::T* t) → self::Extension|method::R*
+static method Extension|method<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method::T%> #this, self::Extension|method::T% t) → self::Extension|method::R?
return null;
-static method Extension|get#method<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#method::T*>* #this) → <R extends core::Object* = dynamic>(self::Extension|get#method::T*) →* R*
- return <R extends core::Object* = dynamic>(self::Extension|get#method::T* t) → R* => self::Extension|method<self::Extension|get#method::T*, R*>(#this, t);
+static method Extension|get#method<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method::T%> #this) → <R extends core::Object? = dynamic>(self::Extension|get#method::T%) → R?
+ return <R extends core::Object? = dynamic>(self::Extension|get#method::T% t) → R? => self::Extension|method<self::Extension|get#method::T%, R%>(#this, t);
static method main() → dynamic {
- let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1 == null ?{core::String*} null : #t1.{core::Object::toString}(){() →* core::String*};
+ let final dynamic #t1 = self::Extension|method<core::int, dynamic>(new self::Class::•<core::int>(), 0) in #t1 == null ?{core::String?} null : #t1.{core::Object::toString}(){() → core::String};
}
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.outline.expect
index de2e8df..0d0d4d3 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.outline.expect
@@ -1,28 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final self::Class<self::Extension|method::T*>* #this, self::Extension|method::T* t) → self::Extension|method::R*
+static method Extension|method<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method::T%> #this, self::Extension|method::T% t) → self::Extension|method::R?
;
-static method Extension|get#method<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#method::T*>* #this) → <R extends core::Object* = dynamic>(self::Extension|get#method::T*) →* R*
- return <R extends core::Object* = dynamic>(self::Extension|get#method::T* t) → R* => self::Extension|method<self::Extension|get#method::T*, R*>(#this, t);
+static method Extension|get#method<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method::T%> #this) → <R extends core::Object? = dynamic>(self::Extension|get#method::T%) → R?
+ return <R extends core::Object? = dynamic>(self::Extension|get#method::T% t) → R? => self::Extension|method<self::Extension|get#method::T%, R%>(#this, t);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect
index 47243334..a1316a5 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.weak.transformed.expect
@@ -1,30 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
+extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-static method Extension|method<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final self::Class<self::Extension|method::T*>* #this, self::Extension|method::T* t) → self::Extension|method::R*
+static method Extension|method<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method::T%> #this, self::Extension|method::T% t) → self::Extension|method::R?
return null;
-static method Extension|get#method<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#method::T*>* #this) → <R extends core::Object* = dynamic>(self::Extension|get#method::T*) →* R*
- return <R extends core::Object* = dynamic>(self::Extension|get#method::T* t) → R* => self::Extension|method<self::Extension|get#method::T*, R*>(#this, t);
+static method Extension|get#method<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method::T%> #this) → <R extends core::Object? = dynamic>(self::Extension|get#method::T%) → R?
+ return <R extends core::Object? = dynamic>(self::Extension|get#method::T% t) → R? => self::Extension|method<self::Extension|get#method::T%, R%>(#this, t);
static method main() → dynamic {
- let final dynamic #t1 = self::Extension|method<core::int*, dynamic>(new self::Class::•<core::int*>(), 0) in #t1 == null ?{core::String*} null : #t1.{core::Object::toString}(){() →* core::String*};
+ let final dynamic #t1 = self::Extension|method<core::int, dynamic>(new self::Class::•<core::int>(), 0) in #t1 == null ?{core::String?} null : #t1.{core::Object::toString}(){() → core::String};
}
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart
index 95951cc..eb42294 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {
int get m1 => 0;
void set m2(int x) {}
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline.expect
index 332dd6c..0207a05 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
int get m1 => 0;
void set m2(int x) {}
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline_modelled.expect
index 0d6d5d5..3da20ad 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {
int get m1 => 0;
void set m2(int x) {}
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect
index 6666d8f..56494db 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -66,49 +66,39 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- get m1() → core::int*
+ get m1() → core::int
return 0;
- set m2(core::int* x) → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ set m2(core::int x) → void {}
}
-extension Extension0 on self::Class* {
+extension Extension0 on self::Class {
get m2 = self::Extension0|get#m2;
get m4 = self::Extension0|get#m4;
set m1 = self::Extension0|set#m1;
set m3 = self::Extension0|set#m3;
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get m3 = self::Extension1|get#m3;
set m4 = self::Extension1|set#m4;
}
-static method Extension0|set#m1(lowered final self::Class* #this, core::int* x) → void {}
-static method Extension0|get#m2(lowered final self::Class* #this) → core::int*
+static method Extension0|set#m1(lowered final self::Class #this, core::int x) → void {}
+static method Extension0|get#m2(lowered final self::Class #this) → core::int
return 0;
-static method Extension0|set#m3(lowered final self::Class* #this, core::int* x) → void {}
-static method Extension0|get#m4(lowered final self::Class* #this) → core::int*
+static method Extension0|set#m3(lowered final self::Class #this, core::int x) → void {}
+static method Extension0|get#m4(lowered final self::Class #this) → core::int
return 0;
-static method Extension1|get#m3(lowered final self::Class* #this) → core::int*
+static method Extension1|get#m3(lowered final self::Class #this) → core::int
return 0;
-static method Extension1|set#m4(lowered final self::Class* #this, core::int* x) → void {}
+static method Extension1|set#m4(lowered final self::Class #this, core::int x) → void {}
static method main() → dynamic {
- self::Class* c = new self::Class::•();
- self::expect(0, c.{self::Class::m1}{core::int*});
+ self::Class c = new self::Class::•();
+ self::expect(0, c.{self::Class::m1}{core::int});
c.{self::Class::m2} = 2;
}
static method errors() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(0, invalid-expression "pkg/front_end/testcases/extensions/getter_setter_conflict.dart:30:15: Error: The getter 'm2' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/getter_setter_conflict.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'm2'.
@@ -141,7 +131,7 @@
^^" in c{<unresolved>}.m4 = 2;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.modular.expect
index 6666d8f..56494db 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -66,49 +66,39 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- get m1() → core::int*
+ get m1() → core::int
return 0;
- set m2(core::int* x) → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ set m2(core::int x) → void {}
}
-extension Extension0 on self::Class* {
+extension Extension0 on self::Class {
get m2 = self::Extension0|get#m2;
get m4 = self::Extension0|get#m4;
set m1 = self::Extension0|set#m1;
set m3 = self::Extension0|set#m3;
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get m3 = self::Extension1|get#m3;
set m4 = self::Extension1|set#m4;
}
-static method Extension0|set#m1(lowered final self::Class* #this, core::int* x) → void {}
-static method Extension0|get#m2(lowered final self::Class* #this) → core::int*
+static method Extension0|set#m1(lowered final self::Class #this, core::int x) → void {}
+static method Extension0|get#m2(lowered final self::Class #this) → core::int
return 0;
-static method Extension0|set#m3(lowered final self::Class* #this, core::int* x) → void {}
-static method Extension0|get#m4(lowered final self::Class* #this) → core::int*
+static method Extension0|set#m3(lowered final self::Class #this, core::int x) → void {}
+static method Extension0|get#m4(lowered final self::Class #this) → core::int
return 0;
-static method Extension1|get#m3(lowered final self::Class* #this) → core::int*
+static method Extension1|get#m3(lowered final self::Class #this) → core::int
return 0;
-static method Extension1|set#m4(lowered final self::Class* #this, core::int* x) → void {}
+static method Extension1|set#m4(lowered final self::Class #this, core::int x) → void {}
static method main() → dynamic {
- self::Class* c = new self::Class::•();
- self::expect(0, c.{self::Class::m1}{core::int*});
+ self::Class c = new self::Class::•();
+ self::expect(0, c.{self::Class::m1}{core::int});
c.{self::Class::m2} = 2;
}
static method errors() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(0, invalid-expression "pkg/front_end/testcases/extensions/getter_setter_conflict.dart:30:15: Error: The getter 'm2' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/getter_setter_conflict.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'm2'.
@@ -141,7 +131,7 @@
^^" in c{<unresolved>}.m4 = 2;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.outline.expect
index c1bc20e..57cb9b8 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.outline.expect
@@ -1,46 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- get m1() → core::int*
+ get m1() → core::int
;
- set m2(core::int* x) → void
+ set m2(core::int x) → void
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension0 on self::Class* {
+extension Extension0 on self::Class {
get m2 = self::Extension0|get#m2;
get m4 = self::Extension0|get#m4;
set m1 = self::Extension0|set#m1;
set m3 = self::Extension0|set#m3;
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get m3 = self::Extension1|get#m3;
set m4 = self::Extension1|set#m4;
}
-static method Extension0|set#m1(lowered final self::Class* #this, core::int* x) → void
+static method Extension0|set#m1(lowered final self::Class #this, core::int x) → void
;
-static method Extension0|get#m2(lowered final self::Class* #this) → core::int*
+static method Extension0|get#m2(lowered final self::Class #this) → core::int
;
-static method Extension0|set#m3(lowered final self::Class* #this, core::int* x) → void
+static method Extension0|set#m3(lowered final self::Class #this, core::int x) → void
;
-static method Extension0|get#m4(lowered final self::Class* #this) → core::int*
+static method Extension0|get#m4(lowered final self::Class #this) → core::int
;
-static method Extension1|get#m3(lowered final self::Class* #this) → core::int*
+static method Extension1|get#m3(lowered final self::Class #this) → core::int
;
-static method Extension1|set#m4(lowered final self::Class* #this, core::int* x) → void
+static method Extension1|set#m4(lowered final self::Class #this, core::int x) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect
index 6666d8f..56494db 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -66,49 +66,39 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- get m1() → core::int*
+ get m1() → core::int
return 0;
- set m2(core::int* x) → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ set m2(core::int x) → void {}
}
-extension Extension0 on self::Class* {
+extension Extension0 on self::Class {
get m2 = self::Extension0|get#m2;
get m4 = self::Extension0|get#m4;
set m1 = self::Extension0|set#m1;
set m3 = self::Extension0|set#m3;
}
-extension Extension1 on self::Class* {
+extension Extension1 on self::Class {
get m3 = self::Extension1|get#m3;
set m4 = self::Extension1|set#m4;
}
-static method Extension0|set#m1(lowered final self::Class* #this, core::int* x) → void {}
-static method Extension0|get#m2(lowered final self::Class* #this) → core::int*
+static method Extension0|set#m1(lowered final self::Class #this, core::int x) → void {}
+static method Extension0|get#m2(lowered final self::Class #this) → core::int
return 0;
-static method Extension0|set#m3(lowered final self::Class* #this, core::int* x) → void {}
-static method Extension0|get#m4(lowered final self::Class* #this) → core::int*
+static method Extension0|set#m3(lowered final self::Class #this, core::int x) → void {}
+static method Extension0|get#m4(lowered final self::Class #this) → core::int
return 0;
-static method Extension1|get#m3(lowered final self::Class* #this) → core::int*
+static method Extension1|get#m3(lowered final self::Class #this) → core::int
return 0;
-static method Extension1|set#m4(lowered final self::Class* #this, core::int* x) → void {}
+static method Extension1|set#m4(lowered final self::Class #this, core::int x) → void {}
static method main() → dynamic {
- self::Class* c = new self::Class::•();
- self::expect(0, c.{self::Class::m1}{core::int*});
+ self::Class c = new self::Class::•();
+ self::expect(0, c.{self::Class::m1}{core::int});
c.{self::Class::m2} = 2;
}
static method errors() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(0, invalid-expression "pkg/front_end/testcases/extensions/getter_setter_conflict.dart:30:15: Error: The getter 'm2' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/getter_setter_conflict.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'm2'.
@@ -141,7 +131,7 @@
^^" in c{<unresolved>}.m4 = 2;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/if_null.dart b/pkg/front_end/testcases/extensions/if_null.dart
index 68e54bb..0f0f4fb 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart
+++ b/pkg/front_end/testcases/extensions/if_null.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class Class {
int field;
}
diff --git a/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect
index c98287f..d490043 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/if_null.dart.weak.transformed.expect
@@ -50,10 +50,10 @@
Extra constant evaluation status:
-Evaluated: Let @ org-dartlang-testcase:///if_null.dart:21:20 -> IntConstant(42)
-Evaluated: Let @ org-dartlang-testcase:///if_null.dart:22:31 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:23:18 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:23:18 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:24:29 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:24:29 -> IntConstant(42)
+Evaluated: Let @ org-dartlang-testcase:///if_null.dart:23:20 -> IntConstant(42)
+Evaluated: Let @ org-dartlang-testcase:///if_null.dart:24:31 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:25:18 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:25:18 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:26:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///if_null.dart:26:29 -> IntConstant(42)
Extra constant evaluation: evaluated: 122, effectively constant: 6
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart b/pkg/front_end/testcases/extensions/if_null2.dart
new file mode 100644
index 0000000..56a0e71
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2019, 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 Class {
+ int field;
+
+ Class(this.field);
+}
+
+extension Extension on Class {
+ int get property => field;
+ int? get nullableProperty => field;
+ void set property(int? value) {
+ field = value ?? 0;
+ }
+
+ int method() => field;
+}
+
+main() {
+ test(null);
+}
+
+int? get value => 42;
+
+test(Class? c) {
+ c?.property ?? 0;
+ Extension(c)?.property ?? 0;
+ c?.property = value ?? 0;
+ Extension(c)?.property = value ?? 0;
+ (c?.property = 42) ?? 0;
+ (Extension(c)?.property = value) ?? 0;
+ c?.method() ?? 0;
+ Extension(c)?.method() ?? 0;
+ c = new Class(0);
+ c.nullableProperty ?? 0;
+ Extension(c).nullableProperty ?? 0;
+}
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/if_null2.dart.textual_outline.expect
new file mode 100644
index 0000000..b2e59a3
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart.textual_outline.expect
@@ -0,0 +1,15 @@
+class Class {
+ int field;
+ Class(this.field);
+}
+
+extension Extension on Class {
+ int get property => field;
+ int? get nullableProperty => field;
+ void set property(int? value) {}
+ int method() => field;
+}
+
+main() {}
+int? get value => 42;
+test(Class? c) {}
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/if_null2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..303efbc
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart.textual_outline_modelled.expect
@@ -0,0 +1,15 @@
+class Class {
+ Class(this.field);
+ int field;
+}
+
+extension Extension on Class {
+ int? get nullableProperty => field;
+ int get property => field;
+ int method() => field;
+ void set property(int? value) {}
+}
+
+int? get value => 42;
+main() {}
+test(Class? c) {}
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart.weak.expect b/pkg/front_end/testcases/extensions/if_null2.dart.weak.expect
new file mode 100644
index 0000000..4558359
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart.weak.expect
@@ -0,0 +1,46 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ constructor •(core::int field) → self::Class
+ : self::Class::field = field, super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ get nullableProperty = self::Extension|get#nullableProperty;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|get#nullableProperty(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::field} = let final core::int? #t1 = value in #t1 == null ?{core::int} 0 : #t1{core::int};
+}
+static method Extension|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
+static method main() → dynamic {
+ self::test(null);
+}
+static get value() → core::int?
+ return 42;
+static method test(self::Class? c) → dynamic {
+ let final core::int? #t2 = let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : self::Extension|get#property(#t3{self::Class}) in #t2 == null ?{core::int} 0 : #t2{core::int};
+ let final core::int? #t4 = let final self::Class? #t5 = c in #t5 == null ?{core::int?} null : self::Extension|get#property(#t5{self::Class}) in #t4 == null ?{core::int} 0 : #t4{core::int};
+ let final self::Class? #t6 = c in #t6 == null ?{core::int?} null : self::Extension|set#property(#t6{self::Class}, let final core::int? #t7 = self::value in #t7 == null ?{core::int} 0 : #t7{core::int});
+ let final self::Class? #t8 = c in #t8 == null ?{core::int?} null : self::Extension|set#property(#t8{self::Class}, let final core::int? #t9 = self::value in #t9 == null ?{core::int} 0 : #t9{core::int});
+ let final core::int? #t10 = let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : let final core::int #t12 = 42 in let final void #t13 = self::Extension|set#property(#t11{self::Class}, #t12) in #t12 in #t10 == null ?{core::int} 0 : #t10{core::int};
+ let final core::int? #t14 = let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final core::int? #t16 = self::value in let final void #t17 = self::Extension|set#property(#t15{self::Class}, #t16) in #t16 in #t14 == null ?{core::int} 0 : #t14{core::int};
+ let final core::int? #t18 = let final self::Class? #t19 = c in #t19 == null ?{core::int?} null : self::Extension|method(#t19{self::Class}) in #t18 == null ?{core::int} 0 : #t18{core::int};
+ let final core::int? #t20 = let final self::Class? #t21 = c in #t21 == null ?{core::int?} null : self::Extension|method(#t21{self::Class}) in #t20 == null ?{core::int} 0 : #t20{core::int};
+ c = new self::Class::•(0);
+ let final core::int? #t22 = self::Extension|get#nullableProperty(c{self::Class}) in #t22 == null ?{core::int} 0 : #t22{core::int};
+ let final core::int? #t23 = self::Extension|get#nullableProperty(c{self::Class}) in #t23 == null ?{core::int} 0 : #t23{core::int};
+}
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/if_null2.dart.weak.modular.expect
new file mode 100644
index 0000000..4558359
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart.weak.modular.expect
@@ -0,0 +1,46 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ constructor •(core::int field) → self::Class
+ : self::Class::field = field, super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ get nullableProperty = self::Extension|get#nullableProperty;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|get#nullableProperty(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::field} = let final core::int? #t1 = value in #t1 == null ?{core::int} 0 : #t1{core::int};
+}
+static method Extension|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
+static method main() → dynamic {
+ self::test(null);
+}
+static get value() → core::int?
+ return 42;
+static method test(self::Class? c) → dynamic {
+ let final core::int? #t2 = let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : self::Extension|get#property(#t3{self::Class}) in #t2 == null ?{core::int} 0 : #t2{core::int};
+ let final core::int? #t4 = let final self::Class? #t5 = c in #t5 == null ?{core::int?} null : self::Extension|get#property(#t5{self::Class}) in #t4 == null ?{core::int} 0 : #t4{core::int};
+ let final self::Class? #t6 = c in #t6 == null ?{core::int?} null : self::Extension|set#property(#t6{self::Class}, let final core::int? #t7 = self::value in #t7 == null ?{core::int} 0 : #t7{core::int});
+ let final self::Class? #t8 = c in #t8 == null ?{core::int?} null : self::Extension|set#property(#t8{self::Class}, let final core::int? #t9 = self::value in #t9 == null ?{core::int} 0 : #t9{core::int});
+ let final core::int? #t10 = let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : let final core::int #t12 = 42 in let final void #t13 = self::Extension|set#property(#t11{self::Class}, #t12) in #t12 in #t10 == null ?{core::int} 0 : #t10{core::int};
+ let final core::int? #t14 = let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final core::int? #t16 = self::value in let final void #t17 = self::Extension|set#property(#t15{self::Class}, #t16) in #t16 in #t14 == null ?{core::int} 0 : #t14{core::int};
+ let final core::int? #t18 = let final self::Class? #t19 = c in #t19 == null ?{core::int?} null : self::Extension|method(#t19{self::Class}) in #t18 == null ?{core::int} 0 : #t18{core::int};
+ let final core::int? #t20 = let final self::Class? #t21 = c in #t21 == null ?{core::int?} null : self::Extension|method(#t21{self::Class}) in #t20 == null ?{core::int} 0 : #t20{core::int};
+ c = new self::Class::•(0);
+ let final core::int? #t22 = self::Extension|get#nullableProperty(c{self::Class}) in #t22 == null ?{core::int} 0 : #t22{core::int};
+ let final core::int? #t23 = self::Extension|get#nullableProperty(c{self::Class}) in #t23 == null ?{core::int} 0 : #t23{core::int};
+}
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/if_null2.dart.weak.outline.expect
new file mode 100644
index 0000000..7aeed31
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart.weak.outline.expect
@@ -0,0 +1,32 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ constructor •(core::int field) → self::Class
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ get nullableProperty = self::Extension|get#nullableProperty;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int
+ ;
+static method Extension|get#nullableProperty(lowered final self::Class #this) → core::int?
+ ;
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void
+ ;
+static method Extension|method(lowered final self::Class #this) → core::int
+ ;
+static method Extension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
+static method main() → dynamic
+ ;
+static get value() → core::int?
+ ;
+static method test(self::Class? c) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/if_null2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/if_null2.dart.weak.transformed.expect
new file mode 100644
index 0000000..23f6b42
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/if_null2.dart.weak.transformed.expect
@@ -0,0 +1,52 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int field;
+ constructor •(core::int field) → self::Class
+ : self::Class::field = field, super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ get nullableProperty = self::Extension|get#nullableProperty;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|get#nullableProperty(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int};
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::field} = let final core::int? #t1 = value in #t1 == null ?{core::int} 0 : #t1{core::int};
+}
+static method Extension|method(lowered final self::Class #this) → core::int
+ return #this.{self::Class::field}{core::int};
+static method Extension|get#method(lowered final self::Class #this) → () → core::int
+ return () → core::int => self::Extension|method(#this);
+static method main() → dynamic {
+ self::test(null);
+}
+static get value() → core::int?
+ return 42;
+static method test(self::Class? c) → dynamic {
+ let final core::int? #t2 = let final self::Class? #t3 = c in #t3 == null ?{core::int?} null : self::Extension|get#property(#t3{self::Class}) in #t2 == null ?{core::int} 0 : #t2{core::int};
+ let final core::int? #t4 = let final self::Class? #t5 = c in #t5 == null ?{core::int?} null : self::Extension|get#property(#t5{self::Class}) in #t4 == null ?{core::int} 0 : #t4{core::int};
+ let final self::Class? #t6 = c in #t6 == null ?{core::int?} null : self::Extension|set#property(#t6{self::Class}, let final core::int? #t7 = self::value in #t7 == null ?{core::int} 0 : #t7{core::int});
+ let final self::Class? #t8 = c in #t8 == null ?{core::int?} null : self::Extension|set#property(#t8{self::Class}, let final core::int? #t9 = self::value in #t9 == null ?{core::int} 0 : #t9{core::int});
+ let final core::int? #t10 = let final self::Class? #t11 = c in #t11 == null ?{core::int?} null : let final core::int #t12 = 42 in let final void #t13 = self::Extension|set#property(#t11{self::Class}, #t12) in #t12 in #t10 == null ?{core::int} 0 : #t10{core::int};
+ let final core::int? #t14 = let final self::Class? #t15 = c in #t15 == null ?{core::int?} null : let final core::int? #t16 = self::value in let final void #t17 = self::Extension|set#property(#t15{self::Class}, #t16) in #t16 in #t14 == null ?{core::int} 0 : #t14{core::int};
+ let final core::int? #t18 = let final self::Class? #t19 = c in #t19 == null ?{core::int?} null : self::Extension|method(#t19{self::Class}) in #t18 == null ?{core::int} 0 : #t18{core::int};
+ let final core::int? #t20 = let final self::Class? #t21 = c in #t21 == null ?{core::int?} null : self::Extension|method(#t21{self::Class}) in #t20 == null ?{core::int} 0 : #t20{core::int};
+ c = new self::Class::•(0);
+ let final core::int? #t22 = self::Extension|get#nullableProperty(c{self::Class}) in #t22 == null ?{core::int} 0 : #t22{core::int};
+ let final core::int? #t23 = self::Extension|get#nullableProperty(c{self::Class}) in #t23 == null ?{core::int} 0 : #t23{core::int};
+}
+
+
+Extra constant evaluation status:
+Evaluated: VariableGet @ org-dartlang-testcase:///if_null2.dart:32:18 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///if_null2.dart:32:18 -> IntConstant(42)
+Extra constant evaluation: evaluated: 142, effectively constant: 2
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart
index bc59f49..8f549e8 100644
--- a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class A {}
class B extends A {}
class C extends B {}
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart
new file mode 100644
index 0000000..3c4a738
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2019, 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 {}
+
+class B extends A {}
+
+class C extends B {}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T> {
+ T? get property => null;
+
+ T? method(T? t) => null;
+
+ S? genericMethod1<S>(S? s) => null;
+}
+
+main() {
+ A? aVariable;
+ B? bVariable;
+ C? cVariable;
+
+ GenericClass<A> aClass = new GenericClass<A>();
+ GenericClass<B> bClass = new GenericClass<B>();
+ GenericClass<C> cClass = new GenericClass<C>();
+
+ aVariable = aClass.property;
+ bVariable = bClass.property;
+ cVariable = cClass.property;
+
+ aVariable = aClass.method(aVariable);
+ bVariable = bClass.method(bVariable);
+ cVariable = cClass.method(cVariable);
+
+ cVariable = aClass.genericMethod1(cVariable);
+ aVariable = aClass.genericMethod1<A>(aVariable);
+ bVariable = aClass.genericMethod1<B>(bVariable);
+ cVariable = aClass.genericMethod1<C>(cVariable);
+
+ cVariable = bClass.genericMethod1(cVariable);
+ aVariable = bClass.genericMethod1<A>(cVariable);
+ bVariable = bClass.genericMethod1<B>(cVariable);
+ cVariable = bClass.genericMethod1<C>(cVariable);
+
+ cVariable = cClass.genericMethod1(cVariable);
+ aVariable = cClass.genericMethod1<A>(cVariable);
+ bVariable = cClass.genericMethod1<B>(cVariable);
+ cVariable = cClass.genericMethod1<C>(cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.textual_outline.expect
new file mode 100644
index 0000000..56300ca
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.textual_outline.expect
@@ -0,0 +1,15 @@
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T> {
+ T? get property => null;
+ T? method(T? t) => null;
+ S? genericMethod1<S>(S? s) => null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..4d38882
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.textual_outline_modelled.expect
@@ -0,0 +1,15 @@
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+class GenericClass<T> {}
+
+extension GenericExtension<T> on GenericClass<T> {
+ S? genericMethod1<S>(S? s) => null;
+ T? get property => null;
+ T? method(T? t) => null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.expect
new file mode 100644
index 0000000..2c5e5d7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.expect
@@ -0,0 +1,67 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ : super self::B::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ return null;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ return null;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%> #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ return null;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%> #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic {
+ self::A? aVariable;
+ self::B? bVariable;
+ self::C? cVariable;
+ self::GenericClass<self::A> aClass = new self::GenericClass::•<self::A>();
+ self::GenericClass<self::B> bClass = new self::GenericClass::•<self::B>();
+ self::GenericClass<self::C> cClass = new self::GenericClass::•<self::C>();
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, bVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.modular.expect
new file mode 100644
index 0000000..2c5e5d7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.modular.expect
@@ -0,0 +1,67 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ : super self::B::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ return null;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ return null;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%> #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ return null;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%> #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic {
+ self::A? aVariable;
+ self::B? bVariable;
+ self::C? cVariable;
+ self::GenericClass<self::A> aClass = new self::GenericClass::•<self::A>();
+ self::GenericClass<self::B> bClass = new self::GenericClass::•<self::B>();
+ self::GenericClass<self::C> cClass = new self::GenericClass::•<self::C>();
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, bVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.outline.expect
new file mode 100644
index 0000000..dc779ee
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.outline.expect
@@ -0,0 +1,39 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ ;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ ;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%> #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ ;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%> #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.transformed.expect
new file mode 100644
index 0000000..2c5e5d7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference2.dart.weak.transformed.expect
@@ -0,0 +1,67 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+ synthetic constructor •() → self::A
+ : super core::Object::•()
+ ;
+}
+class B extends self::A {
+ synthetic constructor •() → self::B
+ : super self::A::•()
+ ;
+}
+class C extends self::B {
+ synthetic constructor •() → self::C
+ : super self::B::•()
+ ;
+}
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
+ : super core::Object::•()
+ ;
+}
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
+ get property = self::GenericExtension|get#property;
+ method method = self::GenericExtension|method;
+ tearoff method = self::GenericExtension|get#method;
+ method genericMethod1 = self::GenericExtension|genericMethod1;
+ tearoff genericMethod1 = self::GenericExtension|get#genericMethod1;
+}
+static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
+ return null;
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this, self::GenericExtension|method::T? t) → self::GenericExtension|method::T?
+ return null;
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → (self::GenericExtension|get#method::T?) → self::GenericExtension|get#method::T?
+ return (self::GenericExtension|get#method::T? t) → self::GenericExtension|get#method::T? => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this, t);
+static method GenericExtension|genericMethod1<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericMethod1::T%> #this, self::GenericExtension|genericMethod1::S? s) → self::GenericExtension|genericMethod1::S?
+ return null;
+static method GenericExtension|get#genericMethod1<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericMethod1::T%> #this) → <S extends core::Object? = dynamic>(S?) → S?
+ return <S extends core::Object? = dynamic>(S? s) → S? => self::GenericExtension|genericMethod1<self::GenericExtension|get#genericMethod1::T%, S%>(#this, s);
+static method main() → dynamic {
+ self::A? aVariable;
+ self::B? bVariable;
+ self::C? cVariable;
+ self::GenericClass<self::A> aClass = new self::GenericClass::•<self::A>();
+ self::GenericClass<self::B> bClass = new self::GenericClass::•<self::B>();
+ self::GenericClass<self::C> cClass = new self::GenericClass::•<self::C>();
+ aVariable = self::GenericExtension|get#property<self::A>(aClass);
+ bVariable = self::GenericExtension|get#property<self::B>(bClass);
+ cVariable = self::GenericExtension|get#property<self::C>(cClass);
+ aVariable = self::GenericExtension|method<self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|method<self::B>(bClass, bVariable);
+ cVariable = self::GenericExtension|method<self::C>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::A, self::A>(aClass, aVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::A, self::B>(aClass, bVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::A, self::C>(aClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::B, self::A>(bClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::B, self::B>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::B, self::C>(bClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+ aVariable = self::GenericExtension|genericMethod1<self::C, self::A>(cClass, cVariable);
+ bVariable = self::GenericExtension|genericMethod1<self::C, self::B>(cClass, cVariable);
+ cVariable = self::GenericExtension|genericMethod1<self::C, self::C>(cClass, cVariable);
+}
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart b/pkg/front_end/testcases/extensions/implicit_this.dart
index 12db6db9..b313805 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart
@@ -1,18 +1,18 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class A1 {
- Object field;
+ Object? field;
void method1() {}
}
extension A2 on A1 {
void method2() => method1();
- Object method3() => field;
+ Object? method3() => field;
- void method4(Object o) {
+ void method4(Object? o) {
field = o;
}
}
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline.expect
index 50496bd..6281540 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline.expect
@@ -1,13 +1,12 @@
-// @dart = 2.9
class A1 {
- Object field;
+ Object? field;
void method1() {}
}
extension A2 on A1 {
void method2() => method1();
- Object method3() => field;
- void method4(Object o) {}
+ Object? method3() => field;
+ void method4(Object? o) {}
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline_modelled.expect
index f48f869..d3cdb67 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.textual_outline_modelled.expect
@@ -1,13 +1,12 @@
-// @dart = 2.9
class A1 {
- Object field;
+ Object? field;
void method1() {}
}
extension A2 on A1 {
- Object method3() => field;
+ Object? method3() => field;
void method2() => method1();
- void method4(Object o) {}
+ void method4(Object? o) {}
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect
index 9328ef6..4c3c918 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field = null;
- synthetic constructor •() → self::A1*
+ field core::Object? field = null;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
method method1() → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
- return #this.{self::A1::method1}(){() →* void};
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|method2(lowered final self::A1 #this) → void
+ return #this.{self::A1::method1}(){() → void};
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
- return #this.{self::A1::field}{core::Object*};
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
+static method A2|method3(lowered final self::A1 #this) → core::Object?
+ return #this.{self::A1::field}{core::Object?};
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object? o) → void {
#this.{self::A1::field} = o;
}
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object?) → void
+ return (core::Object? o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.modular.expect
index 9328ef6..4c3c918 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field = null;
- synthetic constructor •() → self::A1*
+ field core::Object? field = null;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
method method1() → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
- return #this.{self::A1::method1}(){() →* void};
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|method2(lowered final self::A1 #this) → void
+ return #this.{self::A1::method1}(){() → void};
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
- return #this.{self::A1::field}{core::Object*};
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
+static method A2|method3(lowered final self::A1 #this) → core::Object?
+ return #this.{self::A1::field}{core::Object?};
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object? o) → void {
#this.{self::A1::field} = o;
}
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object?) → void
+ return (core::Object? o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.outline.expect
index 21fa5c7..16c7c975 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.outline.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field;
- synthetic constructor •() → self::A1*
+ field core::Object? field;
+ synthetic constructor •() → self::A1
;
method method1() → void
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
+static method A2|method2(lowered final self::A1 #this) → void
;
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
+static method A2|method3(lowered final self::A1 #this) → core::Object?
;
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object? o) → void
;
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object?) → void
+ return (core::Object? o) → void => self::A2|method4(#this, o);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect
index 9328ef6..4c3c918 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::Object* field = null;
- synthetic constructor •() → self::A1*
+ field core::Object? field = null;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
method method1() → void {}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
method method3 = self::A2|method3;
@@ -27,17 +17,17 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-static method A2|method2(lowered final self::A1* #this) → void
- return #this.{self::A1::method1}(){() →* void};
-static method A2|get#method2(lowered final self::A1* #this) → () →* void
+static method A2|method2(lowered final self::A1 #this) → void
+ return #this.{self::A1::method1}(){() → void};
+static method A2|get#method2(lowered final self::A1 #this) → () → void
return () → void => self::A2|method2(#this);
-static method A2|method3(lowered final self::A1* #this) → core::Object*
- return #this.{self::A1::field}{core::Object*};
-static method A2|get#method3(lowered final self::A1* #this) → () →* core::Object*
- return () → core::Object* => self::A2|method3(#this);
-static method A2|method4(lowered final self::A1* #this, core::Object* o) → void {
+static method A2|method3(lowered final self::A1 #this) → core::Object?
+ return #this.{self::A1::field}{core::Object?};
+static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
+ return () → core::Object? => self::A2|method3(#this);
+static method A2|method4(lowered final self::A1 #this, core::Object? o) → void {
#this.{self::A1::field} = o;
}
-static method A2|get#method4(lowered final self::A1* #this) → (core::Object*) →* void
- return (core::Object* o) → void => self::A2|method4(#this, o);
+static method A2|get#method4(lowered final self::A1 #this) → (core::Object?) → void
+ return (core::Object? o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart b/pkg/front_end/testcases/extensions/import_from_dill/main.dart
index 3c64e58..6524b05 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
import 'main_lib1.dart';
main() {
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline.expect
index 37f878a..b27adef 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'main_lib1.dart';
main() {}
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline_modelled.expect
index 37f878a..b27adef 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'main_lib1.dart';
main() {}
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.expect b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.expect
index 4dc6953..4b282dc 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "main_lib1.dart" as mai;
import "dart:core" as core;
@@ -16,11 +16,11 @@
#C2;
}
-library;
+library /*isNonNullableByDefault*/;
import self as mai;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
get instanceProperty = mai::Extension|get#instanceProperty;
method instanceMethod = mai::Extension|instanceMethod;
tearoff instanceMethod = mai::Extension|get#instanceMethod;
@@ -32,18 +32,18 @@
set instanceProperty = mai::Extension|set#instanceProperty;
static set staticProperty = set mai::Extension|staticProperty;
}
-static field core::int* Extension|staticField = 42;
-static final field core::int* Extension|staticFinalField = 42;
-static const field core::int* Extension|staticConstField = #C1;
-static method Extension|get#instanceProperty(lowered final core::int* #this) → core::int*
+static field core::int Extension|staticField = 42;
+static final field core::int Extension|staticFinalField = 42;
+static const field core::int Extension|staticConstField = #C1;
+static method Extension|get#instanceProperty(lowered final core::int #this) → core::int
return 42;
-static method Extension|set#instanceProperty(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|instanceMethod(lowered final core::int* #this) → void {}
-static method Extension|get#instanceMethod(lowered final core::int* #this) → () →* void
+static method Extension|set#instanceProperty(lowered final core::int #this, core::int value) → void {}
+static method Extension|instanceMethod(lowered final core::int #this) → void {}
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → void
return () → void => mai::Extension|instanceMethod(#this);
-static get Extension|staticProperty() → core::int*
+static get Extension|staticProperty() → core::int
return 42;
-static set Extension|staticProperty(core::int* value) → void {}
+static set Extension|staticProperty(core::int value) → void {}
static method Extension|staticMethod() → void {}
constants {
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.modular.expect
index 216ab75..04aa597 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "main_lib1.dart" as mai;
import "dart:core" as core;
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.outline.expect
index 71c7348..9e39c5f 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///main_lib1.dart";
@@ -6,11 +6,11 @@
static method main() → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
get instanceProperty = self2::Extension|get#instanceProperty;
method instanceMethod = self2::Extension|instanceMethod;
tearoff instanceMethod = self2::Extension|get#instanceMethod;
@@ -22,20 +22,20 @@
set instanceProperty = self2::Extension|set#instanceProperty;
static set staticProperty = set self2::Extension|staticProperty;
}
-static field core::int* Extension|staticField;
-static final field core::int* Extension|staticFinalField;
-static const field core::int* Extension|staticConstField = #C1;
-static method Extension|get#instanceProperty(lowered final core::int* #this) → core::int*
+static field core::int Extension|staticField;
+static final field core::int Extension|staticFinalField;
+static const field core::int Extension|staticConstField = #C1;
+static method Extension|get#instanceProperty(lowered final core::int #this) → core::int
;
-static method Extension|set#instanceProperty(lowered final core::int* #this, core::int* value) → void
+static method Extension|set#instanceProperty(lowered final core::int #this, core::int value) → void
;
-static method Extension|instanceMethod(lowered final core::int* #this) → void
+static method Extension|instanceMethod(lowered final core::int #this) → void
;
-static method Extension|get#instanceMethod(lowered final core::int* #this) → () →* void
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → void
return () → void => self2::Extension|instanceMethod(#this);
-static get Extension|staticProperty() → core::int*
+static get Extension|staticProperty() → core::int
;
-static set Extension|staticProperty(core::int* value) → void
+static set Extension|staticProperty(core::int value) → void
;
static method Extension|staticMethod() → void
;
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.transformed.expect
index 4dc6953..4b282dc 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "main_lib1.dart" as mai;
import "dart:core" as core;
@@ -16,11 +16,11 @@
#C2;
}
-library;
+library /*isNonNullableByDefault*/;
import self as mai;
import "dart:core" as core;
-extension Extension on core::int* {
+extension Extension on core::int {
get instanceProperty = mai::Extension|get#instanceProperty;
method instanceMethod = mai::Extension|instanceMethod;
tearoff instanceMethod = mai::Extension|get#instanceMethod;
@@ -32,18 +32,18 @@
set instanceProperty = mai::Extension|set#instanceProperty;
static set staticProperty = set mai::Extension|staticProperty;
}
-static field core::int* Extension|staticField = 42;
-static final field core::int* Extension|staticFinalField = 42;
-static const field core::int* Extension|staticConstField = #C1;
-static method Extension|get#instanceProperty(lowered final core::int* #this) → core::int*
+static field core::int Extension|staticField = 42;
+static final field core::int Extension|staticFinalField = 42;
+static const field core::int Extension|staticConstField = #C1;
+static method Extension|get#instanceProperty(lowered final core::int #this) → core::int
return 42;
-static method Extension|set#instanceProperty(lowered final core::int* #this, core::int* value) → void {}
-static method Extension|instanceMethod(lowered final core::int* #this) → void {}
-static method Extension|get#instanceMethod(lowered final core::int* #this) → () →* void
+static method Extension|set#instanceProperty(lowered final core::int #this, core::int value) → void {}
+static method Extension|instanceMethod(lowered final core::int #this) → void {}
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → void
return () → void => mai::Extension|instanceMethod(#this);
-static get Extension|staticProperty() → core::int*
+static get Extension|staticProperty() → core::int
return 42;
-static set Extension|staticProperty(core::int* value) → void {}
+static set Extension|staticProperty(core::int value) → void {}
static method Extension|staticMethod() → void {}
constants {
diff --git a/pkg/front_end/testcases/extensions/import_from_dill/main_lib1.dart b/pkg/front_end/testcases/extensions/import_from_dill/main_lib1.dart
index 4eba373..b08ae03 100644
--- a/pkg/front_end/testcases/extensions/import_from_dill/main_lib1.dart
+++ b/pkg/front_end/testcases/extensions/import_from_dill/main_lib1.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension Extension on int {
int get instanceProperty => 42;
void set instanceProperty(int value) {}
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart b/pkg/front_end/testcases/extensions/import_via_prefix.dart
index 859334a..a266734 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'import_via_prefix_lib.dart' as prefix;
main() {
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline.expect
index 493b461..b1848ace 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'import_via_prefix_lib.dart' as prefix;
main() {}
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline_modelled.expect
index 60e4620..72ac1a4 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'import_via_prefix_lib.dart' as prefix;
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect
index 0b2f376..533f4cd 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "import_via_prefix_lib.dart" as imp;
import "dart:core" as core;
@@ -9,19 +9,19 @@
self::expect(3, imp::Extension|method("foo"));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as imp;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
method method = imp::Extension|method;
tearoff method = imp::Extension|get#method;
}
-static method Extension|method(lowered final core::String* #this) → core::int*
- return #this.{core::String::length}{core::int*};
-static method Extension|get#method(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => imp::Extension|method(#this);
+static method Extension|method(lowered final core::String #this) → core::int
+ return #this.{core::String::length}{core::int};
+static method Extension|get#method(lowered final core::String #this) → () → core::int
+ return () → core::int => imp::Extension|method(#this);
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.modular.expect
index 0b2f376..533f4cd 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "import_via_prefix_lib.dart" as imp;
import "dart:core" as core;
@@ -9,19 +9,19 @@
self::expect(3, imp::Extension|method("foo"));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as imp;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
method method = imp::Extension|method;
tearoff method = imp::Extension|get#method;
}
-static method Extension|method(lowered final core::String* #this) → core::int*
- return #this.{core::String::length}{core::int*};
-static method Extension|get#method(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => imp::Extension|method(#this);
+static method Extension|method(lowered final core::String #this) → core::int
+ return #this.{core::String::length}{core::int};
+static method Extension|get#method(lowered final core::String #this) → () → core::int
+ return () → core::int => imp::Extension|method(#this);
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.outline.expect
index 920ce9c..68d8db6 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///import_via_prefix_lib.dart" as prefix;
@@ -8,15 +8,15 @@
static method expect(dynamic expected, dynamic actual) → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
method method = self2::Extension|method;
tearoff method = self2::Extension|get#method;
}
-static method Extension|method(lowered final core::String* #this) → core::int*
+static method Extension|method(lowered final core::String #this) → core::int
;
-static method Extension|get#method(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::Extension|method(#this);
+static method Extension|get#method(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::Extension|method(#this);
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect
index 0b2f376..533f4cd 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/import_via_prefix.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "import_via_prefix_lib.dart" as imp;
import "dart:core" as core;
@@ -9,19 +9,19 @@
self::expect(3, imp::Extension|method("foo"));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-library;
+library /*isNonNullableByDefault*/;
import self as imp;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
method method = imp::Extension|method;
tearoff method = imp::Extension|get#method;
}
-static method Extension|method(lowered final core::String* #this) → core::int*
- return #this.{core::String::length}{core::int*};
-static method Extension|get#method(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => imp::Extension|method(#this);
+static method Extension|method(lowered final core::String #this) → core::int
+ return #this.{core::String::length}{core::int};
+static method Extension|get#method(lowered final core::String #this) → () → core::int
+ return () → core::int => imp::Extension|method(#this);
diff --git a/pkg/front_end/testcases/extensions/import_via_prefix_lib.dart b/pkg/front_end/testcases/extensions/import_via_prefix_lib.dart
index 12a6894..a2f111a 100644
--- a/pkg/front_end/testcases/extensions/import_via_prefix_lib.dart
+++ b/pkg/front_end/testcases/extensions/import_via_prefix_lib.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension Extension on String {
int method() => length;
}
diff --git a/pkg/front_end/testcases/extensions/index.dart b/pkg/front_end/testcases/extensions/index.dart
index c33cd60..ab0f01a 100644
--- a/pkg/front_end/testcases/extensions/index.dart
+++ b/pkg/front_end/testcases/extensions/index.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class MapLike<K, V> {
final Map<K, V> _map = {};
diff --git a/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect
index 1b49a66..5741a4c 100644
--- a/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/index.dart.weak.transformed.expect
@@ -124,78 +124,78 @@
Extra constant evaluation status:
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:31:20 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:31:25 -> StringConstant("2")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:31:25 -> StringConstant("2")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:33:8 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:33:8 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:35:20 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:35:20 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:35:27 -> StringConstant("4")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:35:27 -> StringConstant("4")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:37:8 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:37:8 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:39:20 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:39:20 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:39:27 -> StringConstant("3")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:39:27 -> StringConstant("3")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:43:18 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:43:23 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:43:23 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:44:18 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:44:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:33:20 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:33:25 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:33:25 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:35:8 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:35:8 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:37:20 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:37:20 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:37:27 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:37:27 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:39:8 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:39:8 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:41:20 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:41:20 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:41:27 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:41:27 -> StringConstant("3")
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:45:18 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:45:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:45:23 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:45:23 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:46:18 -> IntConstant(0)
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:46:18 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:48:20 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:48:20 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:60:49 -> StringConstant("2")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:60:49 -> StringConstant("2")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:62:32 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:62:32 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:64:44 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:64:44 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:64:51 -> StringConstant("4")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:64:51 -> StringConstant("4")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:66:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:66:32 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:68:44 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:68:44 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:68:51 -> StringConstant("3")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:68:51 -> StringConstant("3")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:72:44 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:72:44 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:73:39 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:73:39 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:74:39 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:74:39 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:47:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:47:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:48:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:48:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:50:20 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:50:20 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:62:49 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:62:49 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:64:32 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:64:32 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:66:44 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:66:44 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:66:51 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:66:51 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:68:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:68:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:70:44 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:70:44 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:70:51 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:70:51 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:74:44 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:74:44 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:75:39 -> IntConstant(0)
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:75:39 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:77:41 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:77:41 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:89:36 -> StringConstant("2")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:89:36 -> StringConstant("2")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:91:19 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:91:19 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:93:31 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:93:31 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:93:38 -> StringConstant("4")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:93:38 -> StringConstant("4")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:95:19 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:95:19 -> IntConstant(2)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:97:31 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:97:31 -> IntConstant(3)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:97:38 -> StringConstant("3")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:97:38 -> StringConstant("3")
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:101:34 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:101:34 -> IntConstant(1)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:102:29 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:102:29 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:103:29 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:103:29 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:76:39 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:76:39 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:77:39 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:77:39 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:79:41 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:79:41 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:91:36 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:91:36 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:93:19 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:93:19 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:95:31 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:95:31 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:95:38 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:95:38 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:97:19 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:97:19 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:99:31 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:99:31 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:99:38 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:99:38 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:103:34 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:103:34 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:104:29 -> IntConstant(0)
Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:104:29 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:106:31 -> IntConstant(0)
-Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:106:31 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:105:29 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:105:29 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:106:29 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:106:29 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:108:31 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index.dart:108:31 -> IntConstant(0)
Extra constant evaluation: evaluated: 571, effectively constant: 74
diff --git a/pkg/front_end/testcases/extensions/index2.dart b/pkg/front_end/testcases/extensions/index2.dart
new file mode 100644
index 0000000..894f16a
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart
@@ -0,0 +1,129 @@
+// Copyright (c) 2019, 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 MapLike<K, V> {
+ final Map<K, V> _map = {};
+
+ V? get(Object key) => _map[key];
+ V put(K key, V value) => _map[key] = value;
+}
+
+extension Extension<K, V> on MapLike<K, V> {
+ V? operator [](Object key) => get(key);
+ void operator []=(K key, V value) => put(key, value);
+}
+
+class MapLike2<K, V> {
+ final Map<K, V> _map = {};
+ final V defaultValue;
+
+ MapLike2(this.defaultValue);
+
+ V get(Object key) => _map[key] ?? defaultValue;
+ V put(K key, V value) => _map[key] = value;
+}
+
+extension Extension2<K, V> on MapLike2<K, V> {
+ V operator [](Object key) => get(key);
+ void operator []=(K key, V value) => put(key, value);
+}
+
+main() {
+ implicit();
+ explicitWithTypeArguments();
+ explicitInferredTypeArguments();
+}
+
+implicit() {
+ MapLike<int, String> map1 = new MapLike();
+ expect(null, map1[0]);
+ map1.put(0, '0');
+ expect('0', map1[0]);
+ expect(null, map1[1]);
+ map1[1] = '1';
+ expect('1', map1[1]);
+ expect('2', map1[1] = '2');
+ expect('2', map1[1]);
+ map1[1] ??= '3';
+ expect('2', map1[1]);
+ expect('2', map1[1] ??= '4');
+ expect('2', map1[1]);
+ map1[2] ??= '2';
+ expect('2', map1[2]);
+ expect('3', map1[3] ??= '3');
+ expect('3', map1[3]);
+
+ MapLike2<int, int> map2 = new MapLike2(0);
+ expect(1, map2[0] = 1);
+ expect(3, map2[0] += 2);
+ expect(5, map2[0] += 2);
+ expect(5, map2[0]++);
+ expect(6, map2[0]);
+ expect(5, --map2[0]);
+ expect(5, map2[0]);
+}
+
+explicitWithTypeArguments() {
+ MapLike<int, String> map1 = new MapLike();
+ expect(null, Extension<int, String>(map1)[0]);
+ map1.put(0, '0');
+ expect('0', Extension<int, String>(map1)[0]);
+ expect(null, Extension<int, String>(map1)[1]);
+ Extension<int, String>(map1)[1] = '1';
+ expect('1', Extension<int, String>(map1)[1]);
+ expect('2', Extension<int, String>(map1)[1] = '2');
+ expect('2', Extension<int, String>(map1)[1]);
+ Extension<int, String>(map1)[1] ??= '3';
+ expect('2', Extension<int, String>(map1)[1]);
+ expect('2', Extension<int, String>(map1)[1] ??= '4');
+ expect('2', Extension<int, String>(map1)[1]);
+ Extension<int, String>(map1)[2] ??= '2';
+ expect('2', Extension<int, String>(map1)[2]);
+ expect('3', Extension<int, String>(map1)[3] ??= '3');
+ expect('3', Extension<int, String>(map1)[3]);
+
+ MapLike2<int, int> map2 = new MapLike2(0);
+ expect(1, Extension2<int, int>(map2)[0] = 1);
+ expect(3, Extension2<int, int>(map2)[0] += 2);
+ expect(5, Extension2<int, int>(map2)[0] += 2);
+ expect(5, Extension2<int, int>(map2)[0]++);
+ expect(6, Extension2<int, int>(map2)[0]);
+ expect(5, --Extension2<int, int>(map2)[0]);
+ expect(5, Extension2<int, int>(map2)[0]);
+}
+
+explicitInferredTypeArguments() {
+ MapLike<int, String> map1 = new MapLike();
+ expect(null, Extension(map1)[0]);
+ map1.put(0, '0');
+ expect('0', Extension(map1)[0]);
+ expect(null, Extension(map1)[1]);
+ Extension(map1)[1] = '1';
+ expect('1', Extension(map1)[1]);
+ expect('2', Extension(map1)[1] = '2');
+ expect('2', Extension(map1)[1]);
+ Extension(map1)[1] ??= '3';
+ expect('2', Extension(map1)[1]);
+ expect('2', Extension(map1)[1] ??= '4');
+ expect('2', Extension(map1)[1]);
+ Extension(map1)[2] ??= '2';
+ expect('2', Extension(map1)[2]);
+ expect('3', Extension(map1)[3] ??= '3');
+ expect('3', Extension(map1)[3]);
+
+ MapLike2<int, int> map2 = new MapLike2(0);
+ expect(1, Extension2(map2)[0] = 1);
+ expect(3, Extension2(map2)[0] += 2);
+ expect(5, Extension2(map2)[0] += 2);
+ expect(5, Extension2(map2)[0]++);
+ expect(6, Extension2(map2)[0]);
+ expect(5, --Extension2(map2)[0]);
+ expect(5, Extension2(map2)[0]);
+}
+
+expect(expected, actual) {
+ if (expected != actual) {
+ throw 'Mismatch: expected=$expected, actual=$actual';
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/index2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/index2.dart.textual_outline.expect
new file mode 100644
index 0000000..fcfebe2
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart.textual_outline.expect
@@ -0,0 +1,29 @@
+class MapLike<K, V> {
+ final Map<K, V> _map = {};
+ V? get(Object key) => _map[key];
+ V put(K key, V value) => _map[key] = value;
+}
+
+extension Extension<K, V> on MapLike<K, V> {
+ V? operator [](Object key) => get(key);
+ void operator []=(K key, V value) => put(key, value);
+}
+
+class MapLike2<K, V> {
+ final Map<K, V> _map = {};
+ final V defaultValue;
+ MapLike2(this.defaultValue);
+ V get(Object key) => _map[key] ?? defaultValue;
+ V put(K key, V value) => _map[key] = value;
+}
+
+extension Extension2<K, V> on MapLike2<K, V> {
+ V operator [](Object key) => get(key);
+ void operator []=(K key, V value) => put(key, value);
+}
+
+main() {}
+implicit() {}
+explicitWithTypeArguments() {}
+explicitInferredTypeArguments() {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/index2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/index2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..5dda1bd3
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart.textual_outline_modelled.expect
@@ -0,0 +1,30 @@
+class MapLike<K, V> {
+ V? get(Object key) => _map[key];
+ V put(K key, V value) => _map[key] = value;
+ final Map<K, V> _map = {};
+}
+
+class MapLike2<K, V> {
+ MapLike2(this.defaultValue);
+ V get(Object key) => _map[key] ?? defaultValue;
+ V put(K key, V value) => _map[key] = value;
+ final Map<K, V> _map = {};
+ final V defaultValue;
+}
+
+expect(expected, actual) {}
+explicitInferredTypeArguments() {}
+explicitWithTypeArguments() {}
+
+extension Extension<K, V> on MapLike<K, V> {
+ V? operator [](Object key) => get(key);
+ void operator []=(K key, V value) => put(key, value);
+}
+
+extension Extension2<K, V> on MapLike2<K, V> {
+ V operator [](Object key) => get(key);
+ void operator []=(K key, V value) => put(key, value);
+}
+
+implicit() {}
+main() {}
diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.expect
new file mode 100644
index 0000000..25a3f28
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart.weak.expect
@@ -0,0 +1,132 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class MapLike<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike::K%, self::MapLike::V%> _map = <self::MapLike::K%, self::MapLike::V%>{};
+ synthetic constructor •() → self::MapLike<self::MapLike::K%, self::MapLike::V%>
+ : super core::Object::•()
+ ;
+ method get(core::Object key) → self::MapLike::V?
+ return this.{self::MapLike::_map}{core::Map<self::MapLike::K%, self::MapLike::V%>}.{core::Map::[]}(key){(core::Object?) → self::MapLike::V?};
+ method put(covariant-by-class self::MapLike::K% key, covariant-by-class self::MapLike::V% value) → self::MapLike::V%
+ return let final core::Map<self::MapLike::K%, self::MapLike::V%> #t1 = this.{self::MapLike::_map}{core::Map<self::MapLike::K%, self::MapLike::V%>} in let final self::MapLike::K% #t2 = key in let final self::MapLike::V% #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3){(self::MapLike::K%, self::MapLike::V%) → void} in #t3;
+}
+class MapLike2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike2::K%, self::MapLike2::V%> _map = <self::MapLike2::K%, self::MapLike2::V%>{};
+ final field self::MapLike2::V% defaultValue;
+ constructor •(self::MapLike2::V% defaultValue) → self::MapLike2<self::MapLike2::K%, self::MapLike2::V%>
+ : self::MapLike2::defaultValue = defaultValue, super core::Object::•()
+ ;
+ method get(core::Object key) → self::MapLike2::V%
+ return let final self::MapLike2::V? #t5 = this.{self::MapLike2::_map}{core::Map<self::MapLike2::K%, self::MapLike2::V%>}.{core::Map::[]}(key){(core::Object?) → self::MapLike2::V?} in #t5 == null ?{self::MapLike2::V%} this.{self::MapLike2::defaultValue}{self::MapLike2::V%} : #t5{self::MapLike2::V% & core::Object /* '%' & '!' = '!' */};
+ method put(covariant-by-class self::MapLike2::K% key, covariant-by-class self::MapLike2::V% value) → self::MapLike2::V%
+ return let final core::Map<self::MapLike2::K%, self::MapLike2::V%> #t6 = this.{self::MapLike2::_map}{core::Map<self::MapLike2::K%, self::MapLike2::V%>} in let final self::MapLike2::K% #t7 = key in let final self::MapLike2::V% #t8 = value in let final void #t9 = #t6.{core::Map::[]=}(#t7, #t8){(self::MapLike2::K%, self::MapLike2::V%) → void} in #t8;
+}
+extension Extension<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike<K%, V%> {
+ operator [] = self::Extension|[];
+ operator []= = self::Extension|[]=;
+}
+extension Extension2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike2<K%, V%> {
+ operator [] = self::Extension2|[];
+ operator []= = self::Extension2|[]=;
+}
+static method Extension|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]::K%, self::Extension|[]::V%> #this, core::Object key) → self::Extension|[]::V?
+ return #this.{self::MapLike::get}(key){(core::Object) → self::Extension|[]::V?};
+static method Extension|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]=::K%, self::Extension|[]=::V%> #this, self::Extension|[]=::K% key, self::Extension|[]=::V% value) → void
+ return #this.{self::MapLike::put}(key, value){(self::Extension|[]=::K%, self::Extension|[]=::V%) → self::Extension|[]=::V%};
+static method Extension2|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]::K%, self::Extension2|[]::V%> #this, core::Object key) → self::Extension2|[]::V%
+ return #this.{self::MapLike2::get}(key){(core::Object) → self::Extension2|[]::V%};
+static method Extension2|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]=::K%, self::Extension2|[]=::V%> #this, self::Extension2|[]=::K% key, self::Extension2|[]=::V% value) → void
+ return #this.{self::MapLike2::put}(key, value){(self::Extension2|[]=::K%, self::Extension2|[]=::V%) → self::Extension2|[]=::V%};
+static method main() → dynamic {
+ self::implicit();
+ self::explicitWithTypeArguments();
+ self::explicitInferredTypeArguments();
+}
+static method implicit() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t10 = map1 in let final core::int #t11 = 1 in let final core::String #t12 = "2" in let final void #t13 = self::Extension|[]=<core::int, core::String>(#t10, #t11, #t12) in #t12);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t14 = map1 in let final core::int #t15 = 1 in self::Extension|[]<core::int, core::String>(#t14, #t15) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t14, #t15, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t16 = map1 in let final core::int #t17 = 1 in let final core::String? #t18 = self::Extension|[]<core::int, core::String>(#t16, #t17) in #t18 == null ?{core::String} let final core::String #t19 = "4" in let final void #t20 = self::Extension|[]=<core::int, core::String>(#t16, #t17, #t19) in #t19 : #t18{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t21 = map1 in let final core::int #t22 = 2 in self::Extension|[]<core::int, core::String>(#t21, #t22) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t21, #t22, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t23 = map1 in let final core::int #t24 = 3 in let final core::String? #t25 = self::Extension|[]<core::int, core::String>(#t23, #t24) in #t25 == null ?{core::String} let final core::String #t26 = "3" in let final void #t27 = self::Extension|[]=<core::int, core::String>(#t23, #t24, #t26) in #t26 : #t25{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t28 = map2 in let final core::int #t29 = 0 in let final core::int #t30 = 1 in let final void #t31 = self::Extension2|[]=<core::int, core::int>(#t28, #t29, #t30) in #t30);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t32 = map2 in let final core::int #t33 = 0 in let final core::int #t34 = self::Extension2|[]<core::int, core::int>(#t32, #t33).{core::num::+}(2){(core::num) → core::int} in let final void #t35 = self::Extension2|[]=<core::int, core::int>(#t32, #t33, #t34) in #t34);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t36 = map2 in let final core::int #t37 = 0 in let final core::int #t38 = self::Extension2|[]<core::int, core::int>(#t36, #t37).{core::num::+}(2){(core::num) → core::int} in let final void #t39 = self::Extension2|[]=<core::int, core::int>(#t36, #t37, #t38) in #t38);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t40 = map2 in let final core::int #t41 = 0 in let final core::int #t42 = self::Extension2|[]<core::int, core::int>(#t40, #t41) in let final void #t43 = self::Extension2|[]=<core::int, core::int>(#t40, #t41, #t42.{core::num::+}(1){(core::num) → core::int}) in #t42);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t44 = map2 in let final core::int #t45 = 0 in let final core::int #t46 = self::Extension2|[]<core::int, core::int>(#t44, #t45).{core::num::-}(1){(core::num) → core::int} in let final void #t47 = self::Extension2|[]=<core::int, core::int>(#t44, #t45, #t46) in #t46);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method explicitWithTypeArguments() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=<core::int, core::String>(#t48, 1, #t49) in #t49);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[]<core::int, core::String>(#t51, #t52) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t51, #t52, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[]<core::int, core::String>(#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=<core::int, core::String>(#t53, #t54, #t56) in #t56 : #t55{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[]<core::int, core::String>(#t58, #t59) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t58, #t59, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[]<core::int, core::String>(#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=<core::int, core::String>(#t60, #t61, #t63) in #t63 : #t62{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t65 = map2 in let final core::int #t66 = 1 in let final void #t67 = self::Extension2|[]=<core::int, core::int>(#t65, 0, #t66) in #t66);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t68 = map2 in let final core::int #t69 = 0 in let final core::int #t70 = self::Extension2|[]<core::int, core::int>(#t68, #t69).{core::num::+}(2){(core::num) → core::int} in let final void #t71 = self::Extension2|[]=<core::int, core::int>(#t68, #t69, #t70) in #t70);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t72 = map2 in let final core::int #t73 = 0 in let final core::int #t74 = self::Extension2|[]<core::int, core::int>(#t72, #t73).{core::num::+}(2){(core::num) → core::int} in let final void #t75 = self::Extension2|[]=<core::int, core::int>(#t72, #t73, #t74) in #t74);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t76 = map2 in let final core::int #t77 = 0 in let final core::int #t78 = self::Extension2|[]<core::int, core::int>(#t76, #t77) in let final void #t79 = self::Extension2|[]=<core::int, core::int>(#t76, #t77, #t78.{core::num::+}(1){(core::num) → core::int}) in #t78);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t80 = map2 in let final core::int #t81 = 0 in let final core::int #t82 = self::Extension2|[]<core::int, core::int>(#t80, #t81).{core::num::-}(1){(core::num) → core::int} in let final void #t83 = self::Extension2|[]=<core::int, core::int>(#t80, #t81, #t82) in #t82);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method explicitInferredTypeArguments() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=<core::int, core::String>(#t84, 1, #t85) in #t85);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[]<core::int, core::String>(#t87, #t88) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t87, #t88, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[]<core::int, core::String>(#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=<core::int, core::String>(#t89, #t90, #t92) in #t92 : #t91{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[]<core::int, core::String>(#t94, #t95) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t94, #t95, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[]<core::int, core::String>(#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=<core::int, core::String>(#t96, #t97, #t99) in #t99 : #t98{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t101 = map2 in let final core::int #t102 = 1 in let final void #t103 = self::Extension2|[]=<core::int, core::int>(#t101, 0, #t102) in #t102);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t104 = map2 in let final core::int #t105 = 0 in let final core::int #t106 = self::Extension2|[]<core::int, core::int>(#t104, #t105).{core::num::+}(2){(core::num) → core::int} in let final void #t107 = self::Extension2|[]=<core::int, core::int>(#t104, #t105, #t106) in #t106);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t108 = map2 in let final core::int #t109 = 0 in let final core::int #t110 = self::Extension2|[]<core::int, core::int>(#t108, #t109).{core::num::+}(2){(core::num) → core::int} in let final void #t111 = self::Extension2|[]=<core::int, core::int>(#t108, #t109, #t110) in #t110);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t112 = map2 in let final core::int #t113 = 0 in let final core::int #t114 = self::Extension2|[]<core::int, core::int>(#t112, #t113) in let final void #t115 = self::Extension2|[]=<core::int, core::int>(#t112, #t113, #t114.{core::num::+}(1){(core::num) → core::int}) in #t114);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t116 = map2 in let final core::int #t117 = 0 in let final core::int #t118 = self::Extension2|[]<core::int, core::int>(#t116, #t117).{core::num::-}(1){(core::num) → core::int} in let final void #t119 = self::Extension2|[]=<core::int, core::int>(#t116, #t117, #t118) in #t118);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect
new file mode 100644
index 0000000..25a3f28
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect
@@ -0,0 +1,132 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class MapLike<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike::K%, self::MapLike::V%> _map = <self::MapLike::K%, self::MapLike::V%>{};
+ synthetic constructor •() → self::MapLike<self::MapLike::K%, self::MapLike::V%>
+ : super core::Object::•()
+ ;
+ method get(core::Object key) → self::MapLike::V?
+ return this.{self::MapLike::_map}{core::Map<self::MapLike::K%, self::MapLike::V%>}.{core::Map::[]}(key){(core::Object?) → self::MapLike::V?};
+ method put(covariant-by-class self::MapLike::K% key, covariant-by-class self::MapLike::V% value) → self::MapLike::V%
+ return let final core::Map<self::MapLike::K%, self::MapLike::V%> #t1 = this.{self::MapLike::_map}{core::Map<self::MapLike::K%, self::MapLike::V%>} in let final self::MapLike::K% #t2 = key in let final self::MapLike::V% #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3){(self::MapLike::K%, self::MapLike::V%) → void} in #t3;
+}
+class MapLike2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike2::K%, self::MapLike2::V%> _map = <self::MapLike2::K%, self::MapLike2::V%>{};
+ final field self::MapLike2::V% defaultValue;
+ constructor •(self::MapLike2::V% defaultValue) → self::MapLike2<self::MapLike2::K%, self::MapLike2::V%>
+ : self::MapLike2::defaultValue = defaultValue, super core::Object::•()
+ ;
+ method get(core::Object key) → self::MapLike2::V%
+ return let final self::MapLike2::V? #t5 = this.{self::MapLike2::_map}{core::Map<self::MapLike2::K%, self::MapLike2::V%>}.{core::Map::[]}(key){(core::Object?) → self::MapLike2::V?} in #t5 == null ?{self::MapLike2::V%} this.{self::MapLike2::defaultValue}{self::MapLike2::V%} : #t5{self::MapLike2::V% & core::Object /* '%' & '!' = '!' */};
+ method put(covariant-by-class self::MapLike2::K% key, covariant-by-class self::MapLike2::V% value) → self::MapLike2::V%
+ return let final core::Map<self::MapLike2::K%, self::MapLike2::V%> #t6 = this.{self::MapLike2::_map}{core::Map<self::MapLike2::K%, self::MapLike2::V%>} in let final self::MapLike2::K% #t7 = key in let final self::MapLike2::V% #t8 = value in let final void #t9 = #t6.{core::Map::[]=}(#t7, #t8){(self::MapLike2::K%, self::MapLike2::V%) → void} in #t8;
+}
+extension Extension<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike<K%, V%> {
+ operator [] = self::Extension|[];
+ operator []= = self::Extension|[]=;
+}
+extension Extension2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike2<K%, V%> {
+ operator [] = self::Extension2|[];
+ operator []= = self::Extension2|[]=;
+}
+static method Extension|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]::K%, self::Extension|[]::V%> #this, core::Object key) → self::Extension|[]::V?
+ return #this.{self::MapLike::get}(key){(core::Object) → self::Extension|[]::V?};
+static method Extension|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]=::K%, self::Extension|[]=::V%> #this, self::Extension|[]=::K% key, self::Extension|[]=::V% value) → void
+ return #this.{self::MapLike::put}(key, value){(self::Extension|[]=::K%, self::Extension|[]=::V%) → self::Extension|[]=::V%};
+static method Extension2|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]::K%, self::Extension2|[]::V%> #this, core::Object key) → self::Extension2|[]::V%
+ return #this.{self::MapLike2::get}(key){(core::Object) → self::Extension2|[]::V%};
+static method Extension2|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]=::K%, self::Extension2|[]=::V%> #this, self::Extension2|[]=::K% key, self::Extension2|[]=::V% value) → void
+ return #this.{self::MapLike2::put}(key, value){(self::Extension2|[]=::K%, self::Extension2|[]=::V%) → self::Extension2|[]=::V%};
+static method main() → dynamic {
+ self::implicit();
+ self::explicitWithTypeArguments();
+ self::explicitInferredTypeArguments();
+}
+static method implicit() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t10 = map1 in let final core::int #t11 = 1 in let final core::String #t12 = "2" in let final void #t13 = self::Extension|[]=<core::int, core::String>(#t10, #t11, #t12) in #t12);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t14 = map1 in let final core::int #t15 = 1 in self::Extension|[]<core::int, core::String>(#t14, #t15) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t14, #t15, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t16 = map1 in let final core::int #t17 = 1 in let final core::String? #t18 = self::Extension|[]<core::int, core::String>(#t16, #t17) in #t18 == null ?{core::String} let final core::String #t19 = "4" in let final void #t20 = self::Extension|[]=<core::int, core::String>(#t16, #t17, #t19) in #t19 : #t18{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t21 = map1 in let final core::int #t22 = 2 in self::Extension|[]<core::int, core::String>(#t21, #t22) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t21, #t22, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t23 = map1 in let final core::int #t24 = 3 in let final core::String? #t25 = self::Extension|[]<core::int, core::String>(#t23, #t24) in #t25 == null ?{core::String} let final core::String #t26 = "3" in let final void #t27 = self::Extension|[]=<core::int, core::String>(#t23, #t24, #t26) in #t26 : #t25{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t28 = map2 in let final core::int #t29 = 0 in let final core::int #t30 = 1 in let final void #t31 = self::Extension2|[]=<core::int, core::int>(#t28, #t29, #t30) in #t30);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t32 = map2 in let final core::int #t33 = 0 in let final core::int #t34 = self::Extension2|[]<core::int, core::int>(#t32, #t33).{core::num::+}(2){(core::num) → core::int} in let final void #t35 = self::Extension2|[]=<core::int, core::int>(#t32, #t33, #t34) in #t34);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t36 = map2 in let final core::int #t37 = 0 in let final core::int #t38 = self::Extension2|[]<core::int, core::int>(#t36, #t37).{core::num::+}(2){(core::num) → core::int} in let final void #t39 = self::Extension2|[]=<core::int, core::int>(#t36, #t37, #t38) in #t38);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t40 = map2 in let final core::int #t41 = 0 in let final core::int #t42 = self::Extension2|[]<core::int, core::int>(#t40, #t41) in let final void #t43 = self::Extension2|[]=<core::int, core::int>(#t40, #t41, #t42.{core::num::+}(1){(core::num) → core::int}) in #t42);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t44 = map2 in let final core::int #t45 = 0 in let final core::int #t46 = self::Extension2|[]<core::int, core::int>(#t44, #t45).{core::num::-}(1){(core::num) → core::int} in let final void #t47 = self::Extension2|[]=<core::int, core::int>(#t44, #t45, #t46) in #t46);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method explicitWithTypeArguments() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=<core::int, core::String>(#t48, 1, #t49) in #t49);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[]<core::int, core::String>(#t51, #t52) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t51, #t52, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[]<core::int, core::String>(#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=<core::int, core::String>(#t53, #t54, #t56) in #t56 : #t55{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[]<core::int, core::String>(#t58, #t59) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t58, #t59, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[]<core::int, core::String>(#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=<core::int, core::String>(#t60, #t61, #t63) in #t63 : #t62{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t65 = map2 in let final core::int #t66 = 1 in let final void #t67 = self::Extension2|[]=<core::int, core::int>(#t65, 0, #t66) in #t66);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t68 = map2 in let final core::int #t69 = 0 in let final core::int #t70 = self::Extension2|[]<core::int, core::int>(#t68, #t69).{core::num::+}(2){(core::num) → core::int} in let final void #t71 = self::Extension2|[]=<core::int, core::int>(#t68, #t69, #t70) in #t70);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t72 = map2 in let final core::int #t73 = 0 in let final core::int #t74 = self::Extension2|[]<core::int, core::int>(#t72, #t73).{core::num::+}(2){(core::num) → core::int} in let final void #t75 = self::Extension2|[]=<core::int, core::int>(#t72, #t73, #t74) in #t74);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t76 = map2 in let final core::int #t77 = 0 in let final core::int #t78 = self::Extension2|[]<core::int, core::int>(#t76, #t77) in let final void #t79 = self::Extension2|[]=<core::int, core::int>(#t76, #t77, #t78.{core::num::+}(1){(core::num) → core::int}) in #t78);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t80 = map2 in let final core::int #t81 = 0 in let final core::int #t82 = self::Extension2|[]<core::int, core::int>(#t80, #t81).{core::num::-}(1){(core::num) → core::int} in let final void #t83 = self::Extension2|[]=<core::int, core::int>(#t80, #t81, #t82) in #t82);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method explicitInferredTypeArguments() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=<core::int, core::String>(#t84, 1, #t85) in #t85);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[]<core::int, core::String>(#t87, #t88) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t87, #t88, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[]<core::int, core::String>(#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=<core::int, core::String>(#t89, #t90, #t92) in #t92 : #t91{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[]<core::int, core::String>(#t94, #t95) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t94, #t95, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[]<core::int, core::String>(#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=<core::int, core::String>(#t96, #t97, #t99) in #t99 : #t98{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t101 = map2 in let final core::int #t102 = 1 in let final void #t103 = self::Extension2|[]=<core::int, core::int>(#t101, 0, #t102) in #t102);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t104 = map2 in let final core::int #t105 = 0 in let final core::int #t106 = self::Extension2|[]<core::int, core::int>(#t104, #t105).{core::num::+}(2){(core::num) → core::int} in let final void #t107 = self::Extension2|[]=<core::int, core::int>(#t104, #t105, #t106) in #t106);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t108 = map2 in let final core::int #t109 = 0 in let final core::int #t110 = self::Extension2|[]<core::int, core::int>(#t108, #t109).{core::num::+}(2){(core::num) → core::int} in let final void #t111 = self::Extension2|[]=<core::int, core::int>(#t108, #t109, #t110) in #t110);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t112 = map2 in let final core::int #t113 = 0 in let final core::int #t114 = self::Extension2|[]<core::int, core::int>(#t112, #t113) in let final void #t115 = self::Extension2|[]=<core::int, core::int>(#t112, #t113, #t114.{core::num::+}(1){(core::num) → core::int}) in #t114);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t116 = map2 in let final core::int #t117 = 0 in let final core::int #t118 = self::Extension2|[]<core::int, core::int>(#t116, #t117).{core::num::-}(1){(core::num) → core::int} in let final void #t119 = self::Extension2|[]=<core::int, core::int>(#t116, #t117, #t118) in #t118);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.outline.expect
new file mode 100644
index 0000000..3227a86
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart.weak.outline.expect
@@ -0,0 +1,49 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class MapLike<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike::K%, self::MapLike::V%> _map;
+ synthetic constructor •() → self::MapLike<self::MapLike::K%, self::MapLike::V%>
+ ;
+ method get(core::Object key) → self::MapLike::V?
+ ;
+ method put(covariant-by-class self::MapLike::K% key, covariant-by-class self::MapLike::V% value) → self::MapLike::V%
+ ;
+}
+class MapLike2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike2::K%, self::MapLike2::V%> _map;
+ final field self::MapLike2::V% defaultValue;
+ constructor •(self::MapLike2::V% defaultValue) → self::MapLike2<self::MapLike2::K%, self::MapLike2::V%>
+ ;
+ method get(core::Object key) → self::MapLike2::V%
+ ;
+ method put(covariant-by-class self::MapLike2::K% key, covariant-by-class self::MapLike2::V% value) → self::MapLike2::V%
+ ;
+}
+extension Extension<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike<K%, V%> {
+ operator [] = self::Extension|[];
+ operator []= = self::Extension|[]=;
+}
+extension Extension2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike2<K%, V%> {
+ operator [] = self::Extension2|[];
+ operator []= = self::Extension2|[]=;
+}
+static method Extension|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]::K%, self::Extension|[]::V%> #this, core::Object key) → self::Extension|[]::V?
+ ;
+static method Extension|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]=::K%, self::Extension|[]=::V%> #this, self::Extension|[]=::K% key, self::Extension|[]=::V% value) → void
+ ;
+static method Extension2|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]::K%, self::Extension2|[]::V%> #this, core::Object key) → self::Extension2|[]::V%
+ ;
+static method Extension2|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]=::K%, self::Extension2|[]=::V%> #this, self::Extension2|[]=::K% key, self::Extension2|[]=::V% value) → void
+ ;
+static method main() → dynamic
+ ;
+static method implicit() → dynamic
+ ;
+static method explicitWithTypeArguments() → dynamic
+ ;
+static method explicitInferredTypeArguments() → dynamic
+ ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect
new file mode 100644
index 0000000..57fee44
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect
@@ -0,0 +1,210 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class MapLike<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike::K%, self::MapLike::V%> _map = <self::MapLike::K%, self::MapLike::V%>{};
+ synthetic constructor •() → self::MapLike<self::MapLike::K%, self::MapLike::V%>
+ : super core::Object::•()
+ ;
+ method get(core::Object key) → self::MapLike::V?
+ return this.{self::MapLike::_map}{core::Map<self::MapLike::K%, self::MapLike::V%>}.{core::Map::[]}(key){(core::Object?) → self::MapLike::V?};
+ method put(covariant-by-class self::MapLike::K% key, covariant-by-class self::MapLike::V% value) → self::MapLike::V%
+ return let final core::Map<self::MapLike::K%, self::MapLike::V%> #t1 = this.{self::MapLike::_map}{core::Map<self::MapLike::K%, self::MapLike::V%>} in let final self::MapLike::K% #t2 = key in let final self::MapLike::V% #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3){(self::MapLike::K%, self::MapLike::V%) → void} in #t3;
+}
+class MapLike2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> extends core::Object {
+ final field core::Map<self::MapLike2::K%, self::MapLike2::V%> _map = <self::MapLike2::K%, self::MapLike2::V%>{};
+ final field self::MapLike2::V% defaultValue;
+ constructor •(self::MapLike2::V% defaultValue) → self::MapLike2<self::MapLike2::K%, self::MapLike2::V%>
+ : self::MapLike2::defaultValue = defaultValue, super core::Object::•()
+ ;
+ method get(core::Object key) → self::MapLike2::V%
+ return let final self::MapLike2::V? #t5 = this.{self::MapLike2::_map}{core::Map<self::MapLike2::K%, self::MapLike2::V%>}.{core::Map::[]}(key){(core::Object?) → self::MapLike2::V?} in #t5 == null ?{self::MapLike2::V%} this.{self::MapLike2::defaultValue}{self::MapLike2::V%} : #t5{self::MapLike2::V% & core::Object /* '%' & '!' = '!' */};
+ method put(covariant-by-class self::MapLike2::K% key, covariant-by-class self::MapLike2::V% value) → self::MapLike2::V%
+ return let final core::Map<self::MapLike2::K%, self::MapLike2::V%> #t6 = this.{self::MapLike2::_map}{core::Map<self::MapLike2::K%, self::MapLike2::V%>} in let final self::MapLike2::K% #t7 = key in let final self::MapLike2::V% #t8 = value in let final void #t9 = #t6.{core::Map::[]=}(#t7, #t8){(self::MapLike2::K%, self::MapLike2::V%) → void} in #t8;
+}
+extension Extension<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike<K%, V%> {
+ operator [] = self::Extension|[];
+ operator []= = self::Extension|[]=;
+}
+extension Extension2<K extends core::Object? = dynamic, V extends core::Object? = dynamic> on self::MapLike2<K%, V%> {
+ operator [] = self::Extension2|[];
+ operator []= = self::Extension2|[]=;
+}
+static method Extension|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]::K%, self::Extension|[]::V%> #this, core::Object key) → self::Extension|[]::V?
+ return #this.{self::MapLike::get}(key){(core::Object) → self::Extension|[]::V?};
+static method Extension|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike<self::Extension|[]=::K%, self::Extension|[]=::V%> #this, self::Extension|[]=::K% key, self::Extension|[]=::V% value) → void
+ return #this.{self::MapLike::put}(key, value){(self::Extension|[]=::K%, self::Extension|[]=::V%) → self::Extension|[]=::V%};
+static method Extension2|[]<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]::K%, self::Extension2|[]::V%> #this, core::Object key) → self::Extension2|[]::V%
+ return #this.{self::MapLike2::get}(key){(core::Object) → self::Extension2|[]::V%};
+static method Extension2|[]=<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(lowered final self::MapLike2<self::Extension2|[]=::K%, self::Extension2|[]=::V%> #this, self::Extension2|[]=::K% key, self::Extension2|[]=::V% value) → void
+ return #this.{self::MapLike2::put}(key, value){(self::Extension2|[]=::K%, self::Extension2|[]=::V%) → self::Extension2|[]=::V%};
+static method main() → dynamic {
+ self::implicit();
+ self::explicitWithTypeArguments();
+ self::explicitInferredTypeArguments();
+}
+static method implicit() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t10 = map1 in let final core::int #t11 = 1 in let final core::String #t12 = "2" in let final void #t13 = self::Extension|[]=<core::int, core::String>(#t10, #t11, #t12) in #t12);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t14 = map1 in let final core::int #t15 = 1 in self::Extension|[]<core::int, core::String>(#t14, #t15) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t14, #t15, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t16 = map1 in let final core::int #t17 = 1 in let final core::String? #t18 = self::Extension|[]<core::int, core::String>(#t16, #t17) in #t18 == null ?{core::String} let final core::String #t19 = "4" in let final void #t20 = self::Extension|[]=<core::int, core::String>(#t16, #t17, #t19) in #t19 : #t18{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t21 = map1 in let final core::int #t22 = 2 in self::Extension|[]<core::int, core::String>(#t21, #t22) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t21, #t22, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t23 = map1 in let final core::int #t24 = 3 in let final core::String? #t25 = self::Extension|[]<core::int, core::String>(#t23, #t24) in #t25 == null ?{core::String} let final core::String #t26 = "3" in let final void #t27 = self::Extension|[]=<core::int, core::String>(#t23, #t24, #t26) in #t26 : #t25{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t28 = map2 in let final core::int #t29 = 0 in let final core::int #t30 = 1 in let final void #t31 = self::Extension2|[]=<core::int, core::int>(#t28, #t29, #t30) in #t30);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t32 = map2 in let final core::int #t33 = 0 in let final core::int #t34 = self::Extension2|[]<core::int, core::int>(#t32, #t33).{core::num::+}(2){(core::num) → core::int} in let final void #t35 = self::Extension2|[]=<core::int, core::int>(#t32, #t33, #t34) in #t34);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t36 = map2 in let final core::int #t37 = 0 in let final core::int #t38 = self::Extension2|[]<core::int, core::int>(#t36, #t37).{core::num::+}(2){(core::num) → core::int} in let final void #t39 = self::Extension2|[]=<core::int, core::int>(#t36, #t37, #t38) in #t38);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t40 = map2 in let final core::int #t41 = 0 in let final core::int #t42 = self::Extension2|[]<core::int, core::int>(#t40, #t41) in let final void #t43 = self::Extension2|[]=<core::int, core::int>(#t40, #t41, #t42.{core::num::+}(1){(core::num) → core::int}) in #t42);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t44 = map2 in let final core::int #t45 = 0 in let final core::int #t46 = self::Extension2|[]<core::int, core::int>(#t44, #t45).{core::num::-}(1){(core::num) → core::int} in let final void #t47 = self::Extension2|[]=<core::int, core::int>(#t44, #t45, #t46) in #t46);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method explicitWithTypeArguments() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=<core::int, core::String>(#t48, 1, #t49) in #t49);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[]<core::int, core::String>(#t51, #t52) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t51, #t52, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[]<core::int, core::String>(#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=<core::int, core::String>(#t53, #t54, #t56) in #t56 : #t55{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[]<core::int, core::String>(#t58, #t59) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t58, #t59, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[]<core::int, core::String>(#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=<core::int, core::String>(#t60, #t61, #t63) in #t63 : #t62{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t65 = map2 in let final core::int #t66 = 1 in let final void #t67 = self::Extension2|[]=<core::int, core::int>(#t65, 0, #t66) in #t66);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t68 = map2 in let final core::int #t69 = 0 in let final core::int #t70 = self::Extension2|[]<core::int, core::int>(#t68, #t69).{core::num::+}(2){(core::num) → core::int} in let final void #t71 = self::Extension2|[]=<core::int, core::int>(#t68, #t69, #t70) in #t70);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t72 = map2 in let final core::int #t73 = 0 in let final core::int #t74 = self::Extension2|[]<core::int, core::int>(#t72, #t73).{core::num::+}(2){(core::num) → core::int} in let final void #t75 = self::Extension2|[]=<core::int, core::int>(#t72, #t73, #t74) in #t74);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t76 = map2 in let final core::int #t77 = 0 in let final core::int #t78 = self::Extension2|[]<core::int, core::int>(#t76, #t77) in let final void #t79 = self::Extension2|[]=<core::int, core::int>(#t76, #t77, #t78.{core::num::+}(1){(core::num) → core::int}) in #t78);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t80 = map2 in let final core::int #t81 = 0 in let final core::int #t82 = self::Extension2|[]<core::int, core::int>(#t80, #t81).{core::num::-}(1){(core::num) → core::int} in let final void #t83 = self::Extension2|[]=<core::int, core::int>(#t80, #t81, #t82) in #t82);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method explicitInferredTypeArguments() → dynamic {
+ self::MapLike<core::int, core::String> map1 = new self::MapLike::•<core::int, core::String>();
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 0));
+ map1.{self::MapLike::put}(0, "0"){(core::int, core::String) → core::String};
+ self::expect("0", self::Extension|[]<core::int, core::String>(map1, 0));
+ self::expect(null, self::Extension|[]<core::int, core::String>(map1, 1));
+ self::Extension|[]=<core::int, core::String>(map1, 1, "1");
+ self::expect("1", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=<core::int, core::String>(#t84, 1, #t85) in #t85);
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[]<core::int, core::String>(#t87, #t88) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t87, #t88, "3") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ self::expect("2", let final self::MapLike<core::int, core::String> #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[]<core::int, core::String>(#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=<core::int, core::String>(#t89, #t90, #t92) in #t92 : #t91{core::String});
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 1));
+ let final self::MapLike<core::int, core::String> #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[]<core::int, core::String>(#t94, #t95) == null ?{core::String} self::Extension|[]=<core::int, core::String>(#t94, #t95, "2") : null;
+ self::expect("2", self::Extension|[]<core::int, core::String>(map1, 2));
+ self::expect("3", let final self::MapLike<core::int, core::String> #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[]<core::int, core::String>(#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=<core::int, core::String>(#t96, #t97, #t99) in #t99 : #t98{core::String});
+ self::expect("3", self::Extension|[]<core::int, core::String>(map1, 3));
+ self::MapLike2<core::int, core::int> map2 = new self::MapLike2::•<core::int, core::int>(0);
+ self::expect(1, let final self::MapLike2<core::int, core::int> #t101 = map2 in let final core::int #t102 = 1 in let final void #t103 = self::Extension2|[]=<core::int, core::int>(#t101, 0, #t102) in #t102);
+ self::expect(3, let final self::MapLike2<core::int, core::int> #t104 = map2 in let final core::int #t105 = 0 in let final core::int #t106 = self::Extension2|[]<core::int, core::int>(#t104, #t105).{core::num::+}(2){(core::num) → core::int} in let final void #t107 = self::Extension2|[]=<core::int, core::int>(#t104, #t105, #t106) in #t106);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t108 = map2 in let final core::int #t109 = 0 in let final core::int #t110 = self::Extension2|[]<core::int, core::int>(#t108, #t109).{core::num::+}(2){(core::num) → core::int} in let final void #t111 = self::Extension2|[]=<core::int, core::int>(#t108, #t109, #t110) in #t110);
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t112 = map2 in let final core::int #t113 = 0 in let final core::int #t114 = self::Extension2|[]<core::int, core::int>(#t112, #t113) in let final void #t115 = self::Extension2|[]=<core::int, core::int>(#t112, #t113, #t114.{core::num::+}(1){(core::num) → core::int}) in #t114);
+ self::expect(6, self::Extension2|[]<core::int, core::int>(map2, 0));
+ self::expect(5, let final self::MapLike2<core::int, core::int> #t116 = map2 in let final core::int #t117 = 0 in let final core::int #t118 = self::Extension2|[]<core::int, core::int>(#t116, #t117).{core::num::-}(1){(core::num) → core::int} in let final void #t119 = self::Extension2|[]=<core::int, core::int>(#t116, #t117, #t118) in #t118);
+ self::expect(5, self::Extension2|[]<core::int, core::int>(map2, 0));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
+
+
+Extra constant evaluation status:
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:46:20 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:46:25 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:46:25 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:48:8 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:48:8 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:50:20 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:50:20 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:50:27 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:50:27 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:52:8 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:52:8 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:54:20 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:54:20 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:54:27 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:54:27 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:58:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:58:23 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:58:23 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:59:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:59:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:60:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:60:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:61:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:61:18 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:63:20 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:63:20 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:75:49 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:75:49 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:77:32 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:77:32 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:79:44 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:79:44 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:79:51 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:79:51 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:81:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:81:32 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:83:44 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:83:44 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:83:51 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:83:51 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:87:45 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:87:45 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:88:40 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:88:40 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:89:40 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:89:40 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:90:40 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:90:40 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:92:42 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:92:42 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:104:36 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:104:36 -> StringConstant("2")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:106:19 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:106:19 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:108:31 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:108:31 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:108:38 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:108:38 -> StringConstant("4")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:110:19 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:110:19 -> IntConstant(2)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:112:31 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:112:31 -> IntConstant(3)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:112:38 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:112:38 -> StringConstant("3")
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:116:35 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:116:35 -> IntConstant(1)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:117:30 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:117:30 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:118:30 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:118:30 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:119:30 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:119:30 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:121:32 -> IntConstant(0)
+Evaluated: VariableGet @ org-dartlang-testcase:///index2.dart:121:32 -> IntConstant(0)
+Extra constant evaluation: evaluated: 604, effectively constant: 74
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart b/pkg/front_end/testcases/extensions/instance_access.dart
index 6a2598d..7336e0f 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart
+++ b/pkg/front_end/testcases/extensions/instance_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class1 {
int field;
@@ -23,7 +23,7 @@
print('Extension1.method on $this');
return field;
}
- int genericMethod<T extends num>(T t) {
+ num genericMethod<T extends num>(T t) {
print('Extension1.genericMethod<$T>($t) on $this');
return field + t;
}
@@ -44,7 +44,7 @@
print('Extension2.method on $this');
return field + 3;
}
- int genericMethod<T extends num>(T t) {
+ num genericMethod<T extends num>(T t) {
print('Extension2.genericMethod<$T>($t) on $this');
return field + t + 4;
}
@@ -60,22 +60,24 @@
}
main() {
- testExtension1();
- testExtension2();
+ Class1 c10 = new Class1(0);
+ Class1 c11 = new Class1(1);
+ testExtension1(c10, c11, c10, c11);
+ Class2 c20 = new Class2(0);
+ Class2 c21 = new Class2(1);
+ testExtension2(c20, c21, c20);
}
-testExtension1() {
- Class1 c0 = new Class1(0);
- Class1 c1 = new Class1(1);
+testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {
expect(0, c0.method());
expect(1, c1.method());
- expect(1, c1?.method());
+ expect(1, c1n?.method());
expect(42, c0.genericMethod(42));
expect(43, c0.genericMethod<num>(43));
expect(88, c1.genericMethod(87));
expect(89, c1.genericMethod<num>(88));
expect(0, c0.property);
- expect(0, c0?.property);
+ expect(0, c0n?.property);
expect(42, c0.property = 42);
expect(1, c1.property);
expect(87, c0.property = 87);
@@ -85,18 +87,16 @@
expect(67, c0.property = c1.property = c0.property = 67);
}
-testExtension2() {
- Class2 c0 = new Class2(0);
- Class2 c1 = new Class2(1);
+testExtension2(Class2 c0, Class2 c1, Class2? c0n) {
expect(3, c0.method());
- expect(3, c0?.method());
+ expect(3, c0n?.method());
expect(4, c1.method());
expect(46, c0.genericMethod(42));
expect(47, c0.genericMethod<num>(43));
expect(92, c1.genericMethod(87));
expect(93, c1.genericMethod<num>(88));
expect(5, c0.property);
- expect(5, c0?.property);
+ expect(5, c0n?.property);
expect(42, c0.property = 42);
expect(48, c0.property);
expect(6, c1.property);
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline.expect
index b1a3aa6..a739e58 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {
int field;
Class1(this.field);
@@ -13,19 +12,19 @@
extension Extension1 on Class1 {
int method() {}
- int genericMethod<T extends num>(T t) {}
+ num genericMethod<T extends num>(T t) {}
int get property {}
set property(int value) {}
}
extension Extension2 on Class2 {
int method() {}
- int genericMethod<T extends num>(T t) {}
+ num genericMethod<T extends num>(T t) {}
int get property {}
set property(int value) {}
}
main() {}
-testExtension1() {}
-testExtension2() {}
+testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {}
+testExtension2(Class2 c0, Class2 c1, Class2? c0n) {}
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline_modelled.expect
index 55a5670..796d226 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {
Class1(this.field);
String toString() => 'Class1($field)';
@@ -14,19 +13,19 @@
expect(expected, actual) {}
extension Extension1 on Class1 {
- int genericMethod<T extends num>(T t) {}
int get property {}
int method() {}
+ num genericMethod<T extends num>(T t) {}
set property(int value) {}
}
extension Extension2 on Class2 {
- int genericMethod<T extends num>(T t) {}
int get property {}
int method() {}
+ num genericMethod<T extends num>(T t) {}
set property(int value) {}
}
main() {}
-testExtension1() {}
-testExtension2() {}
+testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {}
+testExtension2(Class2 c0, Class2 c1, Class2? c0n) {}
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect
index 215028e..8ddf7d9 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.weak.expect
@@ -1,42 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
@@ -44,7 +26,7 @@
get property = self::Extension1|get#property;
set property = self::Extension1|set#property;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
@@ -52,96 +34,96 @@
get property = self::Extension2|get#property;
set property = self::Extension2|set#property;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int* {
+static method Extension1|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension1|get#property(lowered final self::Class1* #this) → core::int* {
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension1|get#property(lowered final self::Class1 #this) → core::int {
core::print("Extension1.property get on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|set#property(lowered final self::Class1* #this, core::int* value) → void {
+static method Extension1|set#property(lowered final self::Class1 #this, core::int value) → void {
#this.{self::Class1::field} = value;
core::print("Extension1.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
-static method Extension2|method(lowered final self::Class2* #this) → core::int* {
+static method Extension2|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(3){(core::num) → core::int};
}
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(4){(core::num) → core::num};
}
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
-static method Extension2|get#property(lowered final self::Class2* #this) → core::int* {
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
+static method Extension2|get#property(lowered final self::Class2 #this) → core::int {
core::print("Extension2.property get on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(5){(core::num) → core::int};
}
-static method Extension2|set#property(lowered final self::Class2* #this, core::int* value) → void {
+static method Extension2|set#property(lowered final self::Class2 #this, core::int value) → void {
core::print("Extension2.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
#this.{self::Class2::field} = value;
}
static method main() → dynamic {
- self::testExtension1();
- self::testExtension2();
+ self::Class1 c10 = new self::Class1::•(0);
+ self::Class1 c11 = new self::Class1::•(1);
+ self::testExtension1(c10, c11, c10, c11);
+ self::Class2 c20 = new self::Class2::•(0);
+ self::Class2 c21 = new self::Class2::•(1);
+ self::testExtension2(c20, c21, c20);
}
-static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic {
self::expect(0, self::Extension1|method(c0));
self::expect(1, self::Extension1|method(c1));
- self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::Extension1|method(#t1));
- self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
- self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
- self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
- self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
+ self::expect(1, let final self::Class1? #t1 = c1n in #t1 == null ?{core::int?} null : self::Extension1|method(#t1{self::Class1}));
+ self::expect(42, self::Extension1|genericMethod<core::int>(c0, 42));
+ self::expect(43, self::Extension1|genericMethod<core::num>(c0, 43));
+ self::expect(88, self::Extension1|genericMethod<core::int>(c1, 87));
+ self::expect(89, self::Extension1|genericMethod<core::num>(c1, 88));
self::expect(0, self::Extension1|get#property(c0));
- self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::Extension1|get#property(#t2));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
+ self::expect(0, let final self::Class1? #t2 = c0n in #t2 == null ?{core::int?} null : self::Extension1|get#property(#t2{self::Class1}));
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
self::expect(1, self::Extension1|get#property(c1));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
- self::expect(27, let final core::int* #t7 = let final core::int* #t8 = 27 in let final void #t9 = self::Extension1|set#property(c1, #t8) in #t8 in let final void #t10 = self::Extension1|set#property(c0, #t7) in #t7);
- self::expect(37, let final core::int* #t11 = let final core::int* #t12 = 37 in let final void #t13 = self::Extension1|set#property(c0, #t12) in #t12 in let final void #t14 = self::Extension1|set#property(c1, #t11) in #t11);
- self::expect(77, let final core::int* #t15 = let final core::int* #t16 = let final core::int* #t17 = 77 in let final void #t18 = self::Extension1|set#property(c1, #t17) in #t17 in let final void #t19 = self::Extension1|set#property(c0, #t16) in #t16 in let final void #t20 = self::Extension1|set#property(c1, #t15) in #t15);
- self::expect(67, let final core::int* #t21 = let final core::int* #t22 = let final core::int* #t23 = 67 in let final void #t24 = self::Extension1|set#property(c0, #t23) in #t23 in let final void #t25 = self::Extension1|set#property(c1, #t22) in #t22 in let final void #t26 = self::Extension1|set#property(c0, #t21) in #t21);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
+ self::expect(27, let final core::int #t7 = let final core::int #t8 = 27 in let final void #t9 = self::Extension1|set#property(c1, #t8) in #t8 in let final void #t10 = self::Extension1|set#property(c0, #t7) in #t7);
+ self::expect(37, let final core::int #t11 = let final core::int #t12 = 37 in let final void #t13 = self::Extension1|set#property(c0, #t12) in #t12 in let final void #t14 = self::Extension1|set#property(c1, #t11) in #t11);
+ self::expect(77, let final core::int #t15 = let final core::int #t16 = let final core::int #t17 = 77 in let final void #t18 = self::Extension1|set#property(c1, #t17) in #t17 in let final void #t19 = self::Extension1|set#property(c0, #t16) in #t16 in let final void #t20 = self::Extension1|set#property(c1, #t15) in #t15);
+ self::expect(67, let final core::int #t21 = let final core::int #t22 = let final core::int #t23 = 67 in let final void #t24 = self::Extension1|set#property(c0, #t23) in #t23 in let final void #t25 = self::Extension1|set#property(c1, #t22) in #t22 in let final void #t26 = self::Extension1|set#property(c0, #t21) in #t21);
}
-static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic {
self::expect(3, self::Extension2|method(c0));
- self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::Extension2|method(#t27));
+ self::expect(3, let final self::Class2? #t27 = c0n in #t27 == null ?{core::int?} null : self::Extension2|method(#t27{self::Class2}));
self::expect(4, self::Extension2|method(c1));
- self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
- self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
- self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
- self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
+ self::expect(46, self::Extension2|genericMethod<core::int>(c0, 42));
+ self::expect(47, self::Extension2|genericMethod<core::num>(c0, 43));
+ self::expect(92, self::Extension2|genericMethod<core::int>(c1, 87));
+ self::expect(93, self::Extension2|genericMethod<core::num>(c1, 88));
self::expect(5, self::Extension2|get#property(c0));
- self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::Extension2|get#property(#t28));
- self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
+ self::expect(5, let final self::Class2? #t28 = c0n in #t28 == null ?{core::int?} null : self::Extension2|get#property(#t28{self::Class2}));
+ self::expect(42, let final core::int #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
self::expect(48, self::Extension2|get#property(c0));
self::expect(6, self::Extension2|get#property(c1));
- self::expect(43, let final core::int* #t31 = 43 in let final void #t32 = self::Extension2|set#property(c1, #t31) in #t31);
+ self::expect(43, let final core::int #t31 = 43 in let final void #t32 = self::Extension2|set#property(c1, #t31) in #t31);
self::expect(49, self::Extension2|get#property(c1));
- self::expect(49, let final core::int* #t33 = self::Extension2|get#property(c1) in let final void #t34 = self::Extension2|set#property(c0, #t33) in #t33);
- self::expect(55, let final core::int* #t35 = self::Extension2|get#property(c0) in let final void #t36 = self::Extension2|set#property(c1, #t35) in #t35);
- self::expect(61, let final core::int* #t37 = let final core::int* #t38 = self::Extension2|get#property(c1) in let final void #t39 = self::Extension2|set#property(c0, #t38) in #t38 in let final void #t40 = self::Extension2|set#property(c1, #t37) in #t37);
- self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
+ self::expect(49, let final core::int #t33 = self::Extension2|get#property(c1) in let final void #t34 = self::Extension2|set#property(c0, #t33) in #t33);
+ self::expect(55, let final core::int #t35 = self::Extension2|get#property(c0) in let final void #t36 = self::Extension2|set#property(c1, #t35) in #t35);
+ self::expect(61, let final core::int #t37 = let final core::int #t38 = self::Extension2|get#property(c1) in let final void #t39 = self::Extension2|set#property(c0, #t38) in #t38 in let final void #t40 = self::Extension2|set#property(c1, #t37) in #t37);
+ self::expect(67, let final core::int #t41 = let final core::int #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/instance_access.dart.weak.modular.expect
index 215028e..8ddf7d9 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.weak.modular.expect
@@ -1,42 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
@@ -44,7 +26,7 @@
get property = self::Extension1|get#property;
set property = self::Extension1|set#property;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
@@ -52,96 +34,96 @@
get property = self::Extension2|get#property;
set property = self::Extension2|set#property;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int* {
+static method Extension1|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension1|get#property(lowered final self::Class1* #this) → core::int* {
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension1|get#property(lowered final self::Class1 #this) → core::int {
core::print("Extension1.property get on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|set#property(lowered final self::Class1* #this, core::int* value) → void {
+static method Extension1|set#property(lowered final self::Class1 #this, core::int value) → void {
#this.{self::Class1::field} = value;
core::print("Extension1.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
-static method Extension2|method(lowered final self::Class2* #this) → core::int* {
+static method Extension2|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(3){(core::num) → core::int};
}
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(4){(core::num) → core::num};
}
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
-static method Extension2|get#property(lowered final self::Class2* #this) → core::int* {
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
+static method Extension2|get#property(lowered final self::Class2 #this) → core::int {
core::print("Extension2.property get on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(5){(core::num) → core::int};
}
-static method Extension2|set#property(lowered final self::Class2* #this, core::int* value) → void {
+static method Extension2|set#property(lowered final self::Class2 #this, core::int value) → void {
core::print("Extension2.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
#this.{self::Class2::field} = value;
}
static method main() → dynamic {
- self::testExtension1();
- self::testExtension2();
+ self::Class1 c10 = new self::Class1::•(0);
+ self::Class1 c11 = new self::Class1::•(1);
+ self::testExtension1(c10, c11, c10, c11);
+ self::Class2 c20 = new self::Class2::•(0);
+ self::Class2 c21 = new self::Class2::•(1);
+ self::testExtension2(c20, c21, c20);
}
-static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic {
self::expect(0, self::Extension1|method(c0));
self::expect(1, self::Extension1|method(c1));
- self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::Extension1|method(#t1));
- self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
- self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
- self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
- self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
+ self::expect(1, let final self::Class1? #t1 = c1n in #t1 == null ?{core::int?} null : self::Extension1|method(#t1{self::Class1}));
+ self::expect(42, self::Extension1|genericMethod<core::int>(c0, 42));
+ self::expect(43, self::Extension1|genericMethod<core::num>(c0, 43));
+ self::expect(88, self::Extension1|genericMethod<core::int>(c1, 87));
+ self::expect(89, self::Extension1|genericMethod<core::num>(c1, 88));
self::expect(0, self::Extension1|get#property(c0));
- self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::Extension1|get#property(#t2));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
+ self::expect(0, let final self::Class1? #t2 = c0n in #t2 == null ?{core::int?} null : self::Extension1|get#property(#t2{self::Class1}));
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
self::expect(1, self::Extension1|get#property(c1));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
- self::expect(27, let final core::int* #t7 = let final core::int* #t8 = 27 in let final void #t9 = self::Extension1|set#property(c1, #t8) in #t8 in let final void #t10 = self::Extension1|set#property(c0, #t7) in #t7);
- self::expect(37, let final core::int* #t11 = let final core::int* #t12 = 37 in let final void #t13 = self::Extension1|set#property(c0, #t12) in #t12 in let final void #t14 = self::Extension1|set#property(c1, #t11) in #t11);
- self::expect(77, let final core::int* #t15 = let final core::int* #t16 = let final core::int* #t17 = 77 in let final void #t18 = self::Extension1|set#property(c1, #t17) in #t17 in let final void #t19 = self::Extension1|set#property(c0, #t16) in #t16 in let final void #t20 = self::Extension1|set#property(c1, #t15) in #t15);
- self::expect(67, let final core::int* #t21 = let final core::int* #t22 = let final core::int* #t23 = 67 in let final void #t24 = self::Extension1|set#property(c0, #t23) in #t23 in let final void #t25 = self::Extension1|set#property(c1, #t22) in #t22 in let final void #t26 = self::Extension1|set#property(c0, #t21) in #t21);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
+ self::expect(27, let final core::int #t7 = let final core::int #t8 = 27 in let final void #t9 = self::Extension1|set#property(c1, #t8) in #t8 in let final void #t10 = self::Extension1|set#property(c0, #t7) in #t7);
+ self::expect(37, let final core::int #t11 = let final core::int #t12 = 37 in let final void #t13 = self::Extension1|set#property(c0, #t12) in #t12 in let final void #t14 = self::Extension1|set#property(c1, #t11) in #t11);
+ self::expect(77, let final core::int #t15 = let final core::int #t16 = let final core::int #t17 = 77 in let final void #t18 = self::Extension1|set#property(c1, #t17) in #t17 in let final void #t19 = self::Extension1|set#property(c0, #t16) in #t16 in let final void #t20 = self::Extension1|set#property(c1, #t15) in #t15);
+ self::expect(67, let final core::int #t21 = let final core::int #t22 = let final core::int #t23 = 67 in let final void #t24 = self::Extension1|set#property(c0, #t23) in #t23 in let final void #t25 = self::Extension1|set#property(c1, #t22) in #t22 in let final void #t26 = self::Extension1|set#property(c0, #t21) in #t21);
}
-static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic {
self::expect(3, self::Extension2|method(c0));
- self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::Extension2|method(#t27));
+ self::expect(3, let final self::Class2? #t27 = c0n in #t27 == null ?{core::int?} null : self::Extension2|method(#t27{self::Class2}));
self::expect(4, self::Extension2|method(c1));
- self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
- self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
- self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
- self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
+ self::expect(46, self::Extension2|genericMethod<core::int>(c0, 42));
+ self::expect(47, self::Extension2|genericMethod<core::num>(c0, 43));
+ self::expect(92, self::Extension2|genericMethod<core::int>(c1, 87));
+ self::expect(93, self::Extension2|genericMethod<core::num>(c1, 88));
self::expect(5, self::Extension2|get#property(c0));
- self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::Extension2|get#property(#t28));
- self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
+ self::expect(5, let final self::Class2? #t28 = c0n in #t28 == null ?{core::int?} null : self::Extension2|get#property(#t28{self::Class2}));
+ self::expect(42, let final core::int #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
self::expect(48, self::Extension2|get#property(c0));
self::expect(6, self::Extension2|get#property(c1));
- self::expect(43, let final core::int* #t31 = 43 in let final void #t32 = self::Extension2|set#property(c1, #t31) in #t31);
+ self::expect(43, let final core::int #t31 = 43 in let final void #t32 = self::Extension2|set#property(c1, #t31) in #t31);
self::expect(49, self::Extension2|get#property(c1));
- self::expect(49, let final core::int* #t33 = self::Extension2|get#property(c1) in let final void #t34 = self::Extension2|set#property(c0, #t33) in #t33);
- self::expect(55, let final core::int* #t35 = self::Extension2|get#property(c0) in let final void #t36 = self::Extension2|set#property(c1, #t35) in #t35);
- self::expect(61, let final core::int* #t37 = let final core::int* #t38 = self::Extension2|get#property(c1) in let final void #t39 = self::Extension2|set#property(c0, #t38) in #t38 in let final void #t40 = self::Extension2|set#property(c1, #t37) in #t37);
- self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
+ self::expect(49, let final core::int #t33 = self::Extension2|get#property(c1) in let final void #t34 = self::Extension2|set#property(c0, #t33) in #t33);
+ self::expect(55, let final core::int #t35 = self::Extension2|get#property(c0) in let final void #t36 = self::Extension2|set#property(c1, #t35) in #t35);
+ self::expect(61, let final core::int #t37 = let final core::int #t38 = self::Extension2|get#property(c1) in let final void #t39 = self::Extension2|set#property(c0, #t38) in #t38 in let final void #t40 = self::Extension2|set#property(c1, #t37) in #t37);
+ self::expect(67, let final core::int #t41 = let final core::int #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/instance_access.dart.weak.outline.expect
index 4e0c07a..e75ed74 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.weak.outline.expect
@@ -1,40 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
@@ -42,7 +24,7 @@
get property = self::Extension1|get#property;
set property = self::Extension1|set#property;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
@@ -50,35 +32,35 @@
get property = self::Extension2|get#property;
set property = self::Extension2|set#property;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int*
+static method Extension1|method(lowered final self::Class1 #this) → core::int
;
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int*
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num
;
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension1|get#property(lowered final self::Class1* #this) → core::int*
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension1|get#property(lowered final self::Class1 #this) → core::int
;
-static method Extension1|set#property(lowered final self::Class1* #this, core::int* value) → void
+static method Extension1|set#property(lowered final self::Class1 #this, core::int value) → void
;
-static method Extension2|method(lowered final self::Class2* #this) → core::int*
+static method Extension2|method(lowered final self::Class2 #this) → core::int
;
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int*
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num
;
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
-static method Extension2|get#property(lowered final self::Class2* #this) → core::int*
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
+static method Extension2|get#property(lowered final self::Class2 #this) → core::int
;
-static method Extension2|set#property(lowered final self::Class2* #this, core::int* value) → void
+static method Extension2|set#property(lowered final self::Class2 #this, core::int value) → void
;
static method main() → dynamic
;
-static method testExtension1() → dynamic
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic
;
-static method testExtension2() → dynamic
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic
;
static method expect(dynamic expected, dynamic actual) → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect
index a0cad7e..91a04f1 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.weak.transformed.expect
@@ -1,42 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
@@ -44,7 +26,7 @@
get property = self::Extension1|get#property;
set property = self::Extension1|set#property;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
@@ -52,116 +34,116 @@
get property = self::Extension2|get#property;
set property = self::Extension2|set#property;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int* {
+static method Extension1|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension1|get#property(lowered final self::Class1* #this) → core::int* {
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension1|get#property(lowered final self::Class1 #this) → core::int {
core::print("Extension1.property get on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|set#property(lowered final self::Class1* #this, core::int* value) → void {
+static method Extension1|set#property(lowered final self::Class1 #this, core::int value) → void {
#this.{self::Class1::field} = value;
core::print("Extension1.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
-static method Extension2|method(lowered final self::Class2* #this) → core::int* {
+static method Extension2|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(3){(core::num) → core::int};
}
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(4){(core::num) → core::num};
}
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
-static method Extension2|get#property(lowered final self::Class2* #this) → core::int* {
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
+static method Extension2|get#property(lowered final self::Class2 #this) → core::int {
core::print("Extension2.property get on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(5){(core::num) → core::int};
}
-static method Extension2|set#property(lowered final self::Class2* #this, core::int* value) → void {
+static method Extension2|set#property(lowered final self::Class2 #this, core::int value) → void {
core::print("Extension2.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
#this.{self::Class2::field} = value;
}
static method main() → dynamic {
- self::testExtension1();
- self::testExtension2();
+ self::Class1 c10 = new self::Class1::•(0);
+ self::Class1 c11 = new self::Class1::•(1);
+ self::testExtension1(c10, c11, c10, c11);
+ self::Class2 c20 = new self::Class2::•(0);
+ self::Class2 c21 = new self::Class2::•(1);
+ self::testExtension2(c20, c21, c20);
}
-static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic {
self::expect(0, self::Extension1|method(c0));
self::expect(1, self::Extension1|method(c1));
- self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::Extension1|method(#t1));
- self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
- self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
- self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
- self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
+ self::expect(1, let final self::Class1? #t1 = c1n in #t1 == null ?{core::int?} null : self::Extension1|method(#t1{self::Class1}));
+ self::expect(42, self::Extension1|genericMethod<core::int>(c0, 42));
+ self::expect(43, self::Extension1|genericMethod<core::num>(c0, 43));
+ self::expect(88, self::Extension1|genericMethod<core::int>(c1, 87));
+ self::expect(89, self::Extension1|genericMethod<core::num>(c1, 88));
self::expect(0, self::Extension1|get#property(c0));
- self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::Extension1|get#property(#t2));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
+ self::expect(0, let final self::Class1? #t2 = c0n in #t2 == null ?{core::int?} null : self::Extension1|get#property(#t2{self::Class1}));
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
self::expect(1, self::Extension1|get#property(c1));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
- self::expect(27, let final core::int* #t7 = let final core::int* #t8 = 27 in let final void #t9 = self::Extension1|set#property(c1, #t8) in #t8 in let final void #t10 = self::Extension1|set#property(c0, #t7) in #t7);
- self::expect(37, let final core::int* #t11 = let final core::int* #t12 = 37 in let final void #t13 = self::Extension1|set#property(c0, #t12) in #t12 in let final void #t14 = self::Extension1|set#property(c1, #t11) in #t11);
- self::expect(77, let final core::int* #t15 = let final core::int* #t16 = let final core::int* #t17 = 77 in let final void #t18 = self::Extension1|set#property(c1, #t17) in #t17 in let final void #t19 = self::Extension1|set#property(c0, #t16) in #t16 in let final void #t20 = self::Extension1|set#property(c1, #t15) in #t15);
- self::expect(67, let final core::int* #t21 = let final core::int* #t22 = let final core::int* #t23 = 67 in let final void #t24 = self::Extension1|set#property(c0, #t23) in #t23 in let final void #t25 = self::Extension1|set#property(c1, #t22) in #t22 in let final void #t26 = self::Extension1|set#property(c0, #t21) in #t21);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
+ self::expect(27, let final core::int #t7 = let final core::int #t8 = 27 in let final void #t9 = self::Extension1|set#property(c1, #t8) in #t8 in let final void #t10 = self::Extension1|set#property(c0, #t7) in #t7);
+ self::expect(37, let final core::int #t11 = let final core::int #t12 = 37 in let final void #t13 = self::Extension1|set#property(c0, #t12) in #t12 in let final void #t14 = self::Extension1|set#property(c1, #t11) in #t11);
+ self::expect(77, let final core::int #t15 = let final core::int #t16 = let final core::int #t17 = 77 in let final void #t18 = self::Extension1|set#property(c1, #t17) in #t17 in let final void #t19 = self::Extension1|set#property(c0, #t16) in #t16 in let final void #t20 = self::Extension1|set#property(c1, #t15) in #t15);
+ self::expect(67, let final core::int #t21 = let final core::int #t22 = let final core::int #t23 = 67 in let final void #t24 = self::Extension1|set#property(c0, #t23) in #t23 in let final void #t25 = self::Extension1|set#property(c1, #t22) in #t22 in let final void #t26 = self::Extension1|set#property(c0, #t21) in #t21);
}
-static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic {
self::expect(3, self::Extension2|method(c0));
- self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::Extension2|method(#t27));
+ self::expect(3, let final self::Class2? #t27 = c0n in #t27 == null ?{core::int?} null : self::Extension2|method(#t27{self::Class2}));
self::expect(4, self::Extension2|method(c1));
- self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
- self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
- self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
- self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
+ self::expect(46, self::Extension2|genericMethod<core::int>(c0, 42));
+ self::expect(47, self::Extension2|genericMethod<core::num>(c0, 43));
+ self::expect(92, self::Extension2|genericMethod<core::int>(c1, 87));
+ self::expect(93, self::Extension2|genericMethod<core::num>(c1, 88));
self::expect(5, self::Extension2|get#property(c0));
- self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::Extension2|get#property(#t28));
- self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
+ self::expect(5, let final self::Class2? #t28 = c0n in #t28 == null ?{core::int?} null : self::Extension2|get#property(#t28{self::Class2}));
+ self::expect(42, let final core::int #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
self::expect(48, self::Extension2|get#property(c0));
self::expect(6, self::Extension2|get#property(c1));
- self::expect(43, let final core::int* #t31 = 43 in let final void #t32 = self::Extension2|set#property(c1, #t31) in #t31);
+ self::expect(43, let final core::int #t31 = 43 in let final void #t32 = self::Extension2|set#property(c1, #t31) in #t31);
self::expect(49, self::Extension2|get#property(c1));
- self::expect(49, let final core::int* #t33 = self::Extension2|get#property(c1) in let final void #t34 = self::Extension2|set#property(c0, #t33) in #t33);
- self::expect(55, let final core::int* #t35 = self::Extension2|get#property(c0) in let final void #t36 = self::Extension2|set#property(c1, #t35) in #t35);
- self::expect(61, let final core::int* #t37 = let final core::int* #t38 = self::Extension2|get#property(c1) in let final void #t39 = self::Extension2|set#property(c0, #t38) in #t38 in let final void #t40 = self::Extension2|set#property(c1, #t37) in #t37);
- self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
+ self::expect(49, let final core::int #t33 = self::Extension2|get#property(c1) in let final void #t34 = self::Extension2|set#property(c0, #t33) in #t33);
+ self::expect(55, let final core::int #t35 = self::Extension2|get#property(c0) in let final void #t36 = self::Extension2|set#property(c1, #t35) in #t35);
+ self::expect(61, let final core::int #t37 = let final core::int #t38 = self::Extension2|get#property(c1) in let final void #t39 = self::Extension2|set#property(c0, #t38) in #t38 in let final void #t40 = self::Extension2|set#property(c1, #t37) in #t37);
+ self::expect(67, let final core::int #t41 = let final core::int #t42 = self::Extension2|get#property(c0) in let final void #t43 = self::Extension2|set#property(c1, #t42) in #t42 in let final void #t44 = self::Extension2|set#property(c0, #t41) in #t41);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
Extra constant evaluation status:
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:79:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:79:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:81:28 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:81:28 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:82:42 -> IntConstant(27)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:82:42 -> IntConstant(27)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:83:42 -> IntConstant(37)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:83:42 -> IntConstant(37)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:84:56 -> IntConstant(77)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:84:56 -> IntConstant(77)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:85:56 -> IntConstant(67)
-Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:85:56 -> IntConstant(67)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:81:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:81:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:83:28 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:83:28 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:84:42 -> IntConstant(27)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:84:42 -> IntConstant(27)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:85:42 -> IntConstant(37)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:85:42 -> IntConstant(37)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:86:56 -> IntConstant(77)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:86:56 -> IntConstant(77)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:87:56 -> IntConstant(67)
+Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:87:56 -> IntConstant(67)
Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:100:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:100:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:103:28 -> IntConstant(43)
Evaluated: VariableGet @ org-dartlang-testcase:///instance_access.dart:103:28 -> IntConstant(43)
-Extra constant evaluation: evaluated: 325, effectively constant: 16
+Extra constant evaluation: evaluated: 330, effectively constant: 16
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart b/pkg/front_end/testcases/extensions/instance_access_of_static.dart
index 5c06df4..10db47f 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class1 {
}
@@ -10,8 +10,9 @@
print('Extension1.staticMethod()');
}
- static get staticProperty {
+ static int get staticProperty {
print('Extension1.staticProperty()');
+ return 0;
}
static set staticProperty(int value) {
print('Extension1.staticProperty($value)');
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline.expect
index de48df1..34e9b92 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline.expect
@@ -1,9 +1,8 @@
-// @dart = 2.9
class Class1 {}
extension Extension1 on Class1 {
static staticMethod() {}
- static get staticProperty {}
+ static int get staticProperty {}
static set staticProperty(int value) {}
static var staticField = 42;
}
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline_modelled.expect
index 61592f5..9f28a88 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.textual_outline_modelled.expect
@@ -1,8 +1,7 @@
-// @dart = 2.9
class Class1 {}
extension Extension1 on Class1 {
- static get staticProperty {}
+ static int get staticProperty {}
static set staticProperty(int value) {}
static staticMethod() {}
static var staticField = 42;
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect
index 1dadbb1..3dfab80 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.expect
@@ -1,38 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:26:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'staticMethod'.
// c.staticMethod();
// ^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticMethod'.
// c.staticMethod;
// ^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticProperty'.
// c.staticProperty;
// ^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticProperty'.
// c.staticProperty = 42;
// ^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticField'.
// c.staticField;
// ^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:32:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticField'.
// c.staticField = 42;
@@ -42,65 +42,56 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
static method staticMethod = self::Extension1|staticMethod;
static get staticProperty = get self::Extension1|staticProperty;
static field staticField = self::Extension1|staticField;
static set staticProperty = set self::Extension1|staticProperty;
}
-static field core::int* Extension1|staticField = 42;
+static field core::int Extension1|staticField = 42;
static method Extension1|staticMethod() → dynamic {
core::print("Extension1.staticMethod()");
}
-static get Extension1|staticProperty() → dynamic {
+static get Extension1|staticProperty() → core::int {
core::print("Extension1.staticProperty()");
+ return 0;
}
-static set Extension1|staticProperty(core::int* value) → void {
+static set Extension1|staticProperty(core::int value) → void {
core::print("Extension1.staticProperty(${value})");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
static method main() → dynamic {
- self::Class1* c = new self::Class1::•();
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:26:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
+ self::Class1 c = new self::Class1::•();
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'staticMethod'.
c.staticMethod();
^^^^^^^^^^^^" in c{<unresolved>}.staticMethod();
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticMethod'.
c.staticMethod;
^^^^^^^^^^^^" in c{<unresolved>}.staticMethod;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticProperty'.
c.staticProperty;
^^^^^^^^^^^^^^" in c{<unresolved>}.staticProperty;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticProperty'.
c.staticProperty = 42;
^^^^^^^^^^^^^^" in c{<unresolved>}.staticProperty = 42;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticField'.
c.staticField;
^^^^^^^^^^^" in c{<unresolved>}.staticField;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:32:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticField'.
c.staticField = 42;
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.modular.expect
index 1dadbb1..3dfab80 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.modular.expect
@@ -1,38 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:26:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'staticMethod'.
// c.staticMethod();
// ^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticMethod'.
// c.staticMethod;
// ^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticProperty'.
// c.staticProperty;
// ^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticProperty'.
// c.staticProperty = 42;
// ^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticField'.
// c.staticField;
// ^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:32:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticField'.
// c.staticField = 42;
@@ -42,65 +42,56 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
static method staticMethod = self::Extension1|staticMethod;
static get staticProperty = get self::Extension1|staticProperty;
static field staticField = self::Extension1|staticField;
static set staticProperty = set self::Extension1|staticProperty;
}
-static field core::int* Extension1|staticField = 42;
+static field core::int Extension1|staticField = 42;
static method Extension1|staticMethod() → dynamic {
core::print("Extension1.staticMethod()");
}
-static get Extension1|staticProperty() → dynamic {
+static get Extension1|staticProperty() → core::int {
core::print("Extension1.staticProperty()");
+ return 0;
}
-static set Extension1|staticProperty(core::int* value) → void {
+static set Extension1|staticProperty(core::int value) → void {
core::print("Extension1.staticProperty(${value})");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
static method main() → dynamic {
- self::Class1* c = new self::Class1::•();
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:26:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
+ self::Class1 c = new self::Class1::•();
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'staticMethod'.
c.staticMethod();
^^^^^^^^^^^^" in c{<unresolved>}.staticMethod();
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticMethod'.
c.staticMethod;
^^^^^^^^^^^^" in c{<unresolved>}.staticMethod;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticProperty'.
c.staticProperty;
^^^^^^^^^^^^^^" in c{<unresolved>}.staticProperty;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticProperty'.
c.staticProperty = 42;
^^^^^^^^^^^^^^" in c{<unresolved>}.staticProperty = 42;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticField'.
c.staticField;
^^^^^^^^^^^" in c{<unresolved>}.staticField;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:32:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticField'.
c.staticField = 42;
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.outline.expect
index e33cdbd..e3ee7d7 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.outline.expect
@@ -1,33 +1,23 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
static method staticMethod = self::Extension1|staticMethod;
static get staticProperty = get self::Extension1|staticProperty;
static field staticField = self::Extension1|staticField;
static set staticProperty = set self::Extension1|staticProperty;
}
-static field core::int* Extension1|staticField;
+static field core::int Extension1|staticField;
static method Extension1|staticMethod() → dynamic
;
-static get Extension1|staticProperty() → dynamic
+static get Extension1|staticProperty() → core::int
;
-static set Extension1|staticProperty(core::int* value) → void
+static set Extension1|staticProperty(core::int value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect
index 1dadbb1..3dfab80 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.weak.transformed.expect
@@ -1,38 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:26:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'staticMethod'.
// c.staticMethod();
// ^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticMethod'.
// c.staticMethod;
// ^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticProperty'.
// c.staticProperty;
// ^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticProperty'.
// c.staticProperty = 42;
// ^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticField'.
// c.staticField;
// ^^^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
+// pkg/front_end/testcases/extensions/instance_access_of_static.dart:32:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
// - 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticField'.
// c.staticField = 42;
@@ -42,65 +42,56 @@
import "dart:core" as core;
class Class1 extends core::Object {
- synthetic constructor •() → self::Class1*
+ synthetic constructor •() → self::Class1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
static method staticMethod = self::Extension1|staticMethod;
static get staticProperty = get self::Extension1|staticProperty;
static field staticField = self::Extension1|staticField;
static set staticProperty = set self::Extension1|staticProperty;
}
-static field core::int* Extension1|staticField = 42;
+static field core::int Extension1|staticField = 42;
static method Extension1|staticMethod() → dynamic {
core::print("Extension1.staticMethod()");
}
-static get Extension1|staticProperty() → dynamic {
+static get Extension1|staticProperty() → core::int {
core::print("Extension1.staticProperty()");
+ return 0;
}
-static set Extension1|staticProperty(core::int* value) → void {
+static set Extension1|staticProperty(core::int value) → void {
core::print("Extension1.staticProperty(${value})");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
static method main() → dynamic {
- self::Class1* c = new self::Class1::•();
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:26:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
+ self::Class1 c = new self::Class1::•();
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The method 'staticMethod' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'staticMethod'.
c.staticMethod();
^^^^^^^^^^^^" in c{<unresolved>}.staticMethod();
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:27:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticMethod' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticMethod'.
c.staticMethod;
^^^^^^^^^^^^" in c{<unresolved>}.staticMethod;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:28:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The getter 'staticProperty' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticProperty'.
c.staticProperty;
^^^^^^^^^^^^^^" in c{<unresolved>}.staticProperty;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:29:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The setter 'staticProperty' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticProperty'.
c.staticProperty = 42;
^^^^^^^^^^^^^^" in c{<unresolved>}.staticProperty = 42;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:30:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The getter 'staticField' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'staticField'.
c.staticField;
^^^^^^^^^^^" in c{<unresolved>}.staticField;
- invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:31:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
+ invalid-expression "pkg/front_end/testcases/extensions/instance_access_of_static.dart:32:5: Error: The setter 'staticField' isn't defined for the class 'Class1'.
- 'Class1' is from 'pkg/front_end/testcases/extensions/instance_access_of_static.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticField'.
c.staticField = 42;
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart b/pkg/front_end/testcases/extensions/instance_members.dart
index 3792c5d..38b99d8 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart
+++ b/pkg/front_end/testcases/extensions/instance_members.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class A1 {}
extension A2 on A1 {
@@ -14,12 +14,12 @@
return this;
}
- A1 method3<T>([T o]) {
+ A1 method3<T>([T? o]) {
print(o);
return this;
}
- A1 method4<T>({T o}) {
+ A1 method4<T>({T? o}) {
print(o);
return this;
}
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline.expect
index 01b5f25..7049b62 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline.expect
@@ -1,11 +1,10 @@
-// @dart = 2.9
class A1 {}
extension A2 on A1 {
A1 method1() {}
A1 method2<T>(T o) {}
- A1 method3<T>([T o]) {}
- A1 method4<T>({T o}) {}
+ A1 method3<T>([T? o]) {}
+ A1 method4<T>({T? o}) {}
}
class B1<T> {}
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline_modelled.expect
index ecc7423..34e212d 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A1 {}
class B1<T> {}
@@ -6,8 +5,8 @@
extension A2 on A1 {
A1 method1() {}
A1 method2<T>(T o) {}
- A1 method3<T>([T o]) {}
- A1 method4<T>({T o}) {}
+ A1 method3<T>([T? o]) {}
+ A1 method4<T>({T? o}) {}
}
extension B2<T> on B1<T> {
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_members.dart.weak.expect
index d189b6d..732d3c6 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.weak.expect
@@ -1,38 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
@@ -42,46 +22,46 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1* {
+static method A2|method1(lowered final self::A1 #this) → self::A1 {
return #this;
}
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1* {
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method A2|method3<T extends core::Object* = dynamic>(lowered final self::A1* #this, [self::A2|method3::T* o = #C1]) → self::A1* {
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method A2|method3<T extends core::Object? = dynamic>(lowered final self::A1 #this, [self::A2|method3::T? o = #C1]) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method3(lowered final self::A1* #this) → <T extends core::Object* = dynamic>([T*]) →* self::A1*
- return <T extends core::Object* = dynamic>([T* o = #C1]) → self::A1* => self::A2|method3<T*>(#this, o);
-static method A2|method4<T extends core::Object* = dynamic>(lowered final self::A1* #this, {self::A2|method4::T* o = #C1}) → self::A1* {
+static method A2|get#method3(lowered final self::A1 #this) → <T extends core::Object? = dynamic>([T?]) → self::A1
+ return <T extends core::Object? = dynamic>([T? o = #C1]) → self::A1 => self::A2|method3<T%>(#this, o);
+static method A2|method4<T extends core::Object? = dynamic>(lowered final self::A1 #this, {self::A2|method4::T? o = #C1}) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method4(lowered final self::A1* #this) → <T extends core::Object* = dynamic>({o: T*}) →* self::A1*
- return <T extends core::Object* = dynamic>({T* o = #C1}) → self::A1* => self::A2|method4<T*>(#this, o: o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>* {
+static method A2|get#method4(lowered final self::A1 #this) → <T extends core::Object? = dynamic>({o: T?}) → self::A1
+ return <T extends core::Object? = dynamic>({T? o = #C1}) → self::A1 => self::A2|method4<T%>(#this, o: o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> {
return #this;
}
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>* {
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> {
core::print(o);
return #this;
}
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/instance_members.dart.weak.modular.expect
index d189b6d..732d3c6 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.weak.modular.expect
@@ -1,38 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
@@ -42,46 +22,46 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1* {
+static method A2|method1(lowered final self::A1 #this) → self::A1 {
return #this;
}
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1* {
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method A2|method3<T extends core::Object* = dynamic>(lowered final self::A1* #this, [self::A2|method3::T* o = #C1]) → self::A1* {
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method A2|method3<T extends core::Object? = dynamic>(lowered final self::A1 #this, [self::A2|method3::T? o = #C1]) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method3(lowered final self::A1* #this) → <T extends core::Object* = dynamic>([T*]) →* self::A1*
- return <T extends core::Object* = dynamic>([T* o = #C1]) → self::A1* => self::A2|method3<T*>(#this, o);
-static method A2|method4<T extends core::Object* = dynamic>(lowered final self::A1* #this, {self::A2|method4::T* o = #C1}) → self::A1* {
+static method A2|get#method3(lowered final self::A1 #this) → <T extends core::Object? = dynamic>([T?]) → self::A1
+ return <T extends core::Object? = dynamic>([T? o = #C1]) → self::A1 => self::A2|method3<T%>(#this, o);
+static method A2|method4<T extends core::Object? = dynamic>(lowered final self::A1 #this, {self::A2|method4::T? o = #C1}) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method4(lowered final self::A1* #this) → <T extends core::Object* = dynamic>({o: T*}) →* self::A1*
- return <T extends core::Object* = dynamic>({T* o = #C1}) → self::A1* => self::A2|method4<T*>(#this, o: o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>* {
+static method A2|get#method4(lowered final self::A1 #this) → <T extends core::Object? = dynamic>({o: T?}) → self::A1
+ return <T extends core::Object? = dynamic>({T? o = #C1}) → self::A1 => self::A2|method4<T%>(#this, o: o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> {
return #this;
}
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>* {
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> {
core::print(o);
return #this;
}
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/instance_members.dart.weak.outline.expect
index 63e9fce..a7decdd 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.weak.outline.expect
@@ -1,36 +1,16 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
@@ -40,35 +20,35 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1*
+static method A2|method1(lowered final self::A1 #this) → self::A1
;
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1*
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1
;
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method A2|method3<T extends core::Object* = dynamic>(lowered final self::A1* #this, [self::A2|method3::T* o]) → self::A1*
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method A2|method3<T extends core::Object? = dynamic>(lowered final self::A1 #this, [self::A2|method3::T? o]) → self::A1
;
-static method A2|get#method3(lowered final self::A1* #this) → <T extends core::Object* = dynamic>([T*]) →* self::A1*
- return <T extends core::Object* = dynamic>([T* o]) → self::A1* => self::A2|method3<T*>(#this, o);
-static method A2|method4<T extends core::Object* = dynamic>(lowered final self::A1* #this, {self::A2|method4::T* o}) → self::A1*
+static method A2|get#method3(lowered final self::A1 #this) → <T extends core::Object? = dynamic>([T?]) → self::A1
+ return <T extends core::Object? = dynamic>([T? o]) → self::A1 => self::A2|method3<T%>(#this, o);
+static method A2|method4<T extends core::Object? = dynamic>(lowered final self::A1 #this, {self::A2|method4::T? o}) → self::A1
;
-static method A2|get#method4(lowered final self::A1* #this) → <T extends core::Object* = dynamic>({o: T*}) →* self::A1*
- return <T extends core::Object* = dynamic>({T* o}) → self::A1* => self::A2|method4<T*>(#this, o: o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>*
+static method A2|get#method4(lowered final self::A1 #this) → <T extends core::Object? = dynamic>({o: T?}) → self::A1
+ return <T extends core::Object? = dynamic>({T? o}) → self::A1 => self::A2|method4<T%>(#this, o: o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%>
;
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>*
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%>
;
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_members.dart.weak.transformed.expect
index d189b6d..732d3c6 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.weak.transformed.expect
@@ -1,38 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
@@ -42,46 +22,46 @@
method method4 = self::A2|method4;
tearoff method4 = self::A2|get#method4;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1* {
+static method A2|method1(lowered final self::A1 #this) → self::A1 {
return #this;
}
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1* {
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method A2|method3<T extends core::Object* = dynamic>(lowered final self::A1* #this, [self::A2|method3::T* o = #C1]) → self::A1* {
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method A2|method3<T extends core::Object? = dynamic>(lowered final self::A1 #this, [self::A2|method3::T? o = #C1]) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method3(lowered final self::A1* #this) → <T extends core::Object* = dynamic>([T*]) →* self::A1*
- return <T extends core::Object* = dynamic>([T* o = #C1]) → self::A1* => self::A2|method3<T*>(#this, o);
-static method A2|method4<T extends core::Object* = dynamic>(lowered final self::A1* #this, {self::A2|method4::T* o = #C1}) → self::A1* {
+static method A2|get#method3(lowered final self::A1 #this) → <T extends core::Object? = dynamic>([T?]) → self::A1
+ return <T extends core::Object? = dynamic>([T? o = #C1]) → self::A1 => self::A2|method3<T%>(#this, o);
+static method A2|method4<T extends core::Object? = dynamic>(lowered final self::A1 #this, {self::A2|method4::T? o = #C1}) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method4(lowered final self::A1* #this) → <T extends core::Object* = dynamic>({o: T*}) →* self::A1*
- return <T extends core::Object* = dynamic>({T* o = #C1}) → self::A1* => self::A2|method4<T*>(#this, o: o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>* {
+static method A2|get#method4(lowered final self::A1 #this) → <T extends core::Object? = dynamic>({o: T?}) → self::A1
+ return <T extends core::Object? = dynamic>({T? o = #C1}) → self::A1 => self::A2|method4<T%>(#this, o: o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> {
return #this;
}
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>* {
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> {
core::print(o);
return #this;
}
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic {}
constants {
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart b/pkg/front_end/testcases/extensions/instance_tearoff.dart
index edff3f7..6175790 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class1 {
int field;
@@ -23,7 +23,7 @@
print('Extension1.method on $this');
return field;
}
- int genericMethod<T extends num>(T t) {
+ num genericMethod<T extends num>(T t) {
print('Extension1.genericMethod<$T>($t) on $this');
return field + t;
}
@@ -35,7 +35,7 @@
print('Extension2.method on $this');
return field + 2;
}
- int genericMethod<T extends num>(T t) {
+ num genericMethod<T extends num>(T t) {
print('Extension2.genericMethod<$T>($t) on $this');
return field + t + 3;
}
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline.expect
index 153e287..8e29444 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {
int field;
Class1(this.field);
@@ -13,12 +12,12 @@
extension Extension1 on Class1 {
int method() {}
- int genericMethod<T extends num>(T t) {}
+ num genericMethod<T extends num>(T t) {}
}
extension Extension2 on Class2 {
int method() {}
- int genericMethod<T extends num>(T t) {}
+ num genericMethod<T extends num>(T t) {}
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline_modelled.expect
index e782f44..e9ddd5c 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {
Class1(this.field);
String toString() => 'Class1($field)';
@@ -14,13 +13,13 @@
expect(expected, actual) {}
extension Extension1 on Class1 {
- int genericMethod<T extends num>(T t) {}
int method() {}
+ num genericMethod<T extends num>(T t) {}
}
extension Extension2 on Class2 {
- int genericMethod<T extends num>(T t) {}
int method() {}
+ num genericMethod<T extends num>(T t) {}
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect
index 1240994..17dee12 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.expect
@@ -1,119 +1,101 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
tearoff genericMethod = self::Extension1|get#genericMethod;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
tearoff genericMethod = self::Extension2|get#genericMethod;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int* {
+static method Extension1|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|method(lowered final self::Class2* #this) → core::int* {
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(2){(core::num) → core::int};
}
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(3){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(3){(core::num) → core::num};
}
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic {
self::testExtension1();
self::testExtension2();
}
static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
- () →* core::int* tearOff0 = self::Extension1|get#method(c0);
- self::expect(0, tearOff0(){() →* core::int*});
- c0 = new self::Class1::•(4.{core::int::unary-}(){() →* core::int*});
- self::expect(0, tearOff0(){() →* core::int*});
- () →* core::int* tearOff1 = self::Extension1|get#method(c1);
- self::expect(1, tearOff1(){() →* core::int*});
- c1 = new self::Class1::•(7.{core::int::unary-}(){() →* core::int*});
- self::expect(1, tearOff1(){() →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension1|get#genericMethod(c0);
- self::expect(38, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
- self::expect(38, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c1);
- self::expect(35, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
- self::expect(35, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+ self::Class1 c0 = new self::Class1::•(0);
+ self::Class1 c1 = new self::Class1::•(1);
+ () → core::int tearOff0 = self::Extension1|get#method(c0);
+ self::expect(0, tearOff0(){() → core::int});
+ c0 = new self::Class1::•(4.{core::int::unary-}(){() → core::int});
+ self::expect(0, tearOff0(){() → core::int});
+ () → core::int tearOff1 = self::Extension1|get#method(c1);
+ self::expect(1, tearOff1(){() → core::int});
+ c1 = new self::Class1::•(7.{core::int::unary-}(){() → core::int});
+ self::expect(1, tearOff1(){() → core::int});
+ <T extends core::num>(T) → core::num genericTearOff0 = self::Extension1|get#genericMethod(c0);
+ self::expect(38, genericTearOff0<core::int>(42){(core::int) → core::num});
+ self::expect(38, genericTearOff0<core::num>(42){(core::num) → core::num});
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension1|get#genericMethod(c1);
+ self::expect(35, genericTearOff1<core::int>(42){(core::int) → core::num});
+ self::expect(35, genericTearOff1<core::num>(42){(core::num) → core::num});
}
static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
- () →* core::int* tearOff0 = self::Extension2|get#method(c0);
- self::expect(2, tearOff0(){() →* core::int*});
- c0 = new self::Class2::•(4.{core::int::unary-}(){() →* core::int*});
- self::expect(2, tearOff0(){() →* core::int*});
- () →* core::int* tearOff1 = self::Extension2|get#method(c1);
- self::expect(3, tearOff1(){() →* core::int*});
- c1 = new self::Class2::•(7.{core::int::unary-}(){() →* core::int*});
- self::expect(3, tearOff1(){() →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension2|get#genericMethod(c0);
- self::expect(41, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
- self::expect(41, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension2|get#genericMethod(c1);
- self::expect(38, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
- self::expect(38, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+ self::Class2 c0 = new self::Class2::•(0);
+ self::Class2 c1 = new self::Class2::•(1);
+ () → core::int tearOff0 = self::Extension2|get#method(c0);
+ self::expect(2, tearOff0(){() → core::int});
+ c0 = new self::Class2::•(4.{core::int::unary-}(){() → core::int});
+ self::expect(2, tearOff0(){() → core::int});
+ () → core::int tearOff1 = self::Extension2|get#method(c1);
+ self::expect(3, tearOff1(){() → core::int});
+ c1 = new self::Class2::•(7.{core::int::unary-}(){() → core::int});
+ self::expect(3, tearOff1(){() → core::int});
+ <T extends core::num>(T) → core::num genericTearOff0 = self::Extension2|get#genericMethod(c0);
+ self::expect(41, genericTearOff0<core::int>(42){(core::int) → core::num});
+ self::expect(41, genericTearOff0<core::num>(42){(core::num) → core::num});
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension2|get#genericMethod(c1);
+ self::expect(38, genericTearOff1<core::int>(42){(core::int) → core::num});
+ self::expect(38, genericTearOff1<core::num>(42){(core::num) → core::num});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.modular.expect
index 1240994..17dee12 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.modular.expect
@@ -1,119 +1,101 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
tearoff genericMethod = self::Extension1|get#genericMethod;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
tearoff genericMethod = self::Extension2|get#genericMethod;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int* {
+static method Extension1|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|method(lowered final self::Class2* #this) → core::int* {
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(2){(core::num) → core::int};
}
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(3){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(3){(core::num) → core::num};
}
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic {
self::testExtension1();
self::testExtension2();
}
static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
- () →* core::int* tearOff0 = self::Extension1|get#method(c0);
- self::expect(0, tearOff0(){() →* core::int*});
- c0 = new self::Class1::•(4.{core::int::unary-}(){() →* core::int*});
- self::expect(0, tearOff0(){() →* core::int*});
- () →* core::int* tearOff1 = self::Extension1|get#method(c1);
- self::expect(1, tearOff1(){() →* core::int*});
- c1 = new self::Class1::•(7.{core::int::unary-}(){() →* core::int*});
- self::expect(1, tearOff1(){() →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension1|get#genericMethod(c0);
- self::expect(38, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
- self::expect(38, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c1);
- self::expect(35, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
- self::expect(35, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+ self::Class1 c0 = new self::Class1::•(0);
+ self::Class1 c1 = new self::Class1::•(1);
+ () → core::int tearOff0 = self::Extension1|get#method(c0);
+ self::expect(0, tearOff0(){() → core::int});
+ c0 = new self::Class1::•(4.{core::int::unary-}(){() → core::int});
+ self::expect(0, tearOff0(){() → core::int});
+ () → core::int tearOff1 = self::Extension1|get#method(c1);
+ self::expect(1, tearOff1(){() → core::int});
+ c1 = new self::Class1::•(7.{core::int::unary-}(){() → core::int});
+ self::expect(1, tearOff1(){() → core::int});
+ <T extends core::num>(T) → core::num genericTearOff0 = self::Extension1|get#genericMethod(c0);
+ self::expect(38, genericTearOff0<core::int>(42){(core::int) → core::num});
+ self::expect(38, genericTearOff0<core::num>(42){(core::num) → core::num});
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension1|get#genericMethod(c1);
+ self::expect(35, genericTearOff1<core::int>(42){(core::int) → core::num});
+ self::expect(35, genericTearOff1<core::num>(42){(core::num) → core::num});
}
static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
- () →* core::int* tearOff0 = self::Extension2|get#method(c0);
- self::expect(2, tearOff0(){() →* core::int*});
- c0 = new self::Class2::•(4.{core::int::unary-}(){() →* core::int*});
- self::expect(2, tearOff0(){() →* core::int*});
- () →* core::int* tearOff1 = self::Extension2|get#method(c1);
- self::expect(3, tearOff1(){() →* core::int*});
- c1 = new self::Class2::•(7.{core::int::unary-}(){() →* core::int*});
- self::expect(3, tearOff1(){() →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension2|get#genericMethod(c0);
- self::expect(41, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
- self::expect(41, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension2|get#genericMethod(c1);
- self::expect(38, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
- self::expect(38, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+ self::Class2 c0 = new self::Class2::•(0);
+ self::Class2 c1 = new self::Class2::•(1);
+ () → core::int tearOff0 = self::Extension2|get#method(c0);
+ self::expect(2, tearOff0(){() → core::int});
+ c0 = new self::Class2::•(4.{core::int::unary-}(){() → core::int});
+ self::expect(2, tearOff0(){() → core::int});
+ () → core::int tearOff1 = self::Extension2|get#method(c1);
+ self::expect(3, tearOff1(){() → core::int});
+ c1 = new self::Class2::•(7.{core::int::unary-}(){() → core::int});
+ self::expect(3, tearOff1(){() → core::int});
+ <T extends core::num>(T) → core::num genericTearOff0 = self::Extension2|get#genericMethod(c0);
+ self::expect(41, genericTearOff0<core::int>(42){(core::int) → core::num});
+ self::expect(41, genericTearOff0<core::num>(42){(core::num) → core::num});
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension2|get#genericMethod(c1);
+ self::expect(38, genericTearOff1<core::int>(42){(core::int) → core::num});
+ self::expect(38, genericTearOff1<core::num>(42){(core::num) → core::num});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.outline.expect
index 8d3c1e7..dc03eea 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.outline.expect
@@ -1,67 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
tearoff genericMethod = self::Extension1|get#genericMethod;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
tearoff genericMethod = self::Extension2|get#genericMethod;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int*
+static method Extension1|method(lowered final self::Class1 #this) → core::int
;
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int*
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num
;
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|method(lowered final self::Class2* #this) → core::int*
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|method(lowered final self::Class2 #this) → core::int
;
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int*
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num
;
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic
;
static method testExtension1() → dynamic
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect
index c14a689..1bf4f76 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.weak.transformed.expect
@@ -1,119 +1,101 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension Extension1 on self::Class1* {
+extension Extension1 on self::Class1 {
method method = self::Extension1|method;
tearoff method = self::Extension1|get#method;
method genericMethod = self::Extension1|genericMethod;
tearoff genericMethod = self::Extension1|get#genericMethod;
}
-extension Extension2 on self::Class2* {
+extension Extension2 on self::Class2 {
method method = self::Extension2|method;
tearoff method = self::Extension2|get#method;
method genericMethod = self::Extension2|genericMethod;
tearoff genericMethod = self::Extension2|get#genericMethod;
}
-static method Extension1|method(lowered final self::Class1* #this) → core::int* {
+static method Extension1|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method Extension1|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::Extension1|method(#this);
-static method Extension1|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::Extension1|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension1|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::Extension1|method(#this);
+static method Extension1|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::Extension1|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::Extension1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method Extension1|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension1|genericMethod<T*>(#this, t);
-static method Extension2|method(lowered final self::Class2* #this) → core::int* {
+static method Extension1|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension1|genericMethod<T>(#this, t);
+static method Extension2|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(2){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(2){(core::num) → core::int};
}
-static method Extension2|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::Extension2|method(#this);
-static method Extension2|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::Extension2|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(3){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method Extension2|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::Extension2|method(#this);
+static method Extension2|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::Extension2|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::Extension2|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(3){(core::num) → core::num};
}
-static method Extension2|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::Extension2|genericMethod<T*>(#this, t);
+static method Extension2|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::Extension2|genericMethod<T>(#this, t);
static method main() → dynamic {
self::testExtension1();
self::testExtension2();
}
static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
- () →* core::int* tearOff0 = self::Extension1|get#method(c0);
- self::expect(0, tearOff0(){() →* core::int*});
- c0 = new self::Class1::•(4.{core::int::unary-}(){() →* core::int*});
- self::expect(0, tearOff0(){() →* core::int*});
- () →* core::int* tearOff1 = self::Extension1|get#method(c1);
- self::expect(1, tearOff1(){() →* core::int*});
- c1 = new self::Class1::•(7.{core::int::unary-}(){() →* core::int*});
- self::expect(1, tearOff1(){() →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension1|get#genericMethod(c0);
- self::expect(38, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
- self::expect(38, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension1|get#genericMethod(c1);
- self::expect(35, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
- self::expect(35, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+ self::Class1 c0 = new self::Class1::•(0);
+ self::Class1 c1 = new self::Class1::•(1);
+ () → core::int tearOff0 = self::Extension1|get#method(c0);
+ self::expect(0, tearOff0(){() → core::int});
+ c0 = new self::Class1::•(4.{core::int::unary-}(){() → core::int});
+ self::expect(0, tearOff0(){() → core::int});
+ () → core::int tearOff1 = self::Extension1|get#method(c1);
+ self::expect(1, tearOff1(){() → core::int});
+ c1 = new self::Class1::•(7.{core::int::unary-}(){() → core::int});
+ self::expect(1, tearOff1(){() → core::int});
+ <T extends core::num>(T) → core::num genericTearOff0 = self::Extension1|get#genericMethod(c0);
+ self::expect(38, genericTearOff0<core::int>(42){(core::int) → core::num});
+ self::expect(38, genericTearOff0<core::num>(42){(core::num) → core::num});
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension1|get#genericMethod(c1);
+ self::expect(35, genericTearOff1<core::int>(42){(core::int) → core::num});
+ self::expect(35, genericTearOff1<core::num>(42){(core::num) → core::num});
}
static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
- () →* core::int* tearOff0 = self::Extension2|get#method(c0);
- self::expect(2, tearOff0(){() →* core::int*});
- c0 = new self::Class2::•(4.{core::int::unary-}(){() →* core::int*});
- self::expect(2, tearOff0(){() →* core::int*});
- () →* core::int* tearOff1 = self::Extension2|get#method(c1);
- self::expect(3, tearOff1(){() →* core::int*});
- c1 = new self::Class2::•(7.{core::int::unary-}(){() →* core::int*});
- self::expect(3, tearOff1(){() →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff0 = self::Extension2|get#genericMethod(c0);
- self::expect(41, genericTearOff0<core::int*>(42){(core::int*) →* core::int*});
- self::expect(41, genericTearOff0<core::num*>(42){(core::num*) →* core::int*});
- <T extends core::num*>(T*) →* core::int* genericTearOff1 = self::Extension2|get#genericMethod(c1);
- self::expect(38, genericTearOff1<core::int*>(42){(core::int*) →* core::int*});
- self::expect(38, genericTearOff1<core::num*>(42){(core::num*) →* core::int*});
+ self::Class2 c0 = new self::Class2::•(0);
+ self::Class2 c1 = new self::Class2::•(1);
+ () → core::int tearOff0 = self::Extension2|get#method(c0);
+ self::expect(2, tearOff0(){() → core::int});
+ c0 = new self::Class2::•(4.{core::int::unary-}(){() → core::int});
+ self::expect(2, tearOff0(){() → core::int});
+ () → core::int tearOff1 = self::Extension2|get#method(c1);
+ self::expect(3, tearOff1(){() → core::int});
+ c1 = new self::Class2::•(7.{core::int::unary-}(){() → core::int});
+ self::expect(3, tearOff1(){() → core::int});
+ <T extends core::num>(T) → core::num genericTearOff0 = self::Extension2|get#genericMethod(c0);
+ self::expect(41, genericTearOff0<core::int>(42){(core::int) → core::num});
+ self::expect(41, genericTearOff0<core::num>(42){(core::num) → core::num});
+ <T extends core::num>(T) → core::num genericTearOff1 = self::Extension2|get#genericMethod(c1);
+ self::expect(38, genericTearOff1<core::int>(42){(core::int) → core::num});
+ self::expect(38, genericTearOff1<core::num>(42){(core::num) → core::num});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -124,4 +106,4 @@
Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:58:19 -> IntConstant(-7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:73:19 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///instance_tearoff.dart:77:19 -> IntConstant(-7)
-Extra constant evaluation: evaluated: 144, effectively constant: 4
+Extra constant evaluation: evaluated: 142, effectively constant: 4
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart b/pkg/front_end/testcases/extensions/internal_resolution.dart
index a6a36e9..796d36f 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart
@@ -1,19 +1,19 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {
- int field;
+ int? field;
}
extension on Class {
- int get property1 => property2;
- void set property1(int value) => field = value;
+ int? get property1 => property2;
+ void set property1(int? value) => field = value;
}
extension on Class {
- int get property2 => field;
- void set property2(int value) => property1 = value;
+ int? get property2 => field;
+ void set property2(int? value) => property1 = value;
}
main() {
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline.expect
index f8c5fde..b9bcd84 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline.expect
@@ -1,16 +1,15 @@
-// @dart = 2.9
class Class {
- int field;
+ int? field;
}
extension on Class {
- int get property1 => property2;
- void set property1(int value) => field = value;
+ int? get property1 => property2;
+ void set property1(int? value) => field = value;
}
extension on Class {
- int get property2 => field;
- void set property2(int value) => property1 = value;
+ int? get property2 => field;
+ void set property2(int? value) => property1 = value;
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline_modelled.expect
index 44ba9bd..8ebb600 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.textual_outline_modelled.expect
@@ -1,18 +1,17 @@
-// @dart = 2.9
class Class {
- int field;
+ int? field;
}
expect(expected, actual) {}
extension on Class {
- int get property1 => property2;
- void set property1(int value) => field = value;
+ int? get property1 => property2;
+ void set property1(int? value) => field = value;
}
extension on Class {
- int get property2 => field;
- void set property2(int value) => property1 = value;
+ int? get property2 => field;
+ void set property2(int? value) => property1 = value;
}
main() {}
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect
index 80f8e09..7a5b11f 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.expect
@@ -1,50 +1,40 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field = null;
- synthetic constructor •() → self::Class*
+ field core::int? field = null;
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::Class* {
+extension _extension#0 on self::Class {
get property1 = self::_extension#0|get#property1;
set property1 = self::_extension#0|set#property1;
}
-extension _extension#1 on self::Class* {
+extension _extension#1 on self::Class {
get property2 = self::_extension#1|get#property2;
set property2 = self::_extension#1|set#property2;
}
-static method _extension#0|get#property1(lowered final self::Class* #this) → core::int*
+static method _extension#0|get#property1(lowered final self::Class #this) → core::int?
return self::_extension#1|get#property2(#this);
-static method _extension#0|set#property1(lowered final self::Class* #this, core::int* value) → void
+static method _extension#0|set#property1(lowered final self::Class #this, core::int? value) → void
return #this.{self::Class::field} = value;
-static method _extension#1|get#property2(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field}{core::int*};
-static method _extension#1|set#property2(lowered final self::Class* #this, core::int* value) → void
- return let final core::int* #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
+static method _extension#1|get#property2(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method _extension#1|set#property2(lowered final self::Class #this, core::int? value) → void
+ return let final core::int? #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(null, self::_extension#0|get#property1(c));
self::expect(null, self::_extension#1|get#property2(c));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property1(c, #t3) in #t3);
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::_extension#0|set#property1(c, #t3) in #t3);
self::expect(42, self::_extension#1|get#property2(c));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#1|set#property2(c, #t5) in #t5);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::_extension#1|set#property2(c, #t5) in #t5);
self::expect(87, self::_extension#0|get#property1(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.modular.expect
index 80f8e09..7a5b11f 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.modular.expect
@@ -1,50 +1,40 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field = null;
- synthetic constructor •() → self::Class*
+ field core::int? field = null;
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::Class* {
+extension _extension#0 on self::Class {
get property1 = self::_extension#0|get#property1;
set property1 = self::_extension#0|set#property1;
}
-extension _extension#1 on self::Class* {
+extension _extension#1 on self::Class {
get property2 = self::_extension#1|get#property2;
set property2 = self::_extension#1|set#property2;
}
-static method _extension#0|get#property1(lowered final self::Class* #this) → core::int*
+static method _extension#0|get#property1(lowered final self::Class #this) → core::int?
return self::_extension#1|get#property2(#this);
-static method _extension#0|set#property1(lowered final self::Class* #this, core::int* value) → void
+static method _extension#0|set#property1(lowered final self::Class #this, core::int? value) → void
return #this.{self::Class::field} = value;
-static method _extension#1|get#property2(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field}{core::int*};
-static method _extension#1|set#property2(lowered final self::Class* #this, core::int* value) → void
- return let final core::int* #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
+static method _extension#1|get#property2(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method _extension#1|set#property2(lowered final self::Class #this, core::int? value) → void
+ return let final core::int? #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(null, self::_extension#0|get#property1(c));
self::expect(null, self::_extension#1|get#property2(c));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property1(c, #t3) in #t3);
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::_extension#0|set#property1(c, #t3) in #t3);
self::expect(42, self::_extension#1|get#property2(c));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#1|set#property2(c, #t5) in #t5);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::_extension#1|set#property2(c, #t5) in #t5);
self::expect(87, self::_extension#0|get#property1(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.outline.expect
index 24d15c6..0148103 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.outline.expect
@@ -1,37 +1,27 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field;
- synthetic constructor •() → self::Class*
+ field core::int? field;
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::Class* {
+extension _extension#0 on self::Class {
get property1 = self::_extension#0|get#property1;
set property1 = self::_extension#0|set#property1;
}
-extension _extension#1 on self::Class* {
+extension _extension#1 on self::Class {
get property2 = self::_extension#1|get#property2;
set property2 = self::_extension#1|set#property2;
}
-static method _extension#0|get#property1(lowered final self::Class* #this) → core::int*
+static method _extension#0|get#property1(lowered final self::Class #this) → core::int?
;
-static method _extension#0|set#property1(lowered final self::Class* #this, core::int* value) → void
+static method _extension#0|set#property1(lowered final self::Class #this, core::int? value) → void
;
-static method _extension#1|get#property2(lowered final self::Class* #this) → core::int*
+static method _extension#1|get#property2(lowered final self::Class #this) → core::int?
;
-static method _extension#1|set#property2(lowered final self::Class* #this, core::int* value) → void
+static method _extension#1|set#property2(lowered final self::Class #this, core::int? value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect
index faaf375..06ac9e2 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.weak.transformed.expect
@@ -1,50 +1,40 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- field core::int* field = null;
- synthetic constructor •() → self::Class*
+ field core::int? field = null;
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::Class* {
+extension _extension#0 on self::Class {
get property1 = self::_extension#0|get#property1;
set property1 = self::_extension#0|set#property1;
}
-extension _extension#1 on self::Class* {
+extension _extension#1 on self::Class {
get property2 = self::_extension#1|get#property2;
set property2 = self::_extension#1|set#property2;
}
-static method _extension#0|get#property1(lowered final self::Class* #this) → core::int*
+static method _extension#0|get#property1(lowered final self::Class #this) → core::int?
return self::_extension#1|get#property2(#this);
-static method _extension#0|set#property1(lowered final self::Class* #this, core::int* value) → void
+static method _extension#0|set#property1(lowered final self::Class #this, core::int? value) → void
return #this.{self::Class::field} = value;
-static method _extension#1|get#property2(lowered final self::Class* #this) → core::int*
- return #this.{self::Class::field}{core::int*};
-static method _extension#1|set#property2(lowered final self::Class* #this, core::int* value) → void
- return let final core::int* #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
+static method _extension#1|get#property2(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method _extension#1|set#property2(lowered final self::Class #this, core::int? value) → void
+ return let final core::int? #t1 = value in let final void #t2 = self::_extension#0|set#property1(#this, #t1) in #t1;
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::expect(null, self::_extension#0|get#property1(c));
self::expect(null, self::_extension#1|get#property2(c));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property1(c, #t3) in #t3);
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::_extension#0|set#property1(c, #t3) in #t3);
self::expect(42, self::_extension#1|get#property2(c));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#1|set#property2(c, #t5) in #t5);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::_extension#1|set#property2(c, #t5) in #t5);
self::expect(87, self::_extension#0|get#property1(c));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart
index 8161b72..5210e3a 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline.expect
index fc12d80..fda67e5 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline_modelled.expect
index b8ad069..cccd074 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
class GenericClass<T> {}
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
index 0dd6942..5ddfc92 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -125,52 +125,32 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method method = self::GenericExtension|method;
tearoff method = self::GenericExtension|get#method;
}
-static method Extension|method(lowered final self::Class* #this, dynamic a) → dynamic {}
-static method Extension|get#method(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|method(lowered final self::Class #this, dynamic a) → dynamic {}
+static method Extension|get#method(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic a) → dynamic => self::Extension|method(#this, a);
-static method GenericExtension|method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T*>* #this) → dynamic {}
-static method GenericExtension|get#method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T*>(#this);
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this) → dynamic {}
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this);
static method main() → dynamic {
- core::String* s = "";
- self::Class* c1 = new self::Class::•();
+ core::String s = "";
+ self::Class c1 = new self::Class::•();
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:23:3: Error: Explicit extension application requires exactly 1 positional argument.
Extension().method(null);
^^^^^^^^^"{dynamic}.method(null);
@@ -189,7 +169,7 @@
self::Extension|method(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:28:13: Error: The argument type 'String' can't be assigned to the parameter type 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
Extension(s).method(null);
- ^" in s as{TypeError} self::Class*, null);
+ ^" in s as{TypeError,ForNonNullableByDefault} self::Class, null);
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
Extension(c1).foo;
^^^";
@@ -215,7 +195,7 @@
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:39:17: Error: Expected 0 type arguments.
Extension(c1).method<int>(null);
^";
- self::GenericClass<core::int*>* c2 = new self::GenericClass::•<core::int*>();
+ self::GenericClass<core::int> c2 = new self::GenericClass::•<core::int>();
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:42:3: Error: Explicit extension application requires exactly 1 positional argument.
GenericExtension().method();
^^^^^^^^^^^^^^^^"{dynamic}.method();
@@ -246,9 +226,9 @@
self::GenericExtension|method<dynamic>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:51:20: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<dynamic>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
GenericExtension(s).method();
- ^" in s as{TypeError} self::GenericClass<dynamic>*);
- self::GenericExtension|method<core::int*>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:52:25: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<int>'.
+ ^" in s as{TypeError,ForNonNullableByDefault} self::GenericClass<dynamic>);
+ self::GenericExtension|method<core::int>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:52:25: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<int>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
GenericExtension<int>(s).method();
- ^" in s as{TypeError} self::GenericClass<core::int*>*);
+ ^" in s as{TypeError,ForNonNullableByDefault} self::GenericClass<core::int>);
}
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.modular.expect
index 0dd6942..5ddfc92 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -125,52 +125,32 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method method = self::GenericExtension|method;
tearoff method = self::GenericExtension|get#method;
}
-static method Extension|method(lowered final self::Class* #this, dynamic a) → dynamic {}
-static method Extension|get#method(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|method(lowered final self::Class #this, dynamic a) → dynamic {}
+static method Extension|get#method(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic a) → dynamic => self::Extension|method(#this, a);
-static method GenericExtension|method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T*>* #this) → dynamic {}
-static method GenericExtension|get#method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T*>(#this);
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this) → dynamic {}
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this);
static method main() → dynamic {
- core::String* s = "";
- self::Class* c1 = new self::Class::•();
+ core::String s = "";
+ self::Class c1 = new self::Class::•();
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:23:3: Error: Explicit extension application requires exactly 1 positional argument.
Extension().method(null);
^^^^^^^^^"{dynamic}.method(null);
@@ -189,7 +169,7 @@
self::Extension|method(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:28:13: Error: The argument type 'String' can't be assigned to the parameter type 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
Extension(s).method(null);
- ^" in s as{TypeError} self::Class*, null);
+ ^" in s as{TypeError,ForNonNullableByDefault} self::Class, null);
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
Extension(c1).foo;
^^^";
@@ -215,7 +195,7 @@
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:39:17: Error: Expected 0 type arguments.
Extension(c1).method<int>(null);
^";
- self::GenericClass<core::int*>* c2 = new self::GenericClass::•<core::int*>();
+ self::GenericClass<core::int> c2 = new self::GenericClass::•<core::int>();
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:42:3: Error: Explicit extension application requires exactly 1 positional argument.
GenericExtension().method();
^^^^^^^^^^^^^^^^"{dynamic}.method();
@@ -246,9 +226,9 @@
self::GenericExtension|method<dynamic>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:51:20: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<dynamic>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
GenericExtension(s).method();
- ^" in s as{TypeError} self::GenericClass<dynamic>*);
- self::GenericExtension|method<core::int*>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:52:25: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<int>'.
+ ^" in s as{TypeError,ForNonNullableByDefault} self::GenericClass<dynamic>);
+ self::GenericExtension|method<core::int>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:52:25: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<int>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
GenericExtension<int>(s).method();
- ^" in s as{TypeError} self::GenericClass<core::int*>*);
+ ^" in s as{TypeError,ForNonNullableByDefault} self::GenericClass<core::int>);
}
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.outline.expect
index 064d285..94c79bb 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.outline.expect
@@ -1,50 +1,30 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method method = self::GenericExtension|method;
tearoff method = self::GenericExtension|get#method;
}
-static method Extension|method(lowered final self::Class* #this, dynamic a) → dynamic
+static method Extension|method(lowered final self::Class #this, dynamic a) → dynamic
;
-static method Extension|get#method(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|get#method(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic a) → dynamic => self::Extension|method(#this, a);
-static method GenericExtension|method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T*>* #this) → dynamic
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this) → dynamic
;
-static method GenericExtension|get#method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T*>(#this);
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
index 0dd6942..5ddfc92 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -125,52 +125,32 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class GenericClass<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
+class GenericClass<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
}
-extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
+extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method method = self::GenericExtension|method;
tearoff method = self::GenericExtension|get#method;
}
-static method Extension|method(lowered final self::Class* #this, dynamic a) → dynamic {}
-static method Extension|get#method(lowered final self::Class* #this) → (dynamic) →* dynamic
+static method Extension|method(lowered final self::Class #this, dynamic a) → dynamic {}
+static method Extension|get#method(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic a) → dynamic => self::Extension|method(#this, a);
-static method GenericExtension|method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T*>* #this) → dynamic {}
-static method GenericExtension|get#method<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T*>(#this);
+static method GenericExtension|method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|method::T%> #this) → dynamic {}
+static method GenericExtension|get#method<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::GenericExtension|method<self::GenericExtension|get#method::T%>(#this);
static method main() → dynamic {
- core::String* s = "";
- self::Class* c1 = new self::Class::•();
+ core::String s = "";
+ self::Class c1 = new self::Class::•();
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:23:3: Error: Explicit extension application requires exactly 1 positional argument.
Extension().method(null);
^^^^^^^^^"{dynamic}.method(null);
@@ -189,7 +169,7 @@
self::Extension|method(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:28:13: Error: The argument type 'String' can't be assigned to the parameter type 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
Extension(s).method(null);
- ^" in s as{TypeError} self::Class*, null);
+ ^" in s as{TypeError,ForNonNullableByDefault} self::Class, null);
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:29:17: Error: Member not found: 'foo'.
Extension(c1).foo;
^^^";
@@ -215,7 +195,7 @@
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:39:17: Error: Expected 0 type arguments.
Extension(c1).method<int>(null);
^";
- self::GenericClass<core::int*>* c2 = new self::GenericClass::•<core::int*>();
+ self::GenericClass<core::int> c2 = new self::GenericClass::•<core::int>();
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:42:3: Error: Explicit extension application requires exactly 1 positional argument.
GenericExtension().method();
^^^^^^^^^^^^^^^^"{dynamic}.method();
@@ -246,9 +226,9 @@
self::GenericExtension|method<dynamic>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:51:20: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<dynamic>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
GenericExtension(s).method();
- ^" in s as{TypeError} self::GenericClass<dynamic>*);
- self::GenericExtension|method<core::int*>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:52:25: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<int>'.
+ ^" in s as{TypeError,ForNonNullableByDefault} self::GenericClass<dynamic>);
+ self::GenericExtension|method<core::int>(invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_access.dart:52:25: Error: The argument type 'String' can't be assigned to the parameter type 'GenericClass<int>'.
- 'GenericClass' is from 'pkg/front_end/testcases/extensions/invalid_explicit_access.dart'.
GenericExtension<int>(s).method();
- ^" in s as{TypeError} self::GenericClass<core::int*>*);
+ ^" in s as{TypeError,ForNonNullableByDefault} self::GenericClass<core::int>);
}
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart
index acadced..3fdcc7d 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension Extension on String {
static method() {}
static get getter => null;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline.expect
index 69490b0..2654863 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension Extension on String {
static method() {}
static get getter => null;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline_modelled.expect
index ab88088..0abe64c 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
errors() {}
extension Extension on String {
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect
index 94d05b9..023cc74 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -49,7 +49,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
static method method = self::Extension|method;
static get getter = get self::Extension|getter;
static get property = get self::Extension|property;
@@ -67,7 +67,7 @@
static set Extension|property(dynamic _) → void {}
static method main() → dynamic {}
static method errors() → dynamic {
- core::String* s = "";
+ core::String s = "";
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:18:16: Error: Method not found: 'method'.
Extension(s).method();
^^^^^^";
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.modular.expect
index 94d05b9..023cc74 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -49,7 +49,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
static method method = self::Extension|method;
static get getter = get self::Extension|getter;
static get property = get self::Extension|property;
@@ -67,7 +67,7 @@
static set Extension|property(dynamic _) → void {}
static method main() → dynamic {}
static method errors() → dynamic {
- core::String* s = "";
+ core::String s = "";
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:18:16: Error: Method not found: 'method'.
Extension(s).method();
^^^^^^";
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.outline.expect
index 76899b5..b8edf40 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
static method method = self::Extension|method;
static get getter = get self::Extension|getter;
static get property = get self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect
index 94d05b9..023cc74 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -49,7 +49,7 @@
import self as self;
import "dart:core" as core;
-extension Extension on core::String* {
+extension Extension on core::String {
static method method = self::Extension|method;
static get getter = get self::Extension|getter;
static get property = get self::Extension|property;
@@ -67,7 +67,7 @@
static set Extension|property(dynamic _) → void {}
static method main() → dynamic {}
static method errors() → dynamic {
- core::String* s = "";
+ core::String s = "";
invalid-expression "pkg/front_end/testcases/extensions/invalid_explicit_static_access.dart:18:16: Error: Method not found: 'method'.
Extension(s).method();
^^^^^^";
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart b/pkg/front_end/testcases/extensions/issue38600.dart
index 8ad593c..d2014e2 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart
+++ b/pkg/front_end/testcases/extensions/issue38600.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class<T> {}
extension try<T> on Class<T> {}
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect
index edb7740..43bf0c2 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T> {}
extension on{}
try<T> (){}
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38600.dart.weak.expect
index 373bda2..0550755 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -48,22 +48,12 @@
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension _extension#0 on invalid-type {
}
-static method try<T extends core::Object* = dynamic>() → dynamic {}
+static method try<T extends core::Object? = dynamic>() → dynamic {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38600.dart.weak.modular.expect
index 373bda2..0550755 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -48,22 +48,12 @@
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension _extension#0 on invalid-type {
}
-static method try<T extends core::Object* = dynamic>() → dynamic {}
+static method try<T extends core::Object? = dynamic>() → dynamic {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38600.dart.weak.outline.expect
index ed495ec..07a25e2 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -48,23 +48,13 @@
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension _extension#0 on invalid-type {
}
-static method try<T extends core::Object* = dynamic>() → dynamic
+static method try<T extends core::Object? = dynamic>() → dynamic
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38600.dart.weak.transformed.expect
index 373bda2..0550755 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -48,22 +48,12 @@
import self as self;
import "dart:core" as core;
-class Class<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension _extension#0 on invalid-type {
}
-static method try<T extends core::Object* = dynamic>() → dynamic {}
+static method try<T extends core::Object? = dynamic>() → dynamic {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue38712.dart b/pkg/front_end/testcases/extensions/issue38712.dart
index 799af6a..511036f 100644
--- a/pkg/front_end/testcases/extensions/issue38712.dart
+++ b/pkg/front_end/testcases/extensions/issue38712.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension C {
}
diff --git a/pkg/front_end/testcases/extensions/issue38712.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38712.dart.textual_outline.expect
index 3faefa5..ec4321b 100644
--- a/pkg/front_end/testcases/extensions/issue38712.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38712.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
extension C on{}
void main() {}
diff --git a/pkg/front_end/testcases/extensions/issue38712.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38712.dart.weak.expect
index 464cf79..5c2b8df 100644
--- a/pkg/front_end/testcases/extensions/issue38712.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38712.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
diff --git a/pkg/front_end/testcases/extensions/issue38712.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38712.dart.weak.modular.expect
index 464cf79..5c2b8df 100644
--- a/pkg/front_end/testcases/extensions/issue38712.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38712.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
diff --git a/pkg/front_end/testcases/extensions/issue38712.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38712.dart.weak.outline.expect
index 3f1a511..569a1aa 100644
--- a/pkg/front_end/testcases/extensions/issue38712.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38712.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
diff --git a/pkg/front_end/testcases/extensions/issue38712.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38712.dart.weak.transformed.expect
index 464cf79..5c2b8df 100644
--- a/pkg/front_end/testcases/extensions/issue38712.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38712.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart b/pkg/front_end/testcases/extensions/issue38713.dart
index ef83847..b32ad41 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart
+++ b/pkg/front_end/testcases/extensions/issue38713.dart
@@ -1,13 +1,13 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
-extension C on int {
- static int property2;
- static void set property2(int x) {}
- static void set property3(int x) {}
- int get property3 => 1;
+extension C on int {
+ static int? property2;
+ static void set property2(int? x) {}
+
+ static void set property3(int? x) {}
+ int? get property3 => 1;
}
void main() {
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline.expect
index 06e37f8..b8034a7 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline.expect
@@ -1,9 +1,8 @@
-// @dart = 2.9
extension C on int {
- static int property2;
- static void set property2(int x) {}
- static void set property3(int x) {}
- int get property3 => 1;
+ static int? property2;
+ static void set property2(int? x) {}
+ static void set property3(int? x) {}
+ int? get property3 => 1;
}
void main() {}
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline_modelled.expect
index 39b481c..6bf2fb6 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.textual_outline_modelled.expect
@@ -1,9 +1,8 @@
-// @dart = 2.9
extension C on int {
- int get property3 => 1;
- static int property2;
- static void set property2(int x) {}
- static void set property3(int x) {}
+ int? get property3 => 1;
+ static int? property2;
+ static void set property2(int? x) {}
+ static void set property3(int? x) {}
}
void main() {}
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38713.dart.weak.expect
index 8dbe072..c4cab22 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.weak.expect
@@ -1,34 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
-// static void set property2(int x) {}
+// static void set property2(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:6:14: Error: Conflicts with setter 'property2'.
-// static int property2;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:6:15: Error: Conflicts with setter 'property2'.
+// static int? property2;
+// ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:9:19: Error: Conflicts with member 'property3'.
-// static void set property3(int x) {}
+// static void set property3(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:10:11: Error: Conflicts with setter 'property3'.
-// int get property3 => 1;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:10:12: Error: Conflicts with setter 'property3'.
+// int? get property3 => 1;
+// ^
//
import self as self;
import "dart:core" as core;
-extension C on core::int* {
+extension C on core::int {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
static set property3 = set self::C|property3;
}
-static field core::int* C|property2;
-static set C|property3(core::int* x) → void {}
-static method C|get#property3(lowered final core::int* #this) → core::int*
+static field core::int? C|property2;
+static set C|property3(core::int? x) → void {}
+static method C|get#property3(lowered final core::int #this) → core::int?
return 1;
static method main() → void {
self::C|property2;
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38713.dart.weak.modular.expect
index 8dbe072..c4cab22 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.weak.modular.expect
@@ -1,34 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
-// static void set property2(int x) {}
+// static void set property2(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:6:14: Error: Conflicts with setter 'property2'.
-// static int property2;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:6:15: Error: Conflicts with setter 'property2'.
+// static int? property2;
+// ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:9:19: Error: Conflicts with member 'property3'.
-// static void set property3(int x) {}
+// static void set property3(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:10:11: Error: Conflicts with setter 'property3'.
-// int get property3 => 1;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:10:12: Error: Conflicts with setter 'property3'.
+// int? get property3 => 1;
+// ^
//
import self as self;
import "dart:core" as core;
-extension C on core::int* {
+extension C on core::int {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
static set property3 = set self::C|property3;
}
-static field core::int* C|property2;
-static set C|property3(core::int* x) → void {}
-static method C|get#property3(lowered final core::int* #this) → core::int*
+static field core::int? C|property2;
+static set C|property3(core::int? x) → void {}
+static method C|get#property3(lowered final core::int #this) → core::int?
return 1;
static method main() → void {
self::C|property2;
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38713.dart.weak.outline.expect
index 6cfc008..98f41705 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.weak.outline.expect
@@ -1,35 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
-// static void set property2(int x) {}
+// static void set property2(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:6:14: Error: Conflicts with setter 'property2'.
-// static int property2;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:6:15: Error: Conflicts with setter 'property2'.
+// static int? property2;
+// ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:9:19: Error: Conflicts with member 'property3'.
-// static void set property3(int x) {}
+// static void set property3(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:10:11: Error: Conflicts with setter 'property3'.
-// int get property3 => 1;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:10:12: Error: Conflicts with setter 'property3'.
+// int? get property3 => 1;
+// ^
//
import self as self;
import "dart:core" as core;
-extension C on core::int* {
+extension C on core::int {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
static set property3 = set self::C|property3;
}
-static field core::int* C|property2;
-static set C|property3(core::int* x) → void
+static field core::int? C|property2;
+static set C|property3(core::int? x) → void
;
-static method C|get#property3(lowered final core::int* #this) → core::int*
+static method C|get#property3(lowered final core::int #this) → core::int?
;
static method main() → void
;
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38713.dart.weak.transformed.expect
index 8dbe072..c4cab22 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.weak.transformed.expect
@@ -1,34 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
-// static void set property2(int x) {}
+// static void set property2(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:6:14: Error: Conflicts with setter 'property2'.
-// static int property2;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:6:15: Error: Conflicts with setter 'property2'.
+// static int? property2;
+// ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:9:19: Error: Conflicts with member 'property3'.
-// static void set property3(int x) {}
+// static void set property3(int? x) {}
// ^
//
-// pkg/front_end/testcases/extensions/issue38713.dart:10:11: Error: Conflicts with setter 'property3'.
-// int get property3 => 1;
-// ^
+// pkg/front_end/testcases/extensions/issue38713.dart:10:12: Error: Conflicts with setter 'property3'.
+// int? get property3 => 1;
+// ^
//
import self as self;
import "dart:core" as core;
-extension C on core::int* {
+extension C on core::int {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
static set property3 = set self::C|property3;
}
-static field core::int* C|property2;
-static set C|property3(core::int* x) → void {}
-static method C|get#property3(lowered final core::int* #this) → core::int*
+static field core::int? C|property2;
+static set C|property3(core::int? x) → void {}
+static method C|get#property3(lowered final core::int #this) → core::int?
return 1;
static method main() → void {
self::C|property2;
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart b/pkg/front_end/testcases/extensions/issue38745.dart
index e285241..357a655 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart
+++ b/pkg/front_end/testcases/extensions/issue38745.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class C<T> {
}
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38745.dart.textual_outline.expect
index 2fa8049..d0a4d03 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C<T> {}
extension ext<T> on C<T> {
int field;
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect
index aa7f4d8..d345fc2 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -98,22 +98,12 @@
import self as self;
import "dart:core" as core;
-class C<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::C<self::C::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
+extension ext<T extends core::Object? = dynamic> on self::C<T%> {
field field = self::ext|field;
field property = self::ext|property;
field property2 = self::ext|property2;
@@ -122,12 +112,12 @@
set property = self::ext|set#property;
static set property2 = set self::ext|property2;
}
-static field core::int* ext|field;
-static final field core::int* ext|property = 42;
-static final field core::int* ext|property2 = 42;
-static method ext|set#property<T extends core::Object* = dynamic>(lowered final self::C<self::ext|set#property::T*>* #this, core::int* value) → void {}
-static set ext|property2(core::int* value) → void {}
-static method ext|method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|method::T*>* #this) → dynamic {
+static field core::int ext|field;
+static final field core::int ext|property = 42;
+static final field core::int ext|property2 = 42;
+static method ext|set#property<T extends core::Object? = dynamic>(lowered final self::C<self::ext|set#property::T%> #this, core::int value) → void {}
+static set ext|property2(core::int value) → void {}
+static method ext|method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|method::T%> #this) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
field;
^^^^^";
@@ -137,7 +127,7 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:22:5: Error: Getter not found: 'property'.
property;
^^^^^^^^";
- self::ext|set#property<self::ext|method::T*>(#this, 23);
+ self::ext|set#property<self::ext|method::T%>(#this, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
property2;
^^^^^^^^^";
@@ -145,11 +135,11 @@
property2 = 23;
^^^^^^^^^";
}
-static method ext|get#method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::ext|method<self::ext|get#method::T*>(#this);
+static method ext|get#method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::ext|method<self::ext|get#method::T%>(#this);
static method main() → dynamic {}
static method errors() → dynamic {
- self::C<core::int*>* c = new self::C::•<core::int*>();
+ self::C<core::int> c = new self::C::•<core::int>();
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:34:5: Error: The getter 'field' isn't defined for the class 'C<int>'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38745.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
@@ -165,7 +155,7 @@
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
c.property;
^^^^^^^^" in c{<unresolved>}.property;
- self::ext|set#property<core::int*>(c, 23);
+ self::ext|set#property<core::int>(c, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:38:5: Error: The getter 'property2' isn't defined for the class 'C<int>'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38745.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property2'.
@@ -185,12 +175,12 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:42:10: Error: Getter not found: 'property'.
ext(c).property;
^^^^^^^^";
- self::ext|set#property<core::int*>(c, 23);
+ self::ext|set#property<core::int>(c, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
ext(c).property2;
^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:45:10: Error: Setter not found: 'property2'.
ext(c).property2 = 23;
^^^^^^^^^";
- self::ext|method<core::int*>(c);
+ self::ext|method<core::int>(c);
}
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38745.dart.weak.modular.expect
index aa7f4d8..d345fc2 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -98,22 +98,12 @@
import self as self;
import "dart:core" as core;
-class C<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::C<self::C::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
+extension ext<T extends core::Object? = dynamic> on self::C<T%> {
field field = self::ext|field;
field property = self::ext|property;
field property2 = self::ext|property2;
@@ -122,12 +112,12 @@
set property = self::ext|set#property;
static set property2 = set self::ext|property2;
}
-static field core::int* ext|field;
-static final field core::int* ext|property = 42;
-static final field core::int* ext|property2 = 42;
-static method ext|set#property<T extends core::Object* = dynamic>(lowered final self::C<self::ext|set#property::T*>* #this, core::int* value) → void {}
-static set ext|property2(core::int* value) → void {}
-static method ext|method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|method::T*>* #this) → dynamic {
+static field core::int ext|field;
+static final field core::int ext|property = 42;
+static final field core::int ext|property2 = 42;
+static method ext|set#property<T extends core::Object? = dynamic>(lowered final self::C<self::ext|set#property::T%> #this, core::int value) → void {}
+static set ext|property2(core::int value) → void {}
+static method ext|method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|method::T%> #this) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
field;
^^^^^";
@@ -137,7 +127,7 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:22:5: Error: Getter not found: 'property'.
property;
^^^^^^^^";
- self::ext|set#property<self::ext|method::T*>(#this, 23);
+ self::ext|set#property<self::ext|method::T%>(#this, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
property2;
^^^^^^^^^";
@@ -145,11 +135,11 @@
property2 = 23;
^^^^^^^^^";
}
-static method ext|get#method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::ext|method<self::ext|get#method::T*>(#this);
+static method ext|get#method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::ext|method<self::ext|get#method::T%>(#this);
static method main() → dynamic {}
static method errors() → dynamic {
- self::C<core::int*>* c = new self::C::•<core::int*>();
+ self::C<core::int> c = new self::C::•<core::int>();
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:34:5: Error: The getter 'field' isn't defined for the class 'C<int>'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38745.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
@@ -165,7 +155,7 @@
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
c.property;
^^^^^^^^" in c{<unresolved>}.property;
- self::ext|set#property<core::int*>(c, 23);
+ self::ext|set#property<core::int>(c, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:38:5: Error: The getter 'property2' isn't defined for the class 'C<int>'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38745.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property2'.
@@ -185,12 +175,12 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:42:10: Error: Getter not found: 'property'.
ext(c).property;
^^^^^^^^";
- self::ext|set#property<core::int*>(c, 23);
+ self::ext|set#property<core::int>(c, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
ext(c).property2;
^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:45:10: Error: Setter not found: 'property2'.
ext(c).property2 = 23;
^^^^^^^^^";
- self::ext|method<core::int*>(c);
+ self::ext|method<core::int>(c);
}
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38745.dart.weak.outline.expect
index 8777198..d8b235e 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -28,21 +28,11 @@
import self as self;
import "dart:core" as core;
-class C<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::C<self::C::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
+extension ext<T extends core::Object? = dynamic> on self::C<T%> {
field field = self::ext|field;
field property = self::ext|property;
field property2 = self::ext|property2;
@@ -51,17 +41,17 @@
set property = self::ext|set#property;
static set property2 = set self::ext|property2;
}
-static field core::int* ext|field;
-static final field core::int* ext|property;
-static final field core::int* ext|property2;
-static method ext|set#property<T extends core::Object* = dynamic>(lowered final self::C<self::ext|set#property::T*>* #this, core::int* value) → void
+static field core::int ext|field;
+static final field core::int ext|property;
+static final field core::int ext|property2;
+static method ext|set#property<T extends core::Object? = dynamic>(lowered final self::C<self::ext|set#property::T%> #this, core::int value) → void
;
-static set ext|property2(core::int* value) → void
+static set ext|property2(core::int value) → void
;
-static method ext|method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|method::T*>* #this) → dynamic
+static method ext|method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|method::T%> #this) → dynamic
;
-static method ext|get#method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::ext|method<self::ext|get#method::T*>(#this);
+static method ext|get#method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::ext|method<self::ext|get#method::T%>(#this);
static method main() → dynamic
;
static method errors() → dynamic
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect
index aa7f4d8..d345fc2 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -98,22 +98,12 @@
import self as self;
import "dart:core" as core;
-class C<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::C<self::C::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
+extension ext<T extends core::Object? = dynamic> on self::C<T%> {
field field = self::ext|field;
field property = self::ext|property;
field property2 = self::ext|property2;
@@ -122,12 +112,12 @@
set property = self::ext|set#property;
static set property2 = set self::ext|property2;
}
-static field core::int* ext|field;
-static final field core::int* ext|property = 42;
-static final field core::int* ext|property2 = 42;
-static method ext|set#property<T extends core::Object* = dynamic>(lowered final self::C<self::ext|set#property::T*>* #this, core::int* value) → void {}
-static set ext|property2(core::int* value) → void {}
-static method ext|method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|method::T*>* #this) → dynamic {
+static field core::int ext|field;
+static final field core::int ext|property = 42;
+static final field core::int ext|property2 = 42;
+static method ext|set#property<T extends core::Object? = dynamic>(lowered final self::C<self::ext|set#property::T%> #this, core::int value) → void {}
+static set ext|property2(core::int value) → void {}
+static method ext|method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|method::T%> #this) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:20:5: Error: Undefined name 'field'.
field;
^^^^^";
@@ -137,7 +127,7 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:22:5: Error: Getter not found: 'property'.
property;
^^^^^^^^";
- self::ext|set#property<self::ext|method::T*>(#this, 23);
+ self::ext|set#property<self::ext|method::T%>(#this, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:24:5: Error: Undefined name 'property2'.
property2;
^^^^^^^^^";
@@ -145,11 +135,11 @@
property2 = 23;
^^^^^^^^^";
}
-static method ext|get#method<T extends core::Object* = dynamic>(lowered final self::C<self::ext|get#method::T*>* #this) → () →* dynamic
- return () → dynamic => self::ext|method<self::ext|get#method::T*>(#this);
+static method ext|get#method<T extends core::Object? = dynamic>(lowered final self::C<self::ext|get#method::T%> #this) → () → dynamic
+ return () → dynamic => self::ext|method<self::ext|get#method::T%>(#this);
static method main() → dynamic {}
static method errors() → dynamic {
- self::C<core::int*>* c = new self::C::•<core::int*>();
+ self::C<core::int> c = new self::C::•<core::int>();
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:34:5: Error: The getter 'field' isn't defined for the class 'C<int>'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38745.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
@@ -165,7 +155,7 @@
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
c.property;
^^^^^^^^" in c{<unresolved>}.property;
- self::ext|set#property<core::int*>(c, 23);
+ self::ext|set#property<core::int>(c, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:38:5: Error: The getter 'property2' isn't defined for the class 'C<int>'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38745.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property2'.
@@ -185,12 +175,12 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:42:10: Error: Getter not found: 'property'.
ext(c).property;
^^^^^^^^";
- self::ext|set#property<core::int*>(c, 23);
+ self::ext|set#property<core::int>(c, 23);
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:44:10: Error: Member not found: 'property2'.
ext(c).property2;
^^^^^^^^^";
invalid-expression "pkg/front_end/testcases/extensions/issue38745.dart:45:10: Error: Setter not found: 'property2'.
ext(c).property2 = 23;
^^^^^^^^^";
- self::ext|method<core::int*>(c);
+ self::ext|method<core::int>(c);
}
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart b/pkg/front_end/testcases/extensions/issue38750.dart
index 24eaeb9..46f0bc6 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart
+++ b/pkg/front_end/testcases/extensions/issue38750.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'issue38750_lib1.dart';
import 'issue38750_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline.expect
index 974f3ed..5bc7316 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'issue38750_lib1.dart';
import 'issue38750_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline_modelled.expect
index 6ee009d..cca0335 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'issue38750_lib1.dart';
import 'issue38750_lib2.dart';
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
index 4dbcce1..3f0fc8c 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,7 +26,7 @@
static method main() → dynamic {}
static method errors() → dynamic {
- iss::C* c = new iss::C::•();
+ iss::C c = new iss::C::•();
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:12:5: Error: The method '_foo' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
Try correcting the name to the name of an existing method, or defining a method named '_foo'.
@@ -35,7 +35,7 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
C._staticFoo();
^^^^^^^^^^";
- c.{iss::C::foo}(){() →* dynamic};
+ c.{iss::C::foo}(){() → dynamic};
iss::C::staticFoo();
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:16:5: Error: The method '_bar' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
@@ -44,21 +44,21 @@
^^^^" in c{<unresolved>}._bar();
}
-library;
+library /*isNonNullableByDefault*/;
import self as iss;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → iss::C*
+ synthetic constructor •() → iss::C
: super core::Object::•()
;
method foo() → dynamic
- return this.{iss::C::_foo}(){() →* dynamic};
+ return this.{iss::C::_foo}(){() → dynamic};
method _foo() → dynamic {
try {
throw "producing a stack trace";
}
- on dynamic catch(final dynamic e, final core::StackTrace* s) {
+ on core::Object catch(final core::Object e, final core::StackTrace s) {
core::print(s);
}
}
@@ -67,33 +67,23 @@
}
static method staticFoo() → dynamic
return iss::C::_staticFoo();
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext on iss::C* {
+extension ext on iss::C {
method _bar = iss::ext|_bar;
tearoff _bar = iss::ext|get#_bar;
}
-static method ext|_bar(lowered final iss::C* #this) → dynamic {
+static method ext|_bar(lowered final iss::C #this) → dynamic {
try {
throw "producing a stack trace";
}
- on dynamic catch(final dynamic e, final core::StackTrace* s) {
+ on core::Object catch(final core::Object e, final core::StackTrace s) {
core::print(s);
}
}
-static method ext|get#_bar(lowered final iss::C* #this) → () →* dynamic
+static method ext|get#_bar(lowered final iss::C #this) → () → dynamic
return () → dynamic => iss::ext|_bar(#this);
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -109,7 +99,7 @@
import "org-dartlang-testcase:///issue38750_lib1.dart";
static method errors() → dynamic {
- iss::C* c = new iss::C::•();
+ iss::C c = new iss::C::•();
invalid-expression "pkg/front_end/testcases/extensions/issue38750_lib2.dart:9:5: Error: The method '_bar' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
Try correcting the name to the name of an existing method, or defining a method named '_bar'.
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.modular.expect
index 4dbcce1..3f0fc8c 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,7 +26,7 @@
static method main() → dynamic {}
static method errors() → dynamic {
- iss::C* c = new iss::C::•();
+ iss::C c = new iss::C::•();
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:12:5: Error: The method '_foo' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
Try correcting the name to the name of an existing method, or defining a method named '_foo'.
@@ -35,7 +35,7 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
C._staticFoo();
^^^^^^^^^^";
- c.{iss::C::foo}(){() →* dynamic};
+ c.{iss::C::foo}(){() → dynamic};
iss::C::staticFoo();
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:16:5: Error: The method '_bar' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
@@ -44,21 +44,21 @@
^^^^" in c{<unresolved>}._bar();
}
-library;
+library /*isNonNullableByDefault*/;
import self as iss;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → iss::C*
+ synthetic constructor •() → iss::C
: super core::Object::•()
;
method foo() → dynamic
- return this.{iss::C::_foo}(){() →* dynamic};
+ return this.{iss::C::_foo}(){() → dynamic};
method _foo() → dynamic {
try {
throw "producing a stack trace";
}
- on dynamic catch(final dynamic e, final core::StackTrace* s) {
+ on core::Object catch(final core::Object e, final core::StackTrace s) {
core::print(s);
}
}
@@ -67,33 +67,23 @@
}
static method staticFoo() → dynamic
return iss::C::_staticFoo();
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext on iss::C* {
+extension ext on iss::C {
method _bar = iss::ext|_bar;
tearoff _bar = iss::ext|get#_bar;
}
-static method ext|_bar(lowered final iss::C* #this) → dynamic {
+static method ext|_bar(lowered final iss::C #this) → dynamic {
try {
throw "producing a stack trace";
}
- on dynamic catch(final dynamic e, final core::StackTrace* s) {
+ on core::Object catch(final core::Object e, final core::StackTrace s) {
core::print(s);
}
}
-static method ext|get#_bar(lowered final iss::C* #this) → () →* dynamic
+static method ext|get#_bar(lowered final iss::C #this) → () → dynamic
return () → dynamic => iss::ext|_bar(#this);
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -109,7 +99,7 @@
import "org-dartlang-testcase:///issue38750_lib1.dart";
static method errors() → dynamic {
- iss::C* c = new iss::C::•();
+ iss::C c = new iss::C::•();
invalid-expression "pkg/front_end/testcases/extensions/issue38750_lib2.dart:9:5: Error: The method '_bar' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
Try correcting the name to the name of an existing method, or defining a method named '_bar'.
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.outline.expect
index 68e7bae..e01e4b8 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///issue38750_lib1.dart";
@@ -9,12 +9,12 @@
static method errors() → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self2::C*
+ synthetic constructor •() → self2::C
;
method foo() → dynamic
;
@@ -24,27 +24,17 @@
;
static method staticFoo() → dynamic
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext on self2::C* {
+extension ext on self2::C {
method _bar = self2::ext|_bar;
tearoff _bar = self2::ext|get#_bar;
}
-static method ext|_bar(lowered final self2::C* #this) → dynamic
+static method ext|_bar(lowered final self2::C #this) → dynamic
;
-static method ext|get#_bar(lowered final self2::C* #this) → () →* dynamic
+static method ext|get#_bar(lowered final self2::C #this) → () → dynamic
return () → dynamic => self2::ext|_bar(#this);
-library;
+library /*isNonNullableByDefault*/;
import self as self3;
import "org-dartlang-testcase:///issue38750_lib1.dart";
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
index 4dbcce1..3f0fc8c 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,7 +26,7 @@
static method main() → dynamic {}
static method errors() → dynamic {
- iss::C* c = new iss::C::•();
+ iss::C c = new iss::C::•();
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:12:5: Error: The method '_foo' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
Try correcting the name to the name of an existing method, or defining a method named '_foo'.
@@ -35,7 +35,7 @@
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:13:5: Error: Member not found: 'C._staticFoo'.
C._staticFoo();
^^^^^^^^^^";
- c.{iss::C::foo}(){() →* dynamic};
+ c.{iss::C::foo}(){() → dynamic};
iss::C::staticFoo();
invalid-expression "pkg/front_end/testcases/extensions/issue38750.dart:16:5: Error: The method '_bar' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
@@ -44,21 +44,21 @@
^^^^" in c{<unresolved>}._bar();
}
-library;
+library /*isNonNullableByDefault*/;
import self as iss;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → iss::C*
+ synthetic constructor •() → iss::C
: super core::Object::•()
;
method foo() → dynamic
- return this.{iss::C::_foo}(){() →* dynamic};
+ return this.{iss::C::_foo}(){() → dynamic};
method _foo() → dynamic {
try {
throw "producing a stack trace";
}
- on dynamic catch(final dynamic e, final core::StackTrace* s) {
+ on core::Object catch(final core::Object e, final core::StackTrace s) {
core::print(s);
}
}
@@ -67,33 +67,23 @@
}
static method staticFoo() → dynamic
return iss::C::_staticFoo();
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension ext on iss::C* {
+extension ext on iss::C {
method _bar = iss::ext|_bar;
tearoff _bar = iss::ext|get#_bar;
}
-static method ext|_bar(lowered final iss::C* #this) → dynamic {
+static method ext|_bar(lowered final iss::C #this) → dynamic {
try {
throw "producing a stack trace";
}
- on dynamic catch(final dynamic e, final core::StackTrace* s) {
+ on core::Object catch(final core::Object e, final core::StackTrace s) {
core::print(s);
}
}
-static method ext|get#_bar(lowered final iss::C* #this) → () →* dynamic
+static method ext|get#_bar(lowered final iss::C #this) → () → dynamic
return () → dynamic => iss::ext|_bar(#this);
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -109,7 +99,7 @@
import "org-dartlang-testcase:///issue38750_lib1.dart";
static method errors() → dynamic {
- iss::C* c = new iss::C::•();
+ iss::C c = new iss::C::•();
invalid-expression "pkg/front_end/testcases/extensions/issue38750_lib2.dart:9:5: Error: The method '_bar' isn't defined for the class 'C'.
- 'C' is from 'pkg/front_end/testcases/extensions/issue38750_lib1.dart'.
Try correcting the name to the name of an existing method, or defining a method named '_bar'.
diff --git a/pkg/front_end/testcases/extensions/issue38750_lib1.dart b/pkg/front_end/testcases/extensions/issue38750_lib1.dart
index 00fddf2..e2913d7 100644
--- a/pkg/front_end/testcases/extensions/issue38750_lib1.dart
+++ b/pkg/front_end/testcases/extensions/issue38750_lib1.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class C {
foo() => _foo();
_foo() {
diff --git a/pkg/front_end/testcases/extensions/issue38750_lib2.dart b/pkg/front_end/testcases/extensions/issue38750_lib2.dart
index 3385c39..8432aad 100644
--- a/pkg/front_end/testcases/extensions/issue38750_lib2.dart
+++ b/pkg/front_end/testcases/extensions/issue38750_lib2.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'issue38750_lib1.dart';
errors() {
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart b/pkg/front_end/testcases/extensions/issue38755.dart
index 68e25cd7..cdc9cca 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart
+++ b/pkg/front_end/testcases/extensions/issue38755.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
final list = ["a", "b", "c"].myMap((it) => it);
extension A<T> on List<T> {
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline.expect
index 173682a..c52f04b 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
final list = ["a", "b", "c"].myMap((it) => it);
extension A<T> on List<T> {
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline_modelled.expect
index 649da97..fd90a7a 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension A<T> on List<T> {
List<R> myMap<R>(R Function(T) block) {}
}
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect
index 8be9036..fc70b9d 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.weak.expect
@@ -1,17 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension A<T extends core::Object* = dynamic> on core::List<T*>* {
+extension A<T extends core::Object? = dynamic> on core::List<T%> {
method myMap = self::A|myMap;
tearoff myMap = self::A|get#myMap;
}
-static final field core::List<core::String*>* list = self::A|myMap<core::String*, core::String*>(<core::String*>["a", "b", "c"], (core::String* it) → core::String* => it);
-static method A|myMap<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final core::List<self::A|myMap::T*>* #this, (self::A|myMap::T*) →* self::A|myMap::R* block) → core::List<self::A|myMap::R*>* {
- return #this.{core::Iterable::map}<self::A|myMap::R*>(block){((self::A|myMap::T*) →* self::A|myMap::R*) →* core::Iterable<self::A|myMap::R*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<self::A|myMap::R*>*};
+static final field core::List<core::String> list = self::A|myMap<core::String, core::String>(<core::String>["a", "b", "c"], (core::String it) → core::String => it);
+static method A|myMap<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final core::List<self::A|myMap::T%> #this, (self::A|myMap::T%) → self::A|myMap::R% block) → core::List<self::A|myMap::R%> {
+ return #this.{core::Iterable::map}<self::A|myMap::R%>(block){((self::A|myMap::T%) → self::A|myMap::R%) → core::Iterable<self::A|myMap::R%>}.{core::Iterable::toList}(){({growable: core::bool}) → core::List<self::A|myMap::R%>};
}
-static method A|get#myMap<T extends core::Object* = dynamic>(lowered final core::List<self::A|get#myMap::T*>* #this) → <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R*) →* core::List<R*>*
- return <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R* block) → core::List<R*>* => self::A|myMap<self::A|get#myMap::T*, R*>(#this, block);
+static method A|get#myMap<T extends core::Object? = dynamic>(lowered final core::List<self::A|get#myMap::T%> #this) → <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R%) → core::List<R%>
+ return <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R% block) → core::List<R%> => self::A|myMap<self::A|get#myMap::T%, R%>(#this, block);
static method main() → dynamic {
core::print(self::list);
}
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38755.dart.weak.modular.expect
index 8be9036..fc70b9d 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.weak.modular.expect
@@ -1,17 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension A<T extends core::Object* = dynamic> on core::List<T*>* {
+extension A<T extends core::Object? = dynamic> on core::List<T%> {
method myMap = self::A|myMap;
tearoff myMap = self::A|get#myMap;
}
-static final field core::List<core::String*>* list = self::A|myMap<core::String*, core::String*>(<core::String*>["a", "b", "c"], (core::String* it) → core::String* => it);
-static method A|myMap<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final core::List<self::A|myMap::T*>* #this, (self::A|myMap::T*) →* self::A|myMap::R* block) → core::List<self::A|myMap::R*>* {
- return #this.{core::Iterable::map}<self::A|myMap::R*>(block){((self::A|myMap::T*) →* self::A|myMap::R*) →* core::Iterable<self::A|myMap::R*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<self::A|myMap::R*>*};
+static final field core::List<core::String> list = self::A|myMap<core::String, core::String>(<core::String>["a", "b", "c"], (core::String it) → core::String => it);
+static method A|myMap<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final core::List<self::A|myMap::T%> #this, (self::A|myMap::T%) → self::A|myMap::R% block) → core::List<self::A|myMap::R%> {
+ return #this.{core::Iterable::map}<self::A|myMap::R%>(block){((self::A|myMap::T%) → self::A|myMap::R%) → core::Iterable<self::A|myMap::R%>}.{core::Iterable::toList}(){({growable: core::bool}) → core::List<self::A|myMap::R%>};
}
-static method A|get#myMap<T extends core::Object* = dynamic>(lowered final core::List<self::A|get#myMap::T*>* #this) → <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R*) →* core::List<R*>*
- return <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R* block) → core::List<R*>* => self::A|myMap<self::A|get#myMap::T*, R*>(#this, block);
+static method A|get#myMap<T extends core::Object? = dynamic>(lowered final core::List<self::A|get#myMap::T%> #this) → <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R%) → core::List<R%>
+ return <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R% block) → core::List<R%> => self::A|myMap<self::A|get#myMap::T%, R%>(#this, block);
static method main() → dynamic {
core::print(self::list);
}
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38755.dart.weak.outline.expect
index 13c7102..a2243c6 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.weak.outline.expect
@@ -1,15 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension A<T extends core::Object* = dynamic> on core::List<T*>* {
+extension A<T extends core::Object? = dynamic> on core::List<T%> {
method myMap = self::A|myMap;
tearoff myMap = self::A|get#myMap;
}
-static final field core::List<core::String*>* list;
-static method A|myMap<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final core::List<self::A|myMap::T*>* #this, (self::A|myMap::T*) →* self::A|myMap::R* block) → core::List<self::A|myMap::R*>*
+static final field core::List<core::String> list;
+static method A|myMap<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final core::List<self::A|myMap::T%> #this, (self::A|myMap::T%) → self::A|myMap::R% block) → core::List<self::A|myMap::R%>
;
-static method A|get#myMap<T extends core::Object* = dynamic>(lowered final core::List<self::A|get#myMap::T*>* #this) → <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R*) →* core::List<R*>*
- return <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R* block) → core::List<R*>* => self::A|myMap<self::A|get#myMap::T*, R*>(#this, block);
+static method A|get#myMap<T extends core::Object? = dynamic>(lowered final core::List<self::A|get#myMap::T%> #this) → <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R%) → core::List<R%>
+ return <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R% block) → core::List<R%> => self::A|myMap<self::A|get#myMap::T%, R%>(#this, block);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect
index b5537fa..848852b 100644
--- a/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38755.dart.weak.transformed.expect
@@ -1,17 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-extension A<T extends core::Object* = dynamic> on core::List<T*>* {
+extension A<T extends core::Object? = dynamic> on core::List<T%> {
method myMap = self::A|myMap;
tearoff myMap = self::A|get#myMap;
}
-static final field core::List<core::String*>* list = self::A|myMap<core::String*, core::String*>(core::_GrowableList::_literal3<core::String*>("a", "b", "c"), (core::String* it) → core::String* => it);
-static method A|myMap<T extends core::Object* = dynamic, R extends core::Object* = dynamic>(lowered final core::List<self::A|myMap::T*>* #this, (self::A|myMap::T*) →* self::A|myMap::R* block) → core::List<self::A|myMap::R*>* {
- return #this.{core::Iterable::map}<self::A|myMap::R*>(block){((self::A|myMap::T*) →* self::A|myMap::R*) →* core::Iterable<self::A|myMap::R*>*}.{core::Iterable::toList}(){({growable: core::bool*}) →* core::List<self::A|myMap::R*>*};
+static final field core::List<core::String> list = self::A|myMap<core::String, core::String>(core::_GrowableList::_literal3<core::String>("a", "b", "c"), (core::String it) → core::String => it);
+static method A|myMap<T extends core::Object? = dynamic, R extends core::Object? = dynamic>(lowered final core::List<self::A|myMap::T%> #this, (self::A|myMap::T%) → self::A|myMap::R% block) → core::List<self::A|myMap::R%> {
+ return #this.{core::Iterable::map}<self::A|myMap::R%>(block){((self::A|myMap::T%) → self::A|myMap::R%) → core::Iterable<self::A|myMap::R%>}.{core::Iterable::toList}(){({growable: core::bool}) → core::List<self::A|myMap::R%>};
}
-static method A|get#myMap<T extends core::Object* = dynamic>(lowered final core::List<self::A|get#myMap::T*>* #this) → <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R*) →* core::List<R*>*
- return <R extends core::Object* = dynamic>((self::A|get#myMap::T*) →* R* block) → core::List<R*>* => self::A|myMap<self::A|get#myMap::T*, R*>(#this, block);
+static method A|get#myMap<T extends core::Object? = dynamic>(lowered final core::List<self::A|get#myMap::T%> #this) → <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R%) → core::List<R%>
+ return <R extends core::Object? = dynamic>((self::A|get#myMap::T%) → R% block) → core::List<R%> => self::A|myMap<self::A|get#myMap::T%, R%>(#this, block);
static method main() → dynamic {
core::print(self::list);
}
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart b/pkg/front_end/testcases/extensions/issue38915.dart
index 3792c68..5d4752d 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart
+++ b/pkg/front_end/testcases/extensions/issue38915.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline.expect
index faa81ba..349b61f 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline_modelled.expect
index faa81ba..349b61f 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.weak.expect b/pkg/front_end/testcases/extensions/issue38915.dart.weak.expect
index ab76811..2cb1c05 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.weak.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
@@ -27,22 +17,22 @@
method method4 = self::Extension|method4;
tearoff method4 = self::Extension|get#method4;
}
-static method Extension|method1(lowered final self::Class* #this, {core::bool* b = #C1, core::String* s = #C2}) → void
+static method Extension|method1(lowered final self::Class #this, {core::bool b = #C1, core::String s = #C2}) → void
return null;
-static method Extension|get#method1(lowered final self::Class* #this) → ({b: core::bool*, s: core::String*}) →* void
- return ({core::bool* b = #C1, core::String* s = #C2}) → void => self::Extension|method1(#this, b: b, s: s);
-static method Extension|method2(lowered final self::Class* #this, [core::bool* b = #C1, core::String* s = #C2]) → void
+static method Extension|get#method1(lowered final self::Class #this) → ({b: core::bool, s: core::String}) → void
+ return ({core::bool b = #C1, core::String s = #C2}) → void => self::Extension|method1(#this, b: b, s: s);
+static method Extension|method2(lowered final self::Class #this, [core::bool b = #C1, core::String s = #C2]) → void
return null;
-static method Extension|get#method2(lowered final self::Class* #this) → ([core::bool*, core::String*]) →* void
- return ([core::bool* b = #C1, core::String* s = #C2]) → void => self::Extension|method2(#this, b, s);
-static method Extension|method3(lowered final self::Class* #this, core::int* i, {core::bool* b = #C1, core::String* s = #C2}) → void {}
-static method Extension|get#method3(lowered final self::Class* #this) → (core::int*, {b: core::bool*, s: core::String*}) →* void
- return (core::int* i, {core::bool* b = #C1, core::String* s = #C2}) → void => self::Extension|method3(#this, i, b: b, s: s);
-static method Extension|method4(lowered final self::Class* #this, core::int* i, [core::bool* b = #C1, core::String* s = #C2]) → void {}
-static method Extension|get#method4(lowered final self::Class* #this) → (core::int*, [core::bool*, core::String*]) →* void
- return (core::int* i, [core::bool* b = #C1, core::String* s = #C2]) → void => self::Extension|method4(#this, i, b, s);
+static method Extension|get#method2(lowered final self::Class #this) → ([core::bool, core::String]) → void
+ return ([core::bool b = #C1, core::String s = #C2]) → void => self::Extension|method2(#this, b, s);
+static method Extension|method3(lowered final self::Class #this, core::int i, {core::bool b = #C1, core::String s = #C2}) → void {}
+static method Extension|get#method3(lowered final self::Class #this) → (core::int, {b: core::bool, s: core::String}) → void
+ return (core::int i, {core::bool b = #C1, core::String s = #C2}) → void => self::Extension|method3(#this, i, b: b, s: s);
+static method Extension|method4(lowered final self::Class #this, core::int i, [core::bool b = #C1, core::String s = #C2]) → void {}
+static method Extension|get#method4(lowered final self::Class #this) → (core::int, [core::bool, core::String]) → void
+ return (core::int i, [core::bool b = #C1, core::String s = #C2]) → void => self::Extension|method4(#this, i, b, s);
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::Extension|method1(c);
self::Extension|method1(c, s: "foo");
self::Extension|method1(c, b: true);
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue38915.dart.weak.modular.expect
index ab76811..2cb1c05 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.weak.modular.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
@@ -27,22 +17,22 @@
method method4 = self::Extension|method4;
tearoff method4 = self::Extension|get#method4;
}
-static method Extension|method1(lowered final self::Class* #this, {core::bool* b = #C1, core::String* s = #C2}) → void
+static method Extension|method1(lowered final self::Class #this, {core::bool b = #C1, core::String s = #C2}) → void
return null;
-static method Extension|get#method1(lowered final self::Class* #this) → ({b: core::bool*, s: core::String*}) →* void
- return ({core::bool* b = #C1, core::String* s = #C2}) → void => self::Extension|method1(#this, b: b, s: s);
-static method Extension|method2(lowered final self::Class* #this, [core::bool* b = #C1, core::String* s = #C2]) → void
+static method Extension|get#method1(lowered final self::Class #this) → ({b: core::bool, s: core::String}) → void
+ return ({core::bool b = #C1, core::String s = #C2}) → void => self::Extension|method1(#this, b: b, s: s);
+static method Extension|method2(lowered final self::Class #this, [core::bool b = #C1, core::String s = #C2]) → void
return null;
-static method Extension|get#method2(lowered final self::Class* #this) → ([core::bool*, core::String*]) →* void
- return ([core::bool* b = #C1, core::String* s = #C2]) → void => self::Extension|method2(#this, b, s);
-static method Extension|method3(lowered final self::Class* #this, core::int* i, {core::bool* b = #C1, core::String* s = #C2}) → void {}
-static method Extension|get#method3(lowered final self::Class* #this) → (core::int*, {b: core::bool*, s: core::String*}) →* void
- return (core::int* i, {core::bool* b = #C1, core::String* s = #C2}) → void => self::Extension|method3(#this, i, b: b, s: s);
-static method Extension|method4(lowered final self::Class* #this, core::int* i, [core::bool* b = #C1, core::String* s = #C2]) → void {}
-static method Extension|get#method4(lowered final self::Class* #this) → (core::int*, [core::bool*, core::String*]) →* void
- return (core::int* i, [core::bool* b = #C1, core::String* s = #C2]) → void => self::Extension|method4(#this, i, b, s);
+static method Extension|get#method2(lowered final self::Class #this) → ([core::bool, core::String]) → void
+ return ([core::bool b = #C1, core::String s = #C2]) → void => self::Extension|method2(#this, b, s);
+static method Extension|method3(lowered final self::Class #this, core::int i, {core::bool b = #C1, core::String s = #C2}) → void {}
+static method Extension|get#method3(lowered final self::Class #this) → (core::int, {b: core::bool, s: core::String}) → void
+ return (core::int i, {core::bool b = #C1, core::String s = #C2}) → void => self::Extension|method3(#this, i, b: b, s: s);
+static method Extension|method4(lowered final self::Class #this, core::int i, [core::bool b = #C1, core::String s = #C2]) → void {}
+static method Extension|get#method4(lowered final self::Class #this) → (core::int, [core::bool, core::String]) → void
+ return (core::int i, [core::bool b = #C1, core::String s = #C2]) → void => self::Extension|method4(#this, i, b, s);
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::Extension|method1(c);
self::Extension|method1(c, s: "foo");
self::Extension|method1(c, b: true);
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue38915.dart.weak.outline.expect
index 7a5e057..41779cc 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.weak.outline.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
@@ -26,21 +16,21 @@
method method4 = self::Extension|method4;
tearoff method4 = self::Extension|get#method4;
}
-static method Extension|method1(lowered final self::Class* #this, {has-declared-initializer core::bool* b, has-declared-initializer core::String* s}) → void
+static method Extension|method1(lowered final self::Class #this, {has-declared-initializer core::bool b, has-declared-initializer core::String s}) → void
;
-static method Extension|get#method1(lowered final self::Class* #this) → ({b: core::bool*, s: core::String*}) →* void
- return ({core::bool* b, core::String* s}) → void => self::Extension|method1(#this, b: b, s: s);
-static method Extension|method2(lowered final self::Class* #this, [has-declared-initializer core::bool* b, has-declared-initializer core::String* s]) → void
+static method Extension|get#method1(lowered final self::Class #this) → ({b: core::bool, s: core::String}) → void
+ return ({core::bool b, core::String s}) → void => self::Extension|method1(#this, b: b, s: s);
+static method Extension|method2(lowered final self::Class #this, [has-declared-initializer core::bool b, has-declared-initializer core::String s]) → void
;
-static method Extension|get#method2(lowered final self::Class* #this) → ([core::bool*, core::String*]) →* void
- return ([core::bool* b, core::String* s]) → void => self::Extension|method2(#this, b, s);
-static method Extension|method3(lowered final self::Class* #this, core::int* i, {has-declared-initializer core::bool* b, has-declared-initializer core::String* s}) → void
+static method Extension|get#method2(lowered final self::Class #this) → ([core::bool, core::String]) → void
+ return ([core::bool b, core::String s]) → void => self::Extension|method2(#this, b, s);
+static method Extension|method3(lowered final self::Class #this, core::int i, {has-declared-initializer core::bool b, has-declared-initializer core::String s}) → void
;
-static method Extension|get#method3(lowered final self::Class* #this) → (core::int*, {b: core::bool*, s: core::String*}) →* void
- return (core::int* i, {core::bool* b, core::String* s}) → void => self::Extension|method3(#this, i, b: b, s: s);
-static method Extension|method4(lowered final self::Class* #this, core::int* i, [has-declared-initializer core::bool* b, has-declared-initializer core::String* s]) → void
+static method Extension|get#method3(lowered final self::Class #this) → (core::int, {b: core::bool, s: core::String}) → void
+ return (core::int i, {core::bool b, core::String s}) → void => self::Extension|method3(#this, i, b: b, s: s);
+static method Extension|method4(lowered final self::Class #this, core::int i, [has-declared-initializer core::bool b, has-declared-initializer core::String s]) → void
;
-static method Extension|get#method4(lowered final self::Class* #this) → (core::int*, [core::bool*, core::String*]) →* void
- return (core::int* i, [core::bool* b, core::String* s]) → void => self::Extension|method4(#this, i, b, s);
+static method Extension|get#method4(lowered final self::Class #this) → (core::int, [core::bool, core::String]) → void
+ return (core::int i, [core::bool b, core::String s]) → void => self::Extension|method4(#this, i, b, s);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue38915.dart.weak.transformed.expect
index ab76811..2cb1c05 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.weak.transformed.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
@@ -27,22 +17,22 @@
method method4 = self::Extension|method4;
tearoff method4 = self::Extension|get#method4;
}
-static method Extension|method1(lowered final self::Class* #this, {core::bool* b = #C1, core::String* s = #C2}) → void
+static method Extension|method1(lowered final self::Class #this, {core::bool b = #C1, core::String s = #C2}) → void
return null;
-static method Extension|get#method1(lowered final self::Class* #this) → ({b: core::bool*, s: core::String*}) →* void
- return ({core::bool* b = #C1, core::String* s = #C2}) → void => self::Extension|method1(#this, b: b, s: s);
-static method Extension|method2(lowered final self::Class* #this, [core::bool* b = #C1, core::String* s = #C2]) → void
+static method Extension|get#method1(lowered final self::Class #this) → ({b: core::bool, s: core::String}) → void
+ return ({core::bool b = #C1, core::String s = #C2}) → void => self::Extension|method1(#this, b: b, s: s);
+static method Extension|method2(lowered final self::Class #this, [core::bool b = #C1, core::String s = #C2]) → void
return null;
-static method Extension|get#method2(lowered final self::Class* #this) → ([core::bool*, core::String*]) →* void
- return ([core::bool* b = #C1, core::String* s = #C2]) → void => self::Extension|method2(#this, b, s);
-static method Extension|method3(lowered final self::Class* #this, core::int* i, {core::bool* b = #C1, core::String* s = #C2}) → void {}
-static method Extension|get#method3(lowered final self::Class* #this) → (core::int*, {b: core::bool*, s: core::String*}) →* void
- return (core::int* i, {core::bool* b = #C1, core::String* s = #C2}) → void => self::Extension|method3(#this, i, b: b, s: s);
-static method Extension|method4(lowered final self::Class* #this, core::int* i, [core::bool* b = #C1, core::String* s = #C2]) → void {}
-static method Extension|get#method4(lowered final self::Class* #this) → (core::int*, [core::bool*, core::String*]) →* void
- return (core::int* i, [core::bool* b = #C1, core::String* s = #C2]) → void => self::Extension|method4(#this, i, b, s);
+static method Extension|get#method2(lowered final self::Class #this) → ([core::bool, core::String]) → void
+ return ([core::bool b = #C1, core::String s = #C2]) → void => self::Extension|method2(#this, b, s);
+static method Extension|method3(lowered final self::Class #this, core::int i, {core::bool b = #C1, core::String s = #C2}) → void {}
+static method Extension|get#method3(lowered final self::Class #this) → (core::int, {b: core::bool, s: core::String}) → void
+ return (core::int i, {core::bool b = #C1, core::String s = #C2}) → void => self::Extension|method3(#this, i, b: b, s: s);
+static method Extension|method4(lowered final self::Class #this, core::int i, [core::bool b = #C1, core::String s = #C2]) → void {}
+static method Extension|get#method4(lowered final self::Class #this) → (core::int, [core::bool, core::String]) → void
+ return (core::int i, [core::bool b = #C1, core::String s = #C2]) → void => self::Extension|method4(#this, i, b, s);
static method main() → dynamic {
- self::Class* c = new self::Class::•();
+ self::Class c = new self::Class::•();
self::Extension|method1(c);
self::Extension|method1(c, s: "foo");
self::Extension|method1(c, b: true);
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart b/pkg/front_end/testcases/extensions/issue39527.dart
index 5e2f9cd..7990741 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart
+++ b/pkg/front_end/testcases/extensions/issue39527.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
class C {
int value = 0;
}
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline.expect
index 3dec874..586004b 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {
int value = 0;
}
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline_modelled.expect
index 8a10e4c..56b4c36 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {
int value = 0;
}
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect b/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect
index 7d9415b..e569e5c 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.weak.expect
@@ -1,39 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- field core::int* value = 0;
- synthetic constructor •() → self::C*
+ field core::int value = 0;
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::C* {
+extension Extension1 on self::C {
operator [] = self::Extension1|[];
operator []= = self::Extension1|[]=;
operator - = self::Extension1|-;
}
-static method Extension1|[](lowered final self::C* #this, core::int* index) → self::C*
- return let final self::C* #t1 = #this in block {
- #t1.{self::C::value} = #t1.{self::C::value}{core::int*}.{core::num::+}(index.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+static method Extension1|[](lowered final self::C #this, core::int index) → self::C
+ return let final self::C #t1 = #this in block {
+ #t1.{self::C::value} = #t1.{self::C::value}{core::int}.{core::num::+}(index.{core::num::+}(1){(core::num) → core::int}){(core::num) → core::int};
} =>#t1;
-static method Extension1|[]=(lowered final self::C* #this, core::int* index, self::C* other) → void
- return #this.{self::C::value} = #this.{self::C::value}{core::int*}.{core::num::+}(other.{self::C::value}{core::int*}.{core::num::+}(index){(core::num*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
-static method Extension1|-(lowered final self::C* #this, core::int* val) → self::C*
+static method Extension1|[]=(lowered final self::C #this, core::int index, self::C other) → void
+ return #this.{self::C::value} = #this.{self::C::value}{core::int}.{core::num::+}(other.{self::C::value}{core::int}.{core::num::+}(index){(core::num) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::num) → core::int};
+static method Extension1|-(lowered final self::C #this, core::int val) → self::C
return #this;
static method main() → dynamic {
- self::C* c = new self::C::•();
- let final self::C* #t2 = c in let final core::int* #t3 = 42 in let final self::C* #t4 = self::Extension1|-(self::Extension1|[](#t2, #t3), 1) in let final void #t5 = self::Extension1|[]=(#t2, #t3, #t4) in #t4;
- let final self::C* #t6 = c in let final core::int* #t7 = 42 in self::Extension1|[]=(#t6, #t7, self::Extension1|-(self::Extension1|[](#t6, #t7), 1));
+ self::C c = new self::C::•();
+ let final self::C #t2 = c in let final core::int #t3 = 42 in let final self::C #t4 = self::Extension1|-(self::Extension1|[](#t2, #t3), 1) in let final void #t5 = self::Extension1|[]=(#t2, #t3, #t4) in #t4;
+ let final self::C #t6 = c in let final core::int #t7 = 42 in self::Extension1|[]=(#t6, #t7, self::Extension1|-(self::Extension1|[](#t6, #t7), 1));
self::Extension1|[]=(c, 42, self::Extension1|-(self::Extension1|[](c, 42), 1));
}
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue39527.dart.weak.modular.expect
index 7d9415b..e569e5c 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.weak.modular.expect
@@ -1,39 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- field core::int* value = 0;
- synthetic constructor •() → self::C*
+ field core::int value = 0;
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::C* {
+extension Extension1 on self::C {
operator [] = self::Extension1|[];
operator []= = self::Extension1|[]=;
operator - = self::Extension1|-;
}
-static method Extension1|[](lowered final self::C* #this, core::int* index) → self::C*
- return let final self::C* #t1 = #this in block {
- #t1.{self::C::value} = #t1.{self::C::value}{core::int*}.{core::num::+}(index.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+static method Extension1|[](lowered final self::C #this, core::int index) → self::C
+ return let final self::C #t1 = #this in block {
+ #t1.{self::C::value} = #t1.{self::C::value}{core::int}.{core::num::+}(index.{core::num::+}(1){(core::num) → core::int}){(core::num) → core::int};
} =>#t1;
-static method Extension1|[]=(lowered final self::C* #this, core::int* index, self::C* other) → void
- return #this.{self::C::value} = #this.{self::C::value}{core::int*}.{core::num::+}(other.{self::C::value}{core::int*}.{core::num::+}(index){(core::num*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
-static method Extension1|-(lowered final self::C* #this, core::int* val) → self::C*
+static method Extension1|[]=(lowered final self::C #this, core::int index, self::C other) → void
+ return #this.{self::C::value} = #this.{self::C::value}{core::int}.{core::num::+}(other.{self::C::value}{core::int}.{core::num::+}(index){(core::num) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::num) → core::int};
+static method Extension1|-(lowered final self::C #this, core::int val) → self::C
return #this;
static method main() → dynamic {
- self::C* c = new self::C::•();
- let final self::C* #t2 = c in let final core::int* #t3 = 42 in let final self::C* #t4 = self::Extension1|-(self::Extension1|[](#t2, #t3), 1) in let final void #t5 = self::Extension1|[]=(#t2, #t3, #t4) in #t4;
- let final self::C* #t6 = c in let final core::int* #t7 = 42 in self::Extension1|[]=(#t6, #t7, self::Extension1|-(self::Extension1|[](#t6, #t7), 1));
+ self::C c = new self::C::•();
+ let final self::C #t2 = c in let final core::int #t3 = 42 in let final self::C #t4 = self::Extension1|-(self::Extension1|[](#t2, #t3), 1) in let final void #t5 = self::Extension1|[]=(#t2, #t3, #t4) in #t4;
+ let final self::C #t6 = c in let final core::int #t7 = 42 in self::Extension1|[]=(#t6, #t7, self::Extension1|-(self::Extension1|[](#t6, #t7), 1));
self::Extension1|[]=(c, 42, self::Extension1|-(self::Extension1|[](c, 42), 1));
}
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue39527.dart.weak.outline.expect
index 32185bf..c414d72 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.weak.outline.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- field core::int* value;
- synthetic constructor •() → self::C*
+ field core::int value;
+ synthetic constructor •() → self::C
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::C* {
+extension Extension1 on self::C {
operator [] = self::Extension1|[];
operator []= = self::Extension1|[]=;
operator - = self::Extension1|-;
}
-static method Extension1|[](lowered final self::C* #this, core::int* index) → self::C*
+static method Extension1|[](lowered final self::C #this, core::int index) → self::C
;
-static method Extension1|[]=(lowered final self::C* #this, core::int* index, self::C* other) → void
+static method Extension1|[]=(lowered final self::C #this, core::int index, self::C other) → void
;
-static method Extension1|-(lowered final self::C* #this, core::int* val) → self::C*
+static method Extension1|-(lowered final self::C #this, core::int val) → self::C
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect
index f952880..c864b44 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.weak.transformed.expect
@@ -1,40 +1,30 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- field core::int* value = 0;
- synthetic constructor •() → self::C*
+ field core::int value = 0;
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension1 on self::C* {
+extension Extension1 on self::C {
operator [] = self::Extension1|[];
operator []= = self::Extension1|[]=;
operator - = self::Extension1|-;
}
-static method Extension1|[](lowered final self::C* #this, core::int* index) → self::C*
- return let final self::C* #t1 = #this in block {
- #t1.{self::C::value} = #t1.{self::C::value}{core::int*}.{core::num::+}(index.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
+static method Extension1|[](lowered final self::C #this, core::int index) → self::C
+ return let final self::C #t1 = #this in block {
+ #t1.{self::C::value} = #t1.{self::C::value}{core::int}.{core::num::+}(index.{core::num::+}(1){(core::num) → core::int}){(core::num) → core::int};
} =>#t1;
-static method Extension1|[]=(lowered final self::C* #this, core::int* index, self::C* other) → void
- return #this.{self::C::value} = #this.{self::C::value}{core::int*}.{core::num::+}(other.{self::C::value}{core::int*}.{core::num::+}(index){(core::num*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*}){(core::num*) →* core::int*};
-static method Extension1|-(lowered final self::C* #this, core::int* val) → self::C*
+static method Extension1|[]=(lowered final self::C #this, core::int index, self::C other) → void
+ return #this.{self::C::value} = #this.{self::C::value}{core::int}.{core::num::+}(other.{self::C::value}{core::int}.{core::num::+}(index){(core::num) → core::int}.{core::num::+}(1){(core::num) → core::int}){(core::num) → core::int};
+static method Extension1|-(lowered final self::C #this, core::int val) → self::C
return #this;
static method main() → dynamic {
- self::C* c = new self::C::•();
- let final self::C* #t2 = c in let final core::int* #t3 = 42 in let final self::C* #t4 = self::Extension1|-(self::Extension1|[](#t2, #t3), 1) in let final void #t5 = self::Extension1|[]=(#t2, #t3, #t4) in #t4;
- let final self::C* #t6 = c in let final core::int* #t7 = 42 in self::Extension1|[]=(#t6, #t7, self::Extension1|-(self::Extension1|[](#t6, #t7), 1));
+ self::C c = new self::C::•();
+ let final self::C #t2 = c in let final core::int #t3 = 42 in let final self::C #t4 = self::Extension1|-(self::Extension1|[](#t2, #t3), 1) in let final void #t5 = self::Extension1|[]=(#t2, #t3, #t4) in #t4;
+ let final self::C #t6 = c in let final core::int #t7 = 42 in self::Extension1|[]=(#t6, #t7, self::Extension1|-(self::Extension1|[](#t6, #t7), 1));
self::Extension1|[]=(c, 42, self::Extension1|-(self::Extension1|[](c, 42), 1));
}
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart b/pkg/front_end/testcases/extensions/issue39889.dart
index f53be7d..7ff900b 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart
+++ b/pkg/front_end/testcases/extensions/issue39889.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
class C {}
extension E on C {
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline.expect
index 87bc816..2b64dea 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {}
extension E on C {
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline_modelled.expect
index 87bc816..2b64dea 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {}
extension E on C {
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.weak.expect b/pkg/front_end/testcases/extensions/issue39889.dart.weak.expect
index 3d65b0f..42c94d0 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.weak.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
method f = self::E|f;
tearoff f = self::E|get#f;
}
-static method E|f(lowered final self::C* #this, core::String* b) → void {}
-static method E|get#f(lowered final self::C* #this) → (core::String*) →* void
- return (core::String* b) → void => self::E|f(#this, b);
+static method E|f(lowered final self::C #this, core::String b) → void {}
+static method E|get#f(lowered final self::C #this) → (core::String) → void
+ return (core::String b) → void => self::E|f(#this, b);
static method main() → void {
dynamic b = "456";
- self::C* c = new self::C::•();
- self::E|f(c, b as{TypeError,ForDynamic} core::String*);
+ self::C c = new self::C::•();
+ self::E|f(c, b as{TypeError,ForDynamic,ForNonNullableByDefault} core::String);
}
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue39889.dart.weak.modular.expect
index 3d65b0f..42c94d0 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.weak.modular.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
method f = self::E|f;
tearoff f = self::E|get#f;
}
-static method E|f(lowered final self::C* #this, core::String* b) → void {}
-static method E|get#f(lowered final self::C* #this) → (core::String*) →* void
- return (core::String* b) → void => self::E|f(#this, b);
+static method E|f(lowered final self::C #this, core::String b) → void {}
+static method E|get#f(lowered final self::C #this) → (core::String) → void
+ return (core::String b) → void => self::E|f(#this, b);
static method main() → void {
dynamic b = "456";
- self::C* c = new self::C::•();
- self::E|f(c, b as{TypeError,ForDynamic} core::String*);
+ self::C c = new self::C::•();
+ self::E|f(c, b as{TypeError,ForDynamic,ForNonNullableByDefault} core::String);
}
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue39889.dart.weak.outline.expect
index 0569c0a..3f7e42e 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.weak.outline.expect
@@ -1,28 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
method f = self::E|f;
tearoff f = self::E|get#f;
}
-static method E|f(lowered final self::C* #this, core::String* b) → void
+static method E|f(lowered final self::C #this, core::String b) → void
;
-static method E|get#f(lowered final self::C* #this) → (core::String*) →* void
- return (core::String* b) → void => self::E|f(#this, b);
+static method E|get#f(lowered final self::C #this) → (core::String) → void
+ return (core::String b) → void => self::E|f(#this, b);
static method main() → void
;
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue39889.dart.weak.transformed.expect
index 3d65b0f..42c94d0 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.weak.transformed.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- synthetic constructor •() → self::C*
+ synthetic constructor •() → self::C
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension E on self::C* {
+extension E on self::C {
method f = self::E|f;
tearoff f = self::E|get#f;
}
-static method E|f(lowered final self::C* #this, core::String* b) → void {}
-static method E|get#f(lowered final self::C* #this) → (core::String*) →* void
- return (core::String* b) → void => self::E|f(#this, b);
+static method E|f(lowered final self::C #this, core::String b) → void {}
+static method E|get#f(lowered final self::C #this) → (core::String) → void
+ return (core::String b) → void => self::E|f(#this, b);
static method main() → void {
dynamic b = "456";
- self::C* c = new self::C::•();
- self::E|f(c, b as{TypeError,ForDynamic} core::String*);
+ self::C c = new self::C::•();
+ self::E|f(c, b as{TypeError,ForDynamic,ForNonNullableByDefault} core::String);
}
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart
index d78f27a..5a39748 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
import 'issue39938_lib.dart';
main() {
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline.expect
index 19911dd..5a7bb14 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'issue39938_lib.dart';
main() {}
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline_modelled.expect
index 416331d..55e3b57 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'issue39938_lib.dart';
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect
index aef46a0..9381fe1 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "issue39938_lib.dart" as iss;
import "dart:core" as core;
@@ -16,16 +16,16 @@
self::expect(false, iss::Extension|+(false, false));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}.";
}
-library;
+library /*isNonNullableByDefault*/;
import self as iss;
import "dart:core" as core;
-extension Extension on core::bool* {
+extension Extension on core::bool {
operator + = iss::Extension|+;
}
-static method Extension|+(lowered final core::bool* #this, core::bool* other) → core::bool*
- return #this.{core::bool::|}(other){(core::bool*) →* core::bool*};
+static method Extension|+(lowered final core::bool #this, core::bool other) → core::bool
+ return #this.{core::bool::|}(other){(core::bool) → core::bool};
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.modular.expect
index 1c4dd76..4a69c8b 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "issue39938_lib.dart" as iss;
import "dart:core" as core;
@@ -16,6 +16,6 @@
self::expect(false, iss::Extension|+(false, false));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}.";
}
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.outline.expect
index 975b7b2..1905de9 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///issue39938_lib.dart";
@@ -8,12 +8,12 @@
static method expect(dynamic expected, dynamic actual) → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
-extension Extension on core::bool* {
+extension Extension on core::bool {
operator + = self2::Extension|+;
}
-static method Extension|+(lowered final core::bool* #this, core::bool* other) → core::bool*
+static method Extension|+(lowered final core::bool #this, core::bool other) → core::bool
;
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect
index aef46a0..9381fe1 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "issue39938_lib.dart" as iss;
import "dart:core" as core;
@@ -16,16 +16,16 @@
self::expect(false, iss::Extension|+(false, false));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}.";
}
-library;
+library /*isNonNullableByDefault*/;
import self as iss;
import "dart:core" as core;
-extension Extension on core::bool* {
+extension Extension on core::bool {
operator + = iss::Extension|+;
}
-static method Extension|+(lowered final core::bool* #this, core::bool* other) → core::bool*
- return #this.{core::bool::|}(other){(core::bool*) →* core::bool*};
+static method Extension|+(lowered final core::bool #this, core::bool other) → core::bool
+ return #this.{core::bool::|}(other){(core::bool) → core::bool};
diff --git a/pkg/front_end/testcases/extensions/issue39938/issue39938_lib.dart b/pkg/front_end/testcases/extensions/issue39938/issue39938_lib.dart
index da0e29f..8f2588e 100644
--- a/pkg/front_end/testcases/extensions/issue39938/issue39938_lib.dart
+++ b/pkg/front_end/testcases/extensions/issue39938/issue39938_lib.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
extension Extension on bool {
bool operator +(bool other) => this | other;
}
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart b/pkg/front_end/testcases/extensions/issue40596.dart
index fd0c1c1..733236c 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart
+++ b/pkg/front_end/testcases/extensions/issue40596.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
import 'dart:async';
void main() {
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline.expect
index ce04073..ee456e8 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'dart:async';
void main() {}
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline_modelled.expect
index 15839ab..a5b08bb 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'dart:async';
extension Extension<T> on Stream<T> {
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect b/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect
index 4f80fad..ca760ff 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.weak.expect
@@ -1,24 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
import "dart:async";
-extension Extension<T extends core::Object* = dynamic> on asy::Stream<T*>* {
+extension Extension<T extends core::Object? = dynamic> on asy::Stream<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
static method main() → void {
- asy::StreamController<core::String*>* controller = asy::StreamController::•<core::String*>();
- let final asy::StreamController<core::String*>* #t1 = controller in let final (dynamic) →* Null #t2 = (dynamic s) → Null {
+ asy::StreamController<core::String> controller = asy::StreamController::•<core::String>();
+ let final asy::StreamController<core::String> #t1 = controller in let final (dynamic) → Null #t2 = (dynamic s) → Null {
core::print(s);
- } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}{asy::Stream<core::String*>*}, #t2);
+ } in self::Extension|call<core::String>(#t1.{asy::StreamController::stream}{asy::Stream<core::String>}, #t2);
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|call::T*>* #this, core::Function* onData) → asy::StreamSubscription<self::Extension|call::T*>* {
- return #this.{asy::Stream::listen}((self::Extension|call::T* d) → Null {
+static method Extension|call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|call::T%> #this, core::Function onData) → asy::StreamSubscription<self::Extension|call::T%> {
+ return #this.{asy::Stream::listen}((self::Extension|call::T% d) → void {
onData(d);
- }){((self::Extension|call::T*) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* asy::StreamSubscription<self::Extension|call::T*>*};
+ }){((self::Extension|call::T%) →? void, {cancelOnError: core::bool?, onDone: () →? void, onError: core::Function?}) → asy::StreamSubscription<self::Extension|call::T%>};
}
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|get#call::T*>* #this) → (core::Function*) →* asy::StreamSubscription<self::Extension|get#call::T*>*
- return (core::Function* onData) → asy::StreamSubscription<self::Extension|get#call::T*>* => self::Extension|call<self::Extension|get#call::T*>(#this, onData);
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|get#call::T%> #this) → (core::Function) → asy::StreamSubscription<self::Extension|get#call::T%>
+ return (core::Function onData) → asy::StreamSubscription<self::Extension|get#call::T%> => self::Extension|call<self::Extension|get#call::T%>(#this, onData);
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue40596.dart.weak.modular.expect
index 4f80fad..ca760ff 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.weak.modular.expect
@@ -1,24 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
import "dart:async";
-extension Extension<T extends core::Object* = dynamic> on asy::Stream<T*>* {
+extension Extension<T extends core::Object? = dynamic> on asy::Stream<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
static method main() → void {
- asy::StreamController<core::String*>* controller = asy::StreamController::•<core::String*>();
- let final asy::StreamController<core::String*>* #t1 = controller in let final (dynamic) →* Null #t2 = (dynamic s) → Null {
+ asy::StreamController<core::String> controller = asy::StreamController::•<core::String>();
+ let final asy::StreamController<core::String> #t1 = controller in let final (dynamic) → Null #t2 = (dynamic s) → Null {
core::print(s);
- } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}{asy::Stream<core::String*>*}, #t2);
+ } in self::Extension|call<core::String>(#t1.{asy::StreamController::stream}{asy::Stream<core::String>}, #t2);
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|call::T*>* #this, core::Function* onData) → asy::StreamSubscription<self::Extension|call::T*>* {
- return #this.{asy::Stream::listen}((self::Extension|call::T* d) → Null {
+static method Extension|call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|call::T%> #this, core::Function onData) → asy::StreamSubscription<self::Extension|call::T%> {
+ return #this.{asy::Stream::listen}((self::Extension|call::T% d) → void {
onData(d);
- }){((self::Extension|call::T*) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* asy::StreamSubscription<self::Extension|call::T*>*};
+ }){((self::Extension|call::T%) →? void, {cancelOnError: core::bool?, onDone: () →? void, onError: core::Function?}) → asy::StreamSubscription<self::Extension|call::T%>};
}
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|get#call::T*>* #this) → (core::Function*) →* asy::StreamSubscription<self::Extension|get#call::T*>*
- return (core::Function* onData) → asy::StreamSubscription<self::Extension|get#call::T*>* => self::Extension|call<self::Extension|get#call::T*>(#this, onData);
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|get#call::T%> #this) → (core::Function) → asy::StreamSubscription<self::Extension|get#call::T%>
+ return (core::Function onData) → asy::StreamSubscription<self::Extension|get#call::T%> => self::Extension|call<self::Extension|get#call::T%>(#this, onData);
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue40596.dart.weak.outline.expect
index 8be7c09..c40dae2 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.weak.outline.expect
@@ -1,17 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
import "dart:async";
-extension Extension<T extends core::Object* = dynamic> on asy::Stream<T*>* {
+extension Extension<T extends core::Object? = dynamic> on asy::Stream<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
static method main() → void
;
-static method Extension|call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|call::T*>* #this, core::Function* onData) → asy::StreamSubscription<self::Extension|call::T*>*
+static method Extension|call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|call::T%> #this, core::Function onData) → asy::StreamSubscription<self::Extension|call::T%>
;
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|get#call::T*>* #this) → (core::Function*) →* asy::StreamSubscription<self::Extension|get#call::T*>*
- return (core::Function* onData) → asy::StreamSubscription<self::Extension|get#call::T*>* => self::Extension|call<self::Extension|get#call::T*>(#this, onData);
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|get#call::T%> #this) → (core::Function) → asy::StreamSubscription<self::Extension|get#call::T%>
+ return (core::Function onData) → asy::StreamSubscription<self::Extension|get#call::T%> => self::Extension|call<self::Extension|get#call::T%>(#this, onData);
diff --git a/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect
index 4f80fad..ca760ff 100644
--- a/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue40596.dart.weak.transformed.expect
@@ -1,24 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
import "dart:async";
-extension Extension<T extends core::Object* = dynamic> on asy::Stream<T*>* {
+extension Extension<T extends core::Object? = dynamic> on asy::Stream<T%> {
method call = self::Extension|call;
tearoff call = self::Extension|get#call;
}
static method main() → void {
- asy::StreamController<core::String*>* controller = asy::StreamController::•<core::String*>();
- let final asy::StreamController<core::String*>* #t1 = controller in let final (dynamic) →* Null #t2 = (dynamic s) → Null {
+ asy::StreamController<core::String> controller = asy::StreamController::•<core::String>();
+ let final asy::StreamController<core::String> #t1 = controller in let final (dynamic) → Null #t2 = (dynamic s) → Null {
core::print(s);
- } in self::Extension|call<core::String*>(#t1.{asy::StreamController::stream}{asy::Stream<core::String*>*}, #t2);
+ } in self::Extension|call<core::String>(#t1.{asy::StreamController::stream}{asy::Stream<core::String>}, #t2);
}
-static method Extension|call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|call::T*>* #this, core::Function* onData) → asy::StreamSubscription<self::Extension|call::T*>* {
- return #this.{asy::Stream::listen}((self::Extension|call::T* d) → Null {
+static method Extension|call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|call::T%> #this, core::Function onData) → asy::StreamSubscription<self::Extension|call::T%> {
+ return #this.{asy::Stream::listen}((self::Extension|call::T% d) → void {
onData(d);
- }){((self::Extension|call::T*) →* void, {cancelOnError: core::bool*, onDone: () →* void, onError: core::Function*}) →* asy::StreamSubscription<self::Extension|call::T*>*};
+ }){((self::Extension|call::T%) →? void, {cancelOnError: core::bool?, onDone: () →? void, onError: core::Function?}) → asy::StreamSubscription<self::Extension|call::T%>};
}
-static method Extension|get#call<T extends core::Object* = dynamic>(lowered final asy::Stream<self::Extension|get#call::T*>* #this) → (core::Function*) →* asy::StreamSubscription<self::Extension|get#call::T*>*
- return (core::Function* onData) → asy::StreamSubscription<self::Extension|get#call::T*>* => self::Extension|call<self::Extension|get#call::T*>(#this, onData);
+static method Extension|get#call<T extends core::Object? = dynamic>(lowered final asy::Stream<self::Extension|get#call::T%> #this) → (core::Function) → asy::StreamSubscription<self::Extension|get#call::T%>
+ return (core::Function onData) → asy::StreamSubscription<self::Extension|get#call::T%> => self::Extension|call<self::Extension|get#call::T%>(#this, onData);
diff --git a/pkg/front_end/testcases/extensions/issue40713.dart b/pkg/front_end/testcases/extensions/issue40713.dart
index 04e924b..3ce25ad 100644
--- a/pkg/front_end/testcases/extensions/issue40713.dart
+++ b/pkg/front_end/testcases/extensions/issue40713.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2020, 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.
+
// @dart=2.9
+
extension SafeAccess<T> on Iterable<T> {
T get safeFirst {
return isNotEmpty ? first : null;
diff --git a/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect b/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect
index 568f207..dcea3fb 100644
--- a/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue40713.dart.weak.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+// pkg/front_end/testcases/extensions/issue40713.dart:24:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
// list.safeFirst();
// ^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+// pkg/front_end/testcases/extensions/issue40713.dart:26:18: Error: Too few positional arguments: 1 required, 0 given.
// list2.safeFirst();
// ^
//
@@ -28,11 +28,11 @@
}
static method errors() → void {
final core::List<core::Object*>* list = <core::Object*>[];
- invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
list.safeFirst();
^^^^^^^^^" in self::SafeAccess|get#safeFirst<core::Object*>(list){<unresolved>}.call();
final core::List<(core::int*) →* void>* list2 = <(core::int*) →* void>[];
- invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:26:18: Error: Too few positional arguments: 1 required, 0 given.
list2.safeFirst();
^" in self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2){<inapplicable>}.();
}
diff --git a/pkg/front_end/testcases/extensions/issue40713.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue40713.dart.weak.modular.expect
index 568f207..dcea3fb 100644
--- a/pkg/front_end/testcases/extensions/issue40713.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue40713.dart.weak.modular.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+// pkg/front_end/testcases/extensions/issue40713.dart:24:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
// list.safeFirst();
// ^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+// pkg/front_end/testcases/extensions/issue40713.dart:26:18: Error: Too few positional arguments: 1 required, 0 given.
// list2.safeFirst();
// ^
//
@@ -28,11 +28,11 @@
}
static method errors() → void {
final core::List<core::Object*>* list = <core::Object*>[];
- invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
list.safeFirst();
^^^^^^^^^" in self::SafeAccess|get#safeFirst<core::Object*>(list){<unresolved>}.call();
final core::List<(core::int*) →* void>* list2 = <(core::int*) →* void>[];
- invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:26:18: Error: Too few positional arguments: 1 required, 0 given.
list2.safeFirst();
^" in self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2){<inapplicable>}.();
}
diff --git a/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect
index 7dc278b..70bb82b 100644
--- a/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue40713.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+// pkg/front_end/testcases/extensions/issue40713.dart:24:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
// list.safeFirst();
// ^^^^^^^^^
//
-// pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+// pkg/front_end/testcases/extensions/issue40713.dart:26:18: Error: Too few positional arguments: 1 required, 0 given.
// list2.safeFirst();
// ^
//
@@ -28,11 +28,11 @@
}
static method errors() → void {
final core::List<core::Object*>* list = core::_GrowableList::•<core::Object*>(0);
- invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
list.safeFirst();
^^^^^^^^^" in self::SafeAccess|get#safeFirst<core::Object*>(list){<unresolved>}.call();
final core::List<(core::int*) →* void>* list2 = core::_GrowableList::•<(core::int*) →* void>(0);
- invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713.dart:26:18: Error: Too few positional arguments: 1 required, 0 given.
list2.safeFirst();
^" in self::SafeAccess|get#safeFirst<(core::int*) →* void>(list2){<inapplicable>}.();
}
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart b/pkg/front_end/testcases/extensions/issue40713_2.dart
new file mode 100644
index 0000000..0c5438d
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2020, 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.
+
+extension SafeAccess<T> on Iterable<T> {
+ T get safeFirst {
+ return isNotEmpty ? first : throw '';
+ }
+}
+
+main() {}
+
+void test() {
+ final list = [];
+ list.safeFirst();
+ final list2 = <void Function(int)>[];
+ list2.safeFirst(0);
+}
+
+void errors() {
+ final list = <Object>[];
+ list.safeFirst();
+ final list2 = <void Function(int)>[];
+ list2.safeFirst();
+}
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue40713_2.dart.textual_outline.expect
new file mode 100644
index 0000000..86e8aaa
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+extension SafeAccess<T> on Iterable<T> {
+ T get safeFirst {}
+}
+
+main() {}
+void test() {}
+void errors() {}
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue40713_2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..b4b03d34
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+extension SafeAccess<T> on Iterable<T> {
+ T get safeFirst {}
+}
+
+main() {}
+void errors() {}
+void test() {}
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.expect b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.expect
new file mode 100644
index 0000000..c28459e
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.expect
@@ -0,0 +1,38 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue40713_2.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+// list.safeFirst();
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/issue40713_2.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+// list2.safeFirst();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+extension SafeAccess<T extends core::Object? = dynamic> on core::Iterable<T%> {
+ get safeFirst = self::SafeAccess|get#safeFirst;
+}
+static method SafeAccess|get#safeFirst<T extends core::Object? = dynamic>(lowered final core::Iterable<self::SafeAccess|get#safeFirst::T%> #this) → self::SafeAccess|get#safeFirst::T% {
+ return #this.{core::Iterable::isNotEmpty}{core::bool} ?{self::SafeAccess|get#safeFirst::T%} #this.{core::Iterable::first}{self::SafeAccess|get#safeFirst::T%} : throw "";
+}
+static method main() → dynamic {}
+static method test() → void {
+ final core::List<dynamic> list = <dynamic>[];
+ self::SafeAccess|get#safeFirst<dynamic>(list){dynamic}.call();
+ final core::List<(core::int) → void> list2 = <(core::int) → void>[];
+ self::SafeAccess|get#safeFirst<(core::int) → void>(list2)(0){(core::int) → void};
+}
+static method errors() → void {
+ final core::List<core::Object> list = <core::Object>[];
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713_2.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+ list.safeFirst();
+ ^^^^^^^^^" in self::SafeAccess|get#safeFirst<core::Object>(list){<unresolved>}.call();
+ final core::List<(core::int) → void> list2 = <(core::int) → void>[];
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713_2.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+ list2.safeFirst();
+ ^" in self::SafeAccess|get#safeFirst<(core::int) → void>(list2){<inapplicable>}.();
+}
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.modular.expect
new file mode 100644
index 0000000..c28459e
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.modular.expect
@@ -0,0 +1,38 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue40713_2.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+// list.safeFirst();
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/issue40713_2.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+// list2.safeFirst();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+extension SafeAccess<T extends core::Object? = dynamic> on core::Iterable<T%> {
+ get safeFirst = self::SafeAccess|get#safeFirst;
+}
+static method SafeAccess|get#safeFirst<T extends core::Object? = dynamic>(lowered final core::Iterable<self::SafeAccess|get#safeFirst::T%> #this) → self::SafeAccess|get#safeFirst::T% {
+ return #this.{core::Iterable::isNotEmpty}{core::bool} ?{self::SafeAccess|get#safeFirst::T%} #this.{core::Iterable::first}{self::SafeAccess|get#safeFirst::T%} : throw "";
+}
+static method main() → dynamic {}
+static method test() → void {
+ final core::List<dynamic> list = <dynamic>[];
+ self::SafeAccess|get#safeFirst<dynamic>(list){dynamic}.call();
+ final core::List<(core::int) → void> list2 = <(core::int) → void>[];
+ self::SafeAccess|get#safeFirst<(core::int) → void>(list2)(0){(core::int) → void};
+}
+static method errors() → void {
+ final core::List<core::Object> list = <core::Object>[];
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713_2.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+ list.safeFirst();
+ ^^^^^^^^^" in self::SafeAccess|get#safeFirst<core::Object>(list){<unresolved>}.call();
+ final core::List<(core::int) → void> list2 = <(core::int) → void>[];
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713_2.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+ list2.safeFirst();
+ ^" in self::SafeAccess|get#safeFirst<(core::int) → void>(list2){<inapplicable>}.();
+}
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.outline.expect
new file mode 100644
index 0000000..5e4f544
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.outline.expect
@@ -0,0 +1,15 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+extension SafeAccess<T extends core::Object? = dynamic> on core::Iterable<T%> {
+ get safeFirst = self::SafeAccess|get#safeFirst;
+}
+static method SafeAccess|get#safeFirst<T extends core::Object? = dynamic>(lowered final core::Iterable<self::SafeAccess|get#safeFirst::T%> #this) → self::SafeAccess|get#safeFirst::T%
+ ;
+static method main() → dynamic
+ ;
+static method test() → void
+ ;
+static method errors() → void
+ ;
diff --git a/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.transformed.expect
new file mode 100644
index 0000000..4cb53ee
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue40713_2.dart.weak.transformed.expect
@@ -0,0 +1,38 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue40713_2.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+// list.safeFirst();
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/issue40713_2.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+// list2.safeFirst();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+extension SafeAccess<T extends core::Object? = dynamic> on core::Iterable<T%> {
+ get safeFirst = self::SafeAccess|get#safeFirst;
+}
+static method SafeAccess|get#safeFirst<T extends core::Object? = dynamic>(lowered final core::Iterable<self::SafeAccess|get#safeFirst::T%> #this) → self::SafeAccess|get#safeFirst::T% {
+ return #this.{core::Iterable::isNotEmpty}{core::bool} ?{self::SafeAccess|get#safeFirst::T%} #this.{core::Iterable::first}{self::SafeAccess|get#safeFirst::T%} : throw "";
+}
+static method main() → dynamic {}
+static method test() → void {
+ final core::List<dynamic> list = core::_GrowableList::•<dynamic>(0);
+ self::SafeAccess|get#safeFirst<dynamic>(list){dynamic}.call();
+ final core::List<(core::int) → void> list2 = core::_GrowableList::•<(core::int) → void>(0);
+ self::SafeAccess|get#safeFirst<(core::int) → void>(list2)(0){(core::int) → void};
+}
+static method errors() → void {
+ final core::List<core::Object> list = core::_GrowableList::•<core::Object>(0);
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713_2.dart:22:8: Error: 'safeFirst' isn't a function or method and can't be invoked.
+ list.safeFirst();
+ ^^^^^^^^^" in self::SafeAccess|get#safeFirst<core::Object>(list){<unresolved>}.call();
+ final core::List<(core::int) → void> list2 = core::_GrowableList::•<(core::int) → void>(0);
+ invalid-expression "pkg/front_end/testcases/extensions/issue40713_2.dart:24:18: Error: Too few positional arguments: 1 required, 0 given.
+ list2.safeFirst();
+ ^" in self::SafeAccess|get#safeFirst<(core::int) → void>(list2){<inapplicable>}.();
+}
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart b/pkg/front_end/testcases/extensions/issue40816.dart
index 99ec5d2..9e85e2c 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart
+++ b/pkg/front_end/testcases/extensions/issue40816.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
class A {}
class B {}
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline.expect
index fe13f68..e806109 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A {}
class B {}
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline_modelled.expect
index fe13f68..e806109 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A {}
class B {}
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.weak.expect b/pkg/front_end/testcases/extensions/issue40816.dart.weak.expect
index 70c933c..e0cb3c1 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.weak.expect
@@ -1,46 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::A* {
+extension _extension#0 on self::A {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method _extension#0|foo(lowered final self::A* #this, self::A* a, self::B* b) → void {}
-static method _extension#0|get#foo(lowered final self::A* #this) → (self::A*, self::B*) →* void
- return (self::A* a, self::B* b) → void => self::_extension#0|foo(#this, a, b);
+static method _extension#0|foo(lowered final self::A #this, self::A a, self::B b) → void {}
+static method _extension#0|get#foo(lowered final self::A #this) → (self::A, self::B) → void
+ return (self::A a, self::B b) → void => self::_extension#0|foo(#this, a, b);
static method main() → void {
dynamic a = new self::A::•();
dynamic b = new self::B::•();
- self::_extension#0|foo(new self::A::•(), a as{TypeError,ForDynamic} self::A*, b as{TypeError,ForDynamic} self::B*);
+ self::_extension#0|foo(new self::A::•(), a as{TypeError,ForDynamic,ForNonNullableByDefault} self::A, b as{TypeError,ForDynamic,ForNonNullableByDefault} self::B);
}
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue40816.dart.weak.modular.expect
index 70c933c..e0cb3c1 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.weak.modular.expect
@@ -1,46 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::A* {
+extension _extension#0 on self::A {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method _extension#0|foo(lowered final self::A* #this, self::A* a, self::B* b) → void {}
-static method _extension#0|get#foo(lowered final self::A* #this) → (self::A*, self::B*) →* void
- return (self::A* a, self::B* b) → void => self::_extension#0|foo(#this, a, b);
+static method _extension#0|foo(lowered final self::A #this, self::A a, self::B b) → void {}
+static method _extension#0|get#foo(lowered final self::A #this) → (self::A, self::B) → void
+ return (self::A a, self::B b) → void => self::_extension#0|foo(#this, a, b);
static method main() → void {
dynamic a = new self::A::•();
dynamic b = new self::B::•();
- self::_extension#0|foo(new self::A::•(), a as{TypeError,ForDynamic} self::A*, b as{TypeError,ForDynamic} self::B*);
+ self::_extension#0|foo(new self::A::•(), a as{TypeError,ForDynamic,ForNonNullableByDefault} self::A, b as{TypeError,ForDynamic,ForNonNullableByDefault} self::B);
}
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue40816.dart.weak.outline.expect
index 6bf9120..bbbf904 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.weak.outline.expect
@@ -1,42 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::A* {
+extension _extension#0 on self::A {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method _extension#0|foo(lowered final self::A* #this, self::A* a, self::B* b) → void
+static method _extension#0|foo(lowered final self::A #this, self::A a, self::B b) → void
;
-static method _extension#0|get#foo(lowered final self::A* #this) → (self::A*, self::B*) →* void
- return (self::A* a, self::B* b) → void => self::_extension#0|foo(#this, a, b);
+static method _extension#0|get#foo(lowered final self::A #this) → (self::A, self::B) → void
+ return (self::A a, self::B b) → void => self::_extension#0|foo(#this, a, b);
static method main() → void
;
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue40816.dart.weak.transformed.expect
index 70c933c..e0cb3c1 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.weak.transformed.expect
@@ -1,46 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object {
- synthetic constructor •() → self::A*
+ synthetic constructor •() → self::A
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
- synthetic constructor •() → self::B*
+ synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::A* {
+extension _extension#0 on self::A {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method _extension#0|foo(lowered final self::A* #this, self::A* a, self::B* b) → void {}
-static method _extension#0|get#foo(lowered final self::A* #this) → (self::A*, self::B*) →* void
- return (self::A* a, self::B* b) → void => self::_extension#0|foo(#this, a, b);
+static method _extension#0|foo(lowered final self::A #this, self::A a, self::B b) → void {}
+static method _extension#0|get#foo(lowered final self::A #this) → (self::A, self::B) → void
+ return (self::A a, self::B b) → void => self::_extension#0|foo(#this, a, b);
static method main() → void {
dynamic a = new self::A::•();
dynamic b = new self::B::•();
- self::_extension#0|foo(new self::A::•(), a as{TypeError,ForDynamic} self::A*, b as{TypeError,ForDynamic} self::B*);
+ self::_extension#0|foo(new self::A::•(), a as{TypeError,ForDynamic,ForNonNullableByDefault} self::A, b as{TypeError,ForDynamic,ForNonNullableByDefault} self::B);
}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart b/pkg/front_end/testcases/extensions/issue43218.dart
index d90e5cf..fa413a6 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart
+++ b/pkg/front_end/testcases/extensions/issue43218.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
-// @dart=2.9
+
class C {
int value;
C() : value = 0 {}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline.expect
index 6774e67..c3323e8 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {
int value;
C() : value = 0 {}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline_modelled.expect
index 1579e1d..6c5f1e6 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class C {
C() : value = 0 {}
init() {}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect b/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect
index 8f03ff9..17263b6 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -11,38 +11,28 @@
import "dart:core" as core;
class C extends core::Object {
- field core::int* value;
- constructor •() → self::C*
+ field core::int value;
+ constructor •() → self::C
: self::C::value = 0, super core::Object::•() {}
method init() → dynamic {
this.{self::C::value} = 0;
}
- get id() → core::int*
- return this.{self::C::value}{core::int*};
- set id(core::int* v) → void {
+ get id() → core::int
+ return this.{self::C::value}{core::int};
+ set id(core::int v) → void {
this.{self::C::value} = v;
}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Ext on self::C* {
+extension Ext on self::C {
get id = self::Ext|get#id;
}
-static method Ext|get#id(lowered final self::C* #this) → core::int*
- return #this.{self::C::value}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+static method Ext|get#id(lowered final self::C #this) → core::int
+ return #this.{self::C::value}{core::int}.{core::num::+}(1){(core::num) → core::int};
static method test() → dynamic {
- self::C* c = new self::C::•();
- let final self::C* #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
+ self::C c = new self::C::•();
+ let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'id'.
Ext(c).id++;
- ^^" in #t1{<unresolved>}.id = self::Ext|get#id(#t1).{core::num::+}(1){(core::num*) →* core::int*};
+ ^^" in #t1{<unresolved>}.id = self::Ext|get#id(#t1).{core::num::+}(1){(core::num) → core::int};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue43218.dart.weak.modular.expect
index 8f03ff9..17263b6 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -11,38 +11,28 @@
import "dart:core" as core;
class C extends core::Object {
- field core::int* value;
- constructor •() → self::C*
+ field core::int value;
+ constructor •() → self::C
: self::C::value = 0, super core::Object::•() {}
method init() → dynamic {
this.{self::C::value} = 0;
}
- get id() → core::int*
- return this.{self::C::value}{core::int*};
- set id(core::int* v) → void {
+ get id() → core::int
+ return this.{self::C::value}{core::int};
+ set id(core::int v) → void {
this.{self::C::value} = v;
}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Ext on self::C* {
+extension Ext on self::C {
get id = self::Ext|get#id;
}
-static method Ext|get#id(lowered final self::C* #this) → core::int*
- return #this.{self::C::value}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+static method Ext|get#id(lowered final self::C #this) → core::int
+ return #this.{self::C::value}{core::int}.{core::num::+}(1){(core::num) → core::int};
static method test() → dynamic {
- self::C* c = new self::C::•();
- let final self::C* #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
+ self::C c = new self::C::•();
+ let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'id'.
Ext(c).id++;
- ^^" in #t1{<unresolved>}.id = self::Ext|get#id(#t1).{core::num::+}(1){(core::num*) →* core::int*};
+ ^^" in #t1{<unresolved>}.id = self::Ext|get#id(#t1).{core::num::+}(1){(core::num) → core::int};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue43218.dart.weak.outline.expect
index 5ca5e4a..79fab71 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.weak.outline.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
- field core::int* value;
- constructor •() → self::C*
+ field core::int value;
+ constructor •() → self::C
;
method init() → dynamic
;
- get id() → core::int*
+ get id() → core::int
;
- set id(core::int* v) → void
+ set id(core::int v) → void
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Ext on self::C* {
+extension Ext on self::C {
get id = self::Ext|get#id;
}
-static method Ext|get#id(lowered final self::C* #this) → core::int*
+static method Ext|get#id(lowered final self::C #this) → core::int
;
static method test() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect
index 8f03ff9..17263b6 100644
--- a/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue43218.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -11,38 +11,28 @@
import "dart:core" as core;
class C extends core::Object {
- field core::int* value;
- constructor •() → self::C*
+ field core::int value;
+ constructor •() → self::C
: self::C::value = 0, super core::Object::•() {}
method init() → dynamic {
this.{self::C::value} = 0;
}
- get id() → core::int*
- return this.{self::C::value}{core::int*};
- set id(core::int* v) → void {
+ get id() → core::int
+ return this.{self::C::value}{core::int};
+ set id(core::int v) → void {
this.{self::C::value} = v;
}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Ext on self::C* {
+extension Ext on self::C {
get id = self::Ext|get#id;
}
-static method Ext|get#id(lowered final self::C* #this) → core::int*
- return #this.{self::C::value}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
+static method Ext|get#id(lowered final self::C #this) → core::int
+ return #this.{self::C::value}{core::int}.{core::num::+}(1){(core::num) → core::int};
static method test() → dynamic {
- self::C* c = new self::C::•();
- let final self::C* #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
+ self::C c = new self::C::•();
+ let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/extensions/issue43218.dart:24:10: Error: The setter 'id' isn't defined for the class 'int'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'id'.
Ext(c).id++;
- ^^" in #t1{<unresolved>}.id = self::Ext|get#id(#t1).{core::num::+}(1){(core::num*) →* core::int*};
+ ^^" in #t1{<unresolved>}.id = self::Ext|get#id(#t1).{core::num::+}(1){(core::num) → core::int};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart b/pkg/front_end/testcases/extensions/issue44003.dart
index 01c1fe6..a7a25ed 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart
+++ b/pkg/front_end/testcases/extensions/issue44003.dart
@@ -1,7 +1,7 @@
// 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.
-// @dart=2.9
+
void test(List<String> args) {
args.foo('1', 2);
}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
index c8476d8..c57b097 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
void test(List<String> args) {}
extension on List<String> {
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect
index 72ed5d4..47d69a0 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension on List<String> {
void foo(String bar) {}
void foo(String baz, int a) {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.weak.expect b/pkg/front_end/testcases/extensions/issue44003.dart.weak.expect
index a8d4f63..9d6b12e 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -18,20 +18,20 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::List<core::String*>* {
+extension _extension#0 on core::List<core::String> {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method test(core::List<core::String*>* args) → void {
+static method test(core::List<core::String> args) → void {
invalid-expression "pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
- 'List' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
args.foo('1', 2);
^^^" in args{<unresolved>}.foo("1", 2);
}
-static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void {
+static method _extension#0|foo(lowered final core::List<core::String> #this, core::String bar) → void {
core::print(1);
}
-static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
- return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method _extension#0|get#foo(lowered final core::List<core::String> #this) → (core::String) → void
+ return (core::String bar) → void => self::_extension#0|foo(#this, bar);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue44003.dart.weak.modular.expect
index a8d4f63..9d6b12e 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -18,20 +18,20 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::List<core::String*>* {
+extension _extension#0 on core::List<core::String> {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method test(core::List<core::String*>* args) → void {
+static method test(core::List<core::String> args) → void {
invalid-expression "pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
- 'List' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
args.foo('1', 2);
^^^" in args{<unresolved>}.foo("1", 2);
}
-static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void {
+static method _extension#0|foo(lowered final core::List<core::String> #this, core::String bar) → void {
core::print(1);
}
-static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
- return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method _extension#0|get#foo(lowered final core::List<core::String> #this) → (core::String) → void
+ return (core::String bar) → void => self::_extension#0|foo(#this, bar);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue44003.dart.weak.outline.expect
index 59eaf76..13d2504 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -12,15 +12,15 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::List<core::String*>* {
+extension _extension#0 on core::List<core::String> {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method test(core::List<core::String*>* args) → void
+static method test(core::List<core::String> args) → void
;
-static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void
+static method _extension#0|foo(lowered final core::List<core::String> #this, core::String bar) → void
;
-static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
- return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method _extension#0|get#foo(lowered final core::List<core::String> #this) → (core::String) → void
+ return (core::String bar) → void => self::_extension#0|foo(#this, bar);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue44003.dart.weak.transformed.expect
index a8d4f63..9d6b12e 100644
--- a/pkg/front_end/testcases/extensions/issue44003.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -18,20 +18,20 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::List<core::String*>* {
+extension _extension#0 on core::List<core::String> {
method foo = self::_extension#0|foo;
tearoff foo = self::_extension#0|get#foo;
}
-static method test(core::List<core::String*>* args) → void {
+static method test(core::List<core::String> args) → void {
invalid-expression "pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
- 'List' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
args.foo('1', 2);
^^^" in args{<unresolved>}.foo("1", 2);
}
-static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void {
+static method _extension#0|foo(lowered final core::List<core::String> #this, core::String bar) → void {
core::print(1);
}
-static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
- return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method _extension#0|get#foo(lowered final core::List<core::String> #this) → (core::String) → void
+ return (core::String bar) → void => self::_extension#0|foo(#this, bar);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart b/pkg/front_end/testcases/extensions/issue44844.dart
index afb96ca..14f590b 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart
+++ b/pkg/front_end/testcases/extensions/issue44844.dart
@@ -1,7 +1,7 @@
// 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.
-// @dart=2.9
+
extension on int {
static int foo = 2;
void foo() {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
index 52d5738..53fe40b 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension on int {
static int foo = 2;
void foo() {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect
index 90a72cd..401a830 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension on int {
static int foo = 2;
void foo() {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.weak.expect b/pkg/front_end/testcases/extensions/issue44844.dart.weak.expect
index 1a705d7..1066ec8 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
static field foo = self::_extension#0|foo;
}
-static field core::int* _extension#0|foo;
+static field core::int _extension#0|foo;
static method test() → void {
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/issue44844.dart.weak.modular.expect
index 1a705d7..1066ec8 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
static field foo = self::_extension#0|foo;
}
-static field core::int* _extension#0|foo;
+static field core::int _extension#0|foo;
static method test() → void {
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/issue44844.dart.weak.outline.expect
index 33b1925..7c45f04 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -12,10 +12,10 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
static field foo = self::_extension#0|foo;
}
-static field core::int* _extension#0|foo;
+static field core::int _extension#0|foo;
static method test() → void
;
static method main() → dynamic
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/issue44844.dart.weak.transformed.expect
index 1a705d7..1066ec8 100644
--- a/pkg/front_end/testcases/extensions/issue44844.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@
import self as self;
import "dart:core" as core;
-extension _extension#0 on core::int* {
+extension _extension#0 on core::int {
static field foo = self::_extension#0|foo;
}
-static field core::int* _extension#0|foo;
+static field core::int _extension#0|foo;
static method test() → void {
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart b/pkg/front_end/testcases/extensions/language_issue1182_2.dart
new file mode 100644
index 0000000..c9d46c8
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2020, 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.
+
+extension Test<T> on T {
+ T Function(T) get test => (a) => this;
+}
+
+class Foo<S extends num> {
+ void test1(S x) {
+ S Function(S) f = x.test;
+ }
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.textual_outline.expect
new file mode 100644
index 0000000..5f989b2
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.textual_outline.expect
@@ -0,0 +1,9 @@
+extension Test<T> on T {
+ T Function(T) get test => (a) => this;
+}
+
+class Foo<S extends num> {
+ void test1(S x) {}
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..9aaf1c7
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.textual_outline_modelled.expect
@@ -0,0 +1,9 @@
+class Foo<S extends num> {
+ void test1(S x) {}
+}
+
+extension Test<T> on T {
+ T Function(T) get test => (a) => this;
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.expect b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.expect
new file mode 100644
index 0000000..aa91968
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<S extends core::num> extends core::Object {
+ synthetic constructor •() → self::Foo<self::Foo::S>
+ : super core::Object::•()
+ ;
+ method test1(covariant-by-class self::Foo::S x) → void {
+ (self::Foo::S) → self::Foo::S f = self::Test|get#test<self::Foo::S>(x);
+ }
+}
+extension Test<T extends core::Object? = dynamic> on T% {
+ get test = self::Test|get#test;
+}
+static method Test|get#test<T extends core::Object? = dynamic>(lowered final self::Test|get#test::T% #this) → (self::Test|get#test::T%) → self::Test|get#test::T%
+ return (self::Test|get#test::T% a) → self::Test|get#test::T% => #this;
+static method main() → void {}
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.modular.expect
new file mode 100644
index 0000000..aa91968
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.modular.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<S extends core::num> extends core::Object {
+ synthetic constructor •() → self::Foo<self::Foo::S>
+ : super core::Object::•()
+ ;
+ method test1(covariant-by-class self::Foo::S x) → void {
+ (self::Foo::S) → self::Foo::S f = self::Test|get#test<self::Foo::S>(x);
+ }
+}
+extension Test<T extends core::Object? = dynamic> on T% {
+ get test = self::Test|get#test;
+}
+static method Test|get#test<T extends core::Object? = dynamic>(lowered final self::Test|get#test::T% #this) → (self::Test|get#test::T%) → self::Test|get#test::T%
+ return (self::Test|get#test::T% a) → self::Test|get#test::T% => #this;
+static method main() → void {}
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.outline.expect
new file mode 100644
index 0000000..1431569
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.outline.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<S extends core::num> extends core::Object {
+ synthetic constructor •() → self::Foo<self::Foo::S>
+ ;
+ method test1(covariant-by-class self::Foo::S x) → void
+ ;
+}
+extension Test<T extends core::Object? = dynamic> on T% {
+ get test = self::Test|get#test;
+}
+static method Test|get#test<T extends core::Object? = dynamic>(lowered final self::Test|get#test::T% #this) → (self::Test|get#test::T%) → self::Test|get#test::T%
+ ;
+static method main() → void
+ ;
diff --git a/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.transformed.expect
new file mode 100644
index 0000000..aa91968
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/language_issue1182_2.dart.weak.transformed.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<S extends core::num> extends core::Object {
+ synthetic constructor •() → self::Foo<self::Foo::S>
+ : super core::Object::•()
+ ;
+ method test1(covariant-by-class self::Foo::S x) → void {
+ (self::Foo::S) → self::Foo::S f = self::Test|get#test<self::Foo::S>(x);
+ }
+}
+extension Test<T extends core::Object? = dynamic> on T% {
+ get test = self::Test|get#test;
+}
+static method Test|get#test<T extends core::Object? = dynamic>(lowered final self::Test|get#test::T% #this) → (self::Test|get#test::T%) → self::Test|get#test::T%
+ return (self::Test|get#test::T% a) → self::Test|get#test::T% => #this;
+static method main() → void {}
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart b/pkg/front_end/testcases/extensions/missing_toplevel.dart
index 2ccfeb9..2844255 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline.expect
index 6a82a61..83182ff 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline_modelled.expect
index 7cede08..94e9a17 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect
index 6d6179a..0aedef4 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -12,28 +12,18 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
set setter = self::Extension|set#setter;
}
-static field self::Class* c = new self::Class::•();
-static field dynamic missingGetter = let final self::Class* #t1 = self::c in let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/extensions/missing_toplevel.dart:13:23: Error: The getter 'setter' isn't defined for the class 'Class'.
+static field self::Class c = new self::Class::•();
+static field dynamic missingGetter = let final self::Class #t1 = self::c in let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/extensions/missing_toplevel.dart:13:23: Error: The getter 'setter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/missing_toplevel.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'setter'.
var missingGetter = c.setter += 42;
- ^^^^^^" in #t1{<unresolved>}.setter{dynamic}.+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
-static method Extension|set#setter(lowered final self::Class* #this, core::int* value) → void {}
+ ^^^^^^" in #t1{<unresolved>}.setter{dynamic}.+(42) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
+static method Extension|set#setter(lowered final self::Class #this, core::int value) → void {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.modular.expect
index 6d6179a..0aedef4 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -12,28 +12,18 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
set setter = self::Extension|set#setter;
}
-static field self::Class* c = new self::Class::•();
-static field dynamic missingGetter = let final self::Class* #t1 = self::c in let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/extensions/missing_toplevel.dart:13:23: Error: The getter 'setter' isn't defined for the class 'Class'.
+static field self::Class c = new self::Class::•();
+static field dynamic missingGetter = let final self::Class #t1 = self::c in let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/extensions/missing_toplevel.dart:13:23: Error: The getter 'setter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/missing_toplevel.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'setter'.
var missingGetter = c.setter += 42;
- ^^^^^^" in #t1{<unresolved>}.setter{dynamic}.+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
-static method Extension|set#setter(lowered final self::Class* #this, core::int* value) → void {}
+ ^^^^^^" in #t1{<unresolved>}.setter{dynamic}.+(42) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
+static method Extension|set#setter(lowered final self::Class #this, core::int value) → void {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.outline.expect
index 5cbfe17..543f0d1 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.outline.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
set setter = self::Extension|set#setter;
}
-static field self::Class* c;
+static field self::Class c;
static field dynamic missingGetter;
-static method Extension|set#setter(lowered final self::Class* #this, core::int* value) → void
+static method Extension|set#setter(lowered final self::Class #this, core::int value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect
index 29bae48..ff9cab9 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -12,28 +12,18 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
set setter = self::Extension|set#setter;
}
-static field self::Class* c = new self::Class::•();
-static field dynamic missingGetter = let final self::Class* #t1 = self::c in let final core::int* #t2 = invalid-expression "pkg/front_end/testcases/extensions/missing_toplevel.dart:13:23: Error: The getter 'setter' isn't defined for the class 'Class'.
+static field self::Class c = new self::Class::•();
+static field dynamic missingGetter = let final self::Class #t1 = self::c in let final core::int #t2 = invalid-expression "pkg/front_end/testcases/extensions/missing_toplevel.dart:13:23: Error: The getter 'setter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/extensions/missing_toplevel.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'setter'.
var missingGetter = c.setter += 42;
- ^^^^^^" in #t1{<unresolved>}.setter{dynamic}.+(42) as{TypeError,ForDynamic} core::int* in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
-static method Extension|set#setter(lowered final self::Class* #this, core::int* value) → void {}
+ ^^^^^^" in #t1{<unresolved>}.setter{dynamic}.+(42) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final void #t3 = self::Extension|set#setter(#t1, #t2) in #t2;
+static method Extension|set#setter(lowered final self::Class #this, core::int value) → void {}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart b/pkg/front_end/testcases/extensions/nested_on_types.dart
index da3d2d7..f0cbdc1 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart=2.9
-
class A<T> {}
extension Extension<T> on A<A<T>> {
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline.expect
index fcdf4f1..8970b3e 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A<T> {}
extension Extension<T> on A<A<T>> {
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline_modelled.expect
index fcdf4f1..8970b3e 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A<T> {}
extension Extension<T> on A<A<T>> {
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.expect
index 001a0b6..b453ae6 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
+extension Extension<T extends core::Object? = dynamic> on self::A<self::A<T%>> {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
tearoff method2 = self::Extension|get#method2;
}
-static method Extension|method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method1::T*>*>* #this) → dynamic {}
-static method Extension|get#method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T*>*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method1<self::Extension|get#method1::T*>(#this);
-static method Extension|method2<T extends core::Object* = dynamic, A extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method2::T*>*>* #this, self::Extension|method2::A* a) → dynamic {}
-static method Extension|get#method2<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T*>*>* #this) → <A extends core::Object* = dynamic>(A*) →* dynamic
- return <A extends core::Object* = dynamic>(A* a) → dynamic => self::Extension|method2<self::Extension|get#method2::T*, A*>(#this, a);
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method1::T%>> #this) → dynamic {}
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T%>> #this) → () → dynamic
+ return () → dynamic => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method Extension|method2<T extends core::Object? = dynamic, A extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method2::T%>> #this, self::Extension|method2::A% a) → dynamic {}
+static method Extension|get#method2<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T%>> #this) → <A extends core::Object? = dynamic>(A%) → dynamic
+ return <A extends core::Object? = dynamic>(A% a) → dynamic => self::Extension|method2<self::Extension|get#method2::T%, A%>(#this, a);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.modular.expect
index 001a0b6..b453ae6 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.modular.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
+extension Extension<T extends core::Object? = dynamic> on self::A<self::A<T%>> {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
tearoff method2 = self::Extension|get#method2;
}
-static method Extension|method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method1::T*>*>* #this) → dynamic {}
-static method Extension|get#method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T*>*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method1<self::Extension|get#method1::T*>(#this);
-static method Extension|method2<T extends core::Object* = dynamic, A extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method2::T*>*>* #this, self::Extension|method2::A* a) → dynamic {}
-static method Extension|get#method2<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T*>*>* #this) → <A extends core::Object* = dynamic>(A*) →* dynamic
- return <A extends core::Object* = dynamic>(A* a) → dynamic => self::Extension|method2<self::Extension|get#method2::T*, A*>(#this, a);
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method1::T%>> #this) → dynamic {}
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T%>> #this) → () → dynamic
+ return () → dynamic => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method Extension|method2<T extends core::Object? = dynamic, A extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method2::T%>> #this, self::Extension|method2::A% a) → dynamic {}
+static method Extension|get#method2<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T%>> #this) → <A extends core::Object? = dynamic>(A%) → dynamic
+ return <A extends core::Object? = dynamic>(A% a) → dynamic => self::Extension|method2<self::Extension|get#method2::T%, A%>(#this, a);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.outline.expect
index b5fda8d..70c836a 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.outline.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
+extension Extension<T extends core::Object? = dynamic> on self::A<self::A<T%>> {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
tearoff method2 = self::Extension|get#method2;
}
-static method Extension|method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method1::T*>*>* #this) → dynamic
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method1::T%>> #this) → dynamic
;
-static method Extension|get#method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T*>*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method1<self::Extension|get#method1::T*>(#this);
-static method Extension|method2<T extends core::Object* = dynamic, A extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method2::T*>*>* #this, self::Extension|method2::A* a) → dynamic
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T%>> #this) → () → dynamic
+ return () → dynamic => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method Extension|method2<T extends core::Object? = dynamic, A extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method2::T%>> #this, self::Extension|method2::A% a) → dynamic
;
-static method Extension|get#method2<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T*>*>* #this) → <A extends core::Object* = dynamic>(A*) →* dynamic
- return <A extends core::Object* = dynamic>(A* a) → dynamic => self::Extension|method2<self::Extension|get#method2::T*, A*>(#this, a);
+static method Extension|get#method2<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T%>> #this) → <A extends core::Object? = dynamic>(A%) → dynamic
+ return <A extends core::Object? = dynamic>(A% a) → dynamic => self::Extension|method2<self::Extension|get#method2::T%, A%>(#this, a);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.transformed.expect
index 001a0b6..b453ae6 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.weak.transformed.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
+extension Extension<T extends core::Object? = dynamic> on self::A<self::A<T%>> {
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
tearoff method2 = self::Extension|get#method2;
}
-static method Extension|method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method1::T*>*>* #this) → dynamic {}
-static method Extension|get#method1<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T*>*>* #this) → () →* dynamic
- return () → dynamic => self::Extension|method1<self::Extension|get#method1::T*>(#this);
-static method Extension|method2<T extends core::Object* = dynamic, A extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|method2::T*>*>* #this, self::Extension|method2::A* a) → dynamic {}
-static method Extension|get#method2<T extends core::Object* = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T*>*>* #this) → <A extends core::Object* = dynamic>(A*) →* dynamic
- return <A extends core::Object* = dynamic>(A* a) → dynamic => self::Extension|method2<self::Extension|get#method2::T*, A*>(#this, a);
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method1::T%>> #this) → dynamic {}
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method1::T%>> #this) → () → dynamic
+ return () → dynamic => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method Extension|method2<T extends core::Object? = dynamic, A extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|method2::T%>> #this, self::Extension|method2::A% a) → dynamic {}
+static method Extension|get#method2<T extends core::Object? = dynamic>(lowered final self::A<self::A<self::Extension|get#method2::T%>> #this) → <A extends core::Object? = dynamic>(A%) → dynamic
+ return <A extends core::Object? = dynamic>(A% a) → dynamic => self::Extension|method2<self::Extension|get#method2::T%, A%>(#this, a);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart b/pkg/front_end/testcases/extensions/null_aware.dart
index 327f7b4..ec84183 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart
+++ b/pkg/front_end/testcases/extensions/null_aware.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class Class {
int field;
}
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect
index b635d6c..f82892b 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/null_aware.dart.weak.transformed.expect
@@ -88,28 +88,28 @@
Extra constant evaluation status:
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:18:29 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:18:29 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:19:29 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:19:29 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:28:30 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:28:30 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:29:43 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:29:43 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:36:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:36:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:39:30 -> NullConstant(null)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:39:30 -> NullConstant(null)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:40:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:40:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:44:29 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:44:29 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:45:29 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:45:29 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:47:30 -> NullConstant(null)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:47:30 -> NullConstant(null)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:55:40 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:55:40 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:56:40 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:56:40 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:20:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:20:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:21:29 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:21:29 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:30:30 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:30:30 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:31:43 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:31:43 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:38:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:38:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:41:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:41:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:42:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:42:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:46:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:46:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:47:29 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:47:29 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:49:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:49:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:57:40 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:57:40 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:58:40 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware.dart:58:40 -> IntConstant(87)
Extra constant evaluation: evaluated: 368, effectively constant: 24
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart b/pkg/front_end/testcases/extensions/null_aware2.dart
new file mode 100644
index 0000000..1fe7d51
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart
@@ -0,0 +1,79 @@
+// Copyright (c) 2019, 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 Class {
+ int? field;
+}
+
+extension Extension on Class {
+ int? get property => field;
+ void set property(int? value) {
+ field = value;
+ }
+
+ int? method() => field;
+
+ testImplicitThis() {
+ expect(null, property);
+ expect(42, property ??= 42);
+ expect(42, property ??= 87);
+ }
+}
+
+main() {
+ test1(null);
+ test2(new Class());
+}
+
+test1(Class? c) {
+ expect(null, c?.property);
+ expect(null, c?.method);
+ expect(null, c?.method());
+ expect(null, c?.property = 42);
+ expect(null, Extension(c)?.property ??= 42);
+}
+
+test2(Class? c) {
+ expect(null, c?.property);
+ expect(null, c?.method());
+ var tearOff = c?.method;
+ expect(null, tearOff!());
+ expect(42, c?.property = 42);
+ expect(42, tearOff());
+
+ expect(null, c?.property = null);
+ expect(42, c?.property = 42);
+
+ c?.property = null;
+ expect(null, c?.property);
+ expect(42, c?.property ??= 42);
+ expect(42, c?.property ??= 87);
+
+ expect(null, c?.property = null);
+ c?.property ??= 42;
+ expect(42, c?.property);
+ c?.property ??= 87;
+ expect(42, c?.property);
+
+ c?.property = null;
+ expect(null, c?.property);
+ expect(42, Extension(c)?.property ??= 42);
+ expect(42, Extension(c)?.property ??= 87);
+
+ c?.property = null;
+ expect(null, c?.property);
+ Extension(c)?.property ??= 42;
+ expect(42, c?.property);
+ Extension(c)?.property ??= 87;
+ expect(42, c?.property);
+
+ c?.property = null;
+ c?.testImplicitThis();
+}
+
+expect(expected, actual) {
+ if (expected != actual) {
+ throw 'Mismatch: expected=$expected, actual=$actual';
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.textual_outline.expect
new file mode 100644
index 0000000..7668212
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart.textual_outline.expect
@@ -0,0 +1,15 @@
+class Class {
+ int? field;
+}
+
+extension Extension on Class {
+ int? get property => field;
+ void set property(int? value) {}
+ int? method() => field;
+ testImplicitThis() {}
+}
+
+main() {}
+test1(Class? c) {}
+test2(Class? c) {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..5e3ddc5
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart.textual_outline_modelled.expect
@@ -0,0 +1,16 @@
+class Class {
+ int? field;
+}
+
+expect(expected, actual) {}
+
+extension Extension on Class {
+ int? get property => field;
+ int? method() => field;
+ testImplicitThis() {}
+ void set property(int? value) {}
+}
+
+main() {}
+test1(Class? c) {}
+test2(Class? c) {}
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect
new file mode 100644
index 0000000..b5e0fa1
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect
@@ -0,0 +1,81 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int? field = null;
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method testImplicitThis = self::Extension|testImplicitThis;
+ tearoff testImplicitThis = self::Extension|get#testImplicitThis;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::field} = value;
+}
+static method Extension|method(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method Extension|get#method(lowered final self::Class #this) → () → core::int?
+ return () → core::int? => self::Extension|method(#this);
+static method Extension|testImplicitThis(lowered final self::Class #this) → dynamic {
+ self::expect(null, self::Extension|get#property(#this));
+ self::expect(42, let final core::int? #t1 = self::Extension|get#property(#this) in #t1 == null ?{core::int} let final core::int #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1{core::int});
+ self::expect(42, let final core::int? #t4 = self::Extension|get#property(#this) in #t4 == null ?{core::int} let final core::int #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4{core::int});
+}
+static method Extension|get#testImplicitThis(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testImplicitThis(#this);
+static method main() → dynamic {
+ self::test1(null);
+ self::test2(new self::Class::•());
+}
+static method test1(self::Class? c) → dynamic {
+ self::expect(null, let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : self::Extension|get#property(#t7{self::Class}));
+ self::expect(null, let final self::Class? #t8 = c in #t8 == null ?{() →? core::int?} null : self::Extension|get#method(#t8{self::Class}));
+ self::expect(null, let final self::Class? #t9 = c in #t9 == null ?{core::int?} null : self::Extension|method(#t9{self::Class}));
+ self::expect(null, let final self::Class? #t10 = c in #t10 == null ?{core::int?} null : let final core::int #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10{self::Class}, #t11) in #t11);
+ self::expect(null, let final self::Class? #t13 = c in #t13 == null ?{core::int?} null : let final core::int? #t14 = self::Extension|get#property(#t13{self::Class}) in #t14 == null ?{core::int} let final core::int #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13{self::Class}, #t15) in #t15 : #t14{core::int});
+}
+static method test2(self::Class? c) → dynamic {
+ self::expect(null, let final self::Class? #t17 = c in #t17 == null ?{core::int?} null : self::Extension|get#property(#t17{self::Class}));
+ self::expect(null, let final self::Class? #t18 = c in #t18 == null ?{core::int?} null : self::Extension|method(#t18{self::Class}));
+ () →? core::int? tearOff = let final self::Class? #t19 = c in #t19 == null ?{() →? core::int?} null : self::Extension|get#method(#t19{self::Class});
+ self::expect(null, tearOff!(){() → core::int?});
+ self::expect(42, let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final core::int #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20{self::Class}, #t21) in #t21);
+ self::expect(42, tearOff{() → core::int?}(){() → core::int?});
+ self::expect(null, let final self::Class? #t23 = c in #t23 == null ?{Null} null : let final has-declared-initializer Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23{self::Class}, #t24) in #t24);
+ self::expect(42, let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : let final core::int #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26{self::Class}, #t27) in #t27);
+ let final self::Class? #t29 = c in #t29 == null ?{Null} null : self::Extension|set#property(#t29{self::Class}, null);
+ self::expect(null, let final self::Class? #t30 = c in #t30 == null ?{core::int?} null : self::Extension|get#property(#t30{self::Class}));
+ self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int});
+ self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int});
+ self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40);
+ let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null;
+ self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class}));
+ let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null;
+ self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class}));
+ let final self::Class? #t46 = c in #t46 == null ?{Null} null : self::Extension|set#property(#t46{self::Class}, null);
+ self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class}));
+ self::expect(42, let final self::Class? #t48 = c in #t48 == null ?{core::int?} null : let final core::int? #t49 = self::Extension|get#property(#t48{self::Class}) in #t49 == null ?{core::int} let final core::int #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48{self::Class}, #t50) in #t50 : #t49{core::int});
+ self::expect(42, let final self::Class? #t52 = c in #t52 == null ?{core::int?} null : let final core::int? #t53 = self::Extension|get#property(#t52{self::Class}) in #t53 == null ?{core::int} let final core::int #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52{self::Class}, #t54) in #t54 : #t53{core::int});
+ let final self::Class? #t56 = c in #t56 == null ?{Null} null : self::Extension|set#property(#t56{self::Class}, null);
+ self::expect(null, let final self::Class? #t57 = c in #t57 == null ?{core::int?} null : self::Extension|get#property(#t57{self::Class}));
+ let final self::Class? #t58 = c in #t58 == null ?{core::int?} null : self::Extension|get#property(#t58{self::Class}) == null ?{core::int} self::Extension|set#property(#t58{self::Class}, 42) : null;
+ self::expect(42, let final self::Class? #t59 = c in #t59 == null ?{core::int?} null : self::Extension|get#property(#t59{self::Class}));
+ let final self::Class? #t60 = c in #t60 == null ?{core::int?} null : self::Extension|get#property(#t60{self::Class}) == null ?{core::int} self::Extension|set#property(#t60{self::Class}, 87) : null;
+ self::expect(42, let final self::Class? #t61 = c in #t61 == null ?{core::int?} null : self::Extension|get#property(#t61{self::Class}));
+ let final self::Class? #t62 = c in #t62 == null ?{Null} null : self::Extension|set#property(#t62{self::Class}, null);
+ let final self::Class? #t63 = c in #t63 == null ?{dynamic} null : self::Extension|testImplicitThis(#t63{self::Class});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect
new file mode 100644
index 0000000..b5e0fa1
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect
@@ -0,0 +1,81 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int? field = null;
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method testImplicitThis = self::Extension|testImplicitThis;
+ tearoff testImplicitThis = self::Extension|get#testImplicitThis;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::field} = value;
+}
+static method Extension|method(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method Extension|get#method(lowered final self::Class #this) → () → core::int?
+ return () → core::int? => self::Extension|method(#this);
+static method Extension|testImplicitThis(lowered final self::Class #this) → dynamic {
+ self::expect(null, self::Extension|get#property(#this));
+ self::expect(42, let final core::int? #t1 = self::Extension|get#property(#this) in #t1 == null ?{core::int} let final core::int #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1{core::int});
+ self::expect(42, let final core::int? #t4 = self::Extension|get#property(#this) in #t4 == null ?{core::int} let final core::int #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4{core::int});
+}
+static method Extension|get#testImplicitThis(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testImplicitThis(#this);
+static method main() → dynamic {
+ self::test1(null);
+ self::test2(new self::Class::•());
+}
+static method test1(self::Class? c) → dynamic {
+ self::expect(null, let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : self::Extension|get#property(#t7{self::Class}));
+ self::expect(null, let final self::Class? #t8 = c in #t8 == null ?{() →? core::int?} null : self::Extension|get#method(#t8{self::Class}));
+ self::expect(null, let final self::Class? #t9 = c in #t9 == null ?{core::int?} null : self::Extension|method(#t9{self::Class}));
+ self::expect(null, let final self::Class? #t10 = c in #t10 == null ?{core::int?} null : let final core::int #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10{self::Class}, #t11) in #t11);
+ self::expect(null, let final self::Class? #t13 = c in #t13 == null ?{core::int?} null : let final core::int? #t14 = self::Extension|get#property(#t13{self::Class}) in #t14 == null ?{core::int} let final core::int #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13{self::Class}, #t15) in #t15 : #t14{core::int});
+}
+static method test2(self::Class? c) → dynamic {
+ self::expect(null, let final self::Class? #t17 = c in #t17 == null ?{core::int?} null : self::Extension|get#property(#t17{self::Class}));
+ self::expect(null, let final self::Class? #t18 = c in #t18 == null ?{core::int?} null : self::Extension|method(#t18{self::Class}));
+ () →? core::int? tearOff = let final self::Class? #t19 = c in #t19 == null ?{() →? core::int?} null : self::Extension|get#method(#t19{self::Class});
+ self::expect(null, tearOff!(){() → core::int?});
+ self::expect(42, let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final core::int #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20{self::Class}, #t21) in #t21);
+ self::expect(42, tearOff{() → core::int?}(){() → core::int?});
+ self::expect(null, let final self::Class? #t23 = c in #t23 == null ?{Null} null : let final has-declared-initializer Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23{self::Class}, #t24) in #t24);
+ self::expect(42, let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : let final core::int #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26{self::Class}, #t27) in #t27);
+ let final self::Class? #t29 = c in #t29 == null ?{Null} null : self::Extension|set#property(#t29{self::Class}, null);
+ self::expect(null, let final self::Class? #t30 = c in #t30 == null ?{core::int?} null : self::Extension|get#property(#t30{self::Class}));
+ self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int});
+ self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int});
+ self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40);
+ let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null;
+ self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class}));
+ let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null;
+ self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class}));
+ let final self::Class? #t46 = c in #t46 == null ?{Null} null : self::Extension|set#property(#t46{self::Class}, null);
+ self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class}));
+ self::expect(42, let final self::Class? #t48 = c in #t48 == null ?{core::int?} null : let final core::int? #t49 = self::Extension|get#property(#t48{self::Class}) in #t49 == null ?{core::int} let final core::int #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48{self::Class}, #t50) in #t50 : #t49{core::int});
+ self::expect(42, let final self::Class? #t52 = c in #t52 == null ?{core::int?} null : let final core::int? #t53 = self::Extension|get#property(#t52{self::Class}) in #t53 == null ?{core::int} let final core::int #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52{self::Class}, #t54) in #t54 : #t53{core::int});
+ let final self::Class? #t56 = c in #t56 == null ?{Null} null : self::Extension|set#property(#t56{self::Class}, null);
+ self::expect(null, let final self::Class? #t57 = c in #t57 == null ?{core::int?} null : self::Extension|get#property(#t57{self::Class}));
+ let final self::Class? #t58 = c in #t58 == null ?{core::int?} null : self::Extension|get#property(#t58{self::Class}) == null ?{core::int} self::Extension|set#property(#t58{self::Class}, 42) : null;
+ self::expect(42, let final self::Class? #t59 = c in #t59 == null ?{core::int?} null : self::Extension|get#property(#t59{self::Class}));
+ let final self::Class? #t60 = c in #t60 == null ?{core::int?} null : self::Extension|get#property(#t60{self::Class}) == null ?{core::int} self::Extension|set#property(#t60{self::Class}, 87) : null;
+ self::expect(42, let final self::Class? #t61 = c in #t61 == null ?{core::int?} null : self::Extension|get#property(#t61{self::Class}));
+ let final self::Class? #t62 = c in #t62 == null ?{Null} null : self::Extension|set#property(#t62{self::Class}, null);
+ let final self::Class? #t63 = c in #t63 == null ?{dynamic} null : self::Extension|testImplicitThis(#t63{self::Class});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.outline.expect
new file mode 100644
index 0000000..235da44
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.outline.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int? field;
+ synthetic constructor •() → self::Class
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method testImplicitThis = self::Extension|testImplicitThis;
+ tearoff testImplicitThis = self::Extension|get#testImplicitThis;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int?
+ ;
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void
+ ;
+static method Extension|method(lowered final self::Class #this) → core::int?
+ ;
+static method Extension|get#method(lowered final self::Class #this) → () → core::int?
+ return () → core::int? => self::Extension|method(#this);
+static method Extension|testImplicitThis(lowered final self::Class #this) → dynamic
+ ;
+static method Extension|get#testImplicitThis(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testImplicitThis(#this);
+static method main() → dynamic
+ ;
+static method test1(self::Class? c) → dynamic
+ ;
+static method test2(self::Class? c) → dynamic
+ ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect
new file mode 100644
index 0000000..a927b20
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect
@@ -0,0 +1,109 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ field core::int? field = null;
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ get property = self::Extension|get#property;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method testImplicitThis = self::Extension|testImplicitThis;
+ tearoff testImplicitThis = self::Extension|get#testImplicitThis;
+ set property = self::Extension|set#property;
+}
+static method Extension|get#property(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
+ #this.{self::Class::field} = value;
+}
+static method Extension|method(lowered final self::Class #this) → core::int?
+ return #this.{self::Class::field}{core::int?};
+static method Extension|get#method(lowered final self::Class #this) → () → core::int?
+ return () → core::int? => self::Extension|method(#this);
+static method Extension|testImplicitThis(lowered final self::Class #this) → dynamic {
+ self::expect(null, self::Extension|get#property(#this));
+ self::expect(42, let final core::int? #t1 = self::Extension|get#property(#this) in #t1 == null ?{core::int} let final core::int #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1{core::int});
+ self::expect(42, let final core::int? #t4 = self::Extension|get#property(#this) in #t4 == null ?{core::int} let final core::int #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4{core::int});
+}
+static method Extension|get#testImplicitThis(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|testImplicitThis(#this);
+static method main() → dynamic {
+ self::test1(null);
+ self::test2(new self::Class::•());
+}
+static method test1(self::Class? c) → dynamic {
+ self::expect(null, let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : self::Extension|get#property(#t7{self::Class}));
+ self::expect(null, let final self::Class? #t8 = c in #t8 == null ?{() →? core::int?} null : self::Extension|get#method(#t8{self::Class}));
+ self::expect(null, let final self::Class? #t9 = c in #t9 == null ?{core::int?} null : self::Extension|method(#t9{self::Class}));
+ self::expect(null, let final self::Class? #t10 = c in #t10 == null ?{core::int?} null : let final core::int #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10{self::Class}, #t11) in #t11);
+ self::expect(null, let final self::Class? #t13 = c in #t13 == null ?{core::int?} null : let final core::int? #t14 = self::Extension|get#property(#t13{self::Class}) in #t14 == null ?{core::int} let final core::int #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13{self::Class}, #t15) in #t15 : #t14{core::int});
+}
+static method test2(self::Class? c) → dynamic {
+ self::expect(null, let final self::Class? #t17 = c in #t17 == null ?{core::int?} null : self::Extension|get#property(#t17{self::Class}));
+ self::expect(null, let final self::Class? #t18 = c in #t18 == null ?{core::int?} null : self::Extension|method(#t18{self::Class}));
+ () →? core::int? tearOff = let final self::Class? #t19 = c in #t19 == null ?{() →? core::int?} null : self::Extension|get#method(#t19{self::Class});
+ self::expect(null, tearOff!(){() → core::int?});
+ self::expect(42, let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final core::int #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20{self::Class}, #t21) in #t21);
+ self::expect(42, tearOff{() → core::int?}(){() → core::int?});
+ self::expect(null, let final self::Class? #t23 = c in #t23 == null ?{Null} null : let final has-declared-initializer Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23{self::Class}, #t24) in #t24);
+ self::expect(42, let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : let final core::int #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26{self::Class}, #t27) in #t27);
+ let final self::Class? #t29 = c in #t29 == null ?{Null} null : self::Extension|set#property(#t29{self::Class}, null);
+ self::expect(null, let final self::Class? #t30 = c in #t30 == null ?{core::int?} null : self::Extension|get#property(#t30{self::Class}));
+ self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int});
+ self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int});
+ self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40);
+ let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null;
+ self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class}));
+ let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null;
+ self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class}));
+ let final self::Class? #t46 = c in #t46 == null ?{Null} null : self::Extension|set#property(#t46{self::Class}, null);
+ self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class}));
+ self::expect(42, let final self::Class? #t48 = c in #t48 == null ?{core::int?} null : let final core::int? #t49 = self::Extension|get#property(#t48{self::Class}) in #t49 == null ?{core::int} let final core::int #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48{self::Class}, #t50) in #t50 : #t49{core::int});
+ self::expect(42, let final self::Class? #t52 = c in #t52 == null ?{core::int?} null : let final core::int? #t53 = self::Extension|get#property(#t52{self::Class}) in #t53 == null ?{core::int} let final core::int #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52{self::Class}, #t54) in #t54 : #t53{core::int});
+ let final self::Class? #t56 = c in #t56 == null ?{Null} null : self::Extension|set#property(#t56{self::Class}, null);
+ self::expect(null, let final self::Class? #t57 = c in #t57 == null ?{core::int?} null : self::Extension|get#property(#t57{self::Class}));
+ let final self::Class? #t58 = c in #t58 == null ?{core::int?} null : self::Extension|get#property(#t58{self::Class}) == null ?{core::int} self::Extension|set#property(#t58{self::Class}, 42) : null;
+ self::expect(42, let final self::Class? #t59 = c in #t59 == null ?{core::int?} null : self::Extension|get#property(#t59{self::Class}));
+ let final self::Class? #t60 = c in #t60 == null ?{core::int?} null : self::Extension|get#property(#t60{self::Class}) == null ?{core::int} self::Extension|set#property(#t60{self::Class}, 87) : null;
+ self::expect(42, let final self::Class? #t61 = c in #t61 == null ?{core::int?} null : self::Extension|get#property(#t61{self::Class}));
+ let final self::Class? #t62 = c in #t62 == null ?{Null} null : self::Extension|set#property(#t62{self::Class}, null);
+ let final self::Class? #t63 = c in #t63 == null ?{dynamic} null : self::Extension|testImplicitThis(#t63{self::Class});
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
+ throw "Mismatch: expected=${expected}, actual=${actual}";
+ }
+}
+
+
+Extra constant evaluation status:
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:19:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:19:29 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:20:29 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:20:29 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:33:30 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:33:30 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:34:43 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:34:43 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:42:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:42:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:45:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:45:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:46:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:46:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:50:30 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:50:30 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:51:30 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:51:30 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:53:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:53:30 -> NullConstant(null)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:61:41 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:61:41 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:62:41 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:62:41 -> IntConstant(87)
+Extra constant evaluation: evaluated: 399, effectively constant: 24
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart b/pkg/front_end/testcases/extensions/on_function_type.dart
index d7f1522..b3e30d2 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension<R, T> on R Function(T) {
Type get returnType => R;
Type get parameterType => T;
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline.expect
index ce9147e..7b1f078 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
extension<R, T> on R Function(T) {
Type get returnType => R;
Type get parameterType => T;
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline_modelled.expect
index b40bc01..d84ff38 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class<T extends Class<T>> {}
class Subclass extends Class<Subclass> {}
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.expect
index 7fd4a5b..1c1d9b9 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.expect
@@ -1,46 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends self::Class<self::Class::T*>* = self::Class<dynamic>*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::Class<self::Class::T> = self::Class<dynamic>> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class Subclass extends self::Class<self::Subclass*> {
- synthetic constructor •() → self::Subclass*
+class Subclass extends self::Class<self::Subclass> {
+ synthetic constructor •() → self::Subclass
: super self::Class::•()
;
}
-extension _extension#0<R extends core::Object* = dynamic, T extends core::Object* = dynamic> on (T*) →* R* {
+extension _extension#0<R extends core::Object? = dynamic, T extends core::Object? = dynamic> on (T%) → R% {
get returnType = self::_extension#0|get#returnType;
get parameterType = self::_extension#0|get#parameterType;
}
-extension _extension#1<T extends self::Class<T*>* = self::Class<dynamic>*> on <S extends T* = dynamic>(T*, S*) →* dynamic {
+extension _extension#1<T extends self::Class<T> = self::Class<dynamic>> on <S extends T = dynamic>(T, S) → dynamic {
get parameterType = self::_extension#1|get#parameterType;
}
-static method _extension#0|get#returnType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#returnType::T*) →* self::_extension#0|get#returnType::R* #this) → core::Type*
- return self::_extension#0|get#returnType::R*;
-static method _extension#0|get#parameterType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#parameterType::T*) →* self::_extension#0|get#parameterType::R* #this) → core::Type*
- return self::_extension#0|get#parameterType::T*;
-static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T*>* = self::Class<dynamic>*>(lowered final <S extends self::_extension#1|get#parameterType::T* = dynamic>(self::_extension#1|get#parameterType::T*, S*) →* dynamic #this) → core::Type*
- return self::_extension#1|get#parameterType::T*;
+static method _extension#0|get#returnType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#returnType::T%) → self::_extension#0|get#returnType::R% #this) → core::Type
+ return self::_extension#0|get#returnType::R%;
+static method _extension#0|get#parameterType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#parameterType::T%) → self::_extension#0|get#parameterType::R% #this) → core::Type
+ return self::_extension#0|get#parameterType::T%;
+static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T> = self::Class<dynamic>>(lowered final <S extends self::_extension#1|get#parameterType::T = dynamic>(self::_extension#1|get#parameterType::T, S) → dynamic #this) → core::Type
+ return self::_extension#1|get#parameterType::T;
static method main() → dynamic {
- function local1(core::int* i) → core::int*
+ function local1(core::int i) → core::int
return i;
- core::print(self::_extension#0|get#returnType<core::int*, core::int*>(local1));
- core::print(self::_extension#0|get#parameterType<core::int*, core::int*>(local1));
- function local2<S extends self::Subclass*>(self::Subclass* a, S* b) → self::Subclass*
+ core::print(self::_extension#0|get#returnType<core::int, core::int>(local1));
+ core::print(self::_extension#0|get#parameterType<core::int, core::int>(local1));
+ function local2<S extends self::Subclass>(self::Subclass a, S b) → self::Subclass
return a;
- core::print(self::_extension#1|get#parameterType<self::Subclass*>(local2));
+ core::print(self::_extension#1|get#parameterType<self::Subclass>(local2));
}
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.modular.expect
index 7fd4a5b..1c1d9b9 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.modular.expect
@@ -1,46 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends self::Class<self::Class::T*>* = self::Class<dynamic>*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::Class<self::Class::T> = self::Class<dynamic>> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class Subclass extends self::Class<self::Subclass*> {
- synthetic constructor •() → self::Subclass*
+class Subclass extends self::Class<self::Subclass> {
+ synthetic constructor •() → self::Subclass
: super self::Class::•()
;
}
-extension _extension#0<R extends core::Object* = dynamic, T extends core::Object* = dynamic> on (T*) →* R* {
+extension _extension#0<R extends core::Object? = dynamic, T extends core::Object? = dynamic> on (T%) → R% {
get returnType = self::_extension#0|get#returnType;
get parameterType = self::_extension#0|get#parameterType;
}
-extension _extension#1<T extends self::Class<T*>* = self::Class<dynamic>*> on <S extends T* = dynamic>(T*, S*) →* dynamic {
+extension _extension#1<T extends self::Class<T> = self::Class<dynamic>> on <S extends T = dynamic>(T, S) → dynamic {
get parameterType = self::_extension#1|get#parameterType;
}
-static method _extension#0|get#returnType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#returnType::T*) →* self::_extension#0|get#returnType::R* #this) → core::Type*
- return self::_extension#0|get#returnType::R*;
-static method _extension#0|get#parameterType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#parameterType::T*) →* self::_extension#0|get#parameterType::R* #this) → core::Type*
- return self::_extension#0|get#parameterType::T*;
-static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T*>* = self::Class<dynamic>*>(lowered final <S extends self::_extension#1|get#parameterType::T* = dynamic>(self::_extension#1|get#parameterType::T*, S*) →* dynamic #this) → core::Type*
- return self::_extension#1|get#parameterType::T*;
+static method _extension#0|get#returnType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#returnType::T%) → self::_extension#0|get#returnType::R% #this) → core::Type
+ return self::_extension#0|get#returnType::R%;
+static method _extension#0|get#parameterType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#parameterType::T%) → self::_extension#0|get#parameterType::R% #this) → core::Type
+ return self::_extension#0|get#parameterType::T%;
+static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T> = self::Class<dynamic>>(lowered final <S extends self::_extension#1|get#parameterType::T = dynamic>(self::_extension#1|get#parameterType::T, S) → dynamic #this) → core::Type
+ return self::_extension#1|get#parameterType::T;
static method main() → dynamic {
- function local1(core::int* i) → core::int*
+ function local1(core::int i) → core::int
return i;
- core::print(self::_extension#0|get#returnType<core::int*, core::int*>(local1));
- core::print(self::_extension#0|get#parameterType<core::int*, core::int*>(local1));
- function local2<S extends self::Subclass*>(self::Subclass* a, S* b) → self::Subclass*
+ core::print(self::_extension#0|get#returnType<core::int, core::int>(local1));
+ core::print(self::_extension#0|get#parameterType<core::int, core::int>(local1));
+ function local2<S extends self::Subclass>(self::Subclass a, S b) → self::Subclass
return a;
- core::print(self::_extension#1|get#parameterType<self::Subclass*>(local2));
+ core::print(self::_extension#1|get#parameterType<self::Subclass>(local2));
}
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.outline.expect
index 3447999..c49b6a0 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.outline.expect
@@ -1,37 +1,27 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends self::Class<self::Class::T*>* = self::Class<dynamic>*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
- ;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-}
-class Subclass extends self::Class<self::Subclass*> {
- synthetic constructor •() → self::Subclass*
+class Class<T extends self::Class<self::Class::T> = self::Class<dynamic>> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
;
}
-extension _extension#0<R extends core::Object* = dynamic, T extends core::Object* = dynamic> on (T*) →* R* {
+class Subclass extends self::Class<self::Subclass> {
+ synthetic constructor •() → self::Subclass
+ ;
+}
+extension _extension#0<R extends core::Object? = dynamic, T extends core::Object? = dynamic> on (T%) → R% {
get returnType = self::_extension#0|get#returnType;
get parameterType = self::_extension#0|get#parameterType;
}
-extension _extension#1<T extends self::Class<T*>* = self::Class<dynamic>*> on <S extends T* = dynamic>(T*, S*) →* dynamic {
+extension _extension#1<T extends self::Class<T> = self::Class<dynamic>> on <S extends T = dynamic>(T, S) → dynamic {
get parameterType = self::_extension#1|get#parameterType;
}
-static method _extension#0|get#returnType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#returnType::T*) →* self::_extension#0|get#returnType::R* #this) → core::Type*
+static method _extension#0|get#returnType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#returnType::T%) → self::_extension#0|get#returnType::R% #this) → core::Type
;
-static method _extension#0|get#parameterType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#parameterType::T*) →* self::_extension#0|get#parameterType::R* #this) → core::Type*
+static method _extension#0|get#parameterType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#parameterType::T%) → self::_extension#0|get#parameterType::R% #this) → core::Type
;
-static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T*>* = self::Class<dynamic>*>(lowered final <S extends self::_extension#1|get#parameterType::T* = dynamic>(self::_extension#1|get#parameterType::T*, S*) →* dynamic #this) → core::Type*
+static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T> = self::Class<dynamic>>(lowered final <S extends self::_extension#1|get#parameterType::T = dynamic>(self::_extension#1|get#parameterType::T, S) → dynamic #this) → core::Type
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.transformed.expect
index 7fd4a5b..1c1d9b9 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.weak.transformed.expect
@@ -1,46 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class Class<T extends self::Class<self::Class::T*>* = self::Class<dynamic>*> extends core::Object {
- synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::Class<self::Class::T> = self::Class<dynamic>> extends core::Object {
+ synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class Subclass extends self::Class<self::Subclass*> {
- synthetic constructor •() → self::Subclass*
+class Subclass extends self::Class<self::Subclass> {
+ synthetic constructor •() → self::Subclass
: super self::Class::•()
;
}
-extension _extension#0<R extends core::Object* = dynamic, T extends core::Object* = dynamic> on (T*) →* R* {
+extension _extension#0<R extends core::Object? = dynamic, T extends core::Object? = dynamic> on (T%) → R% {
get returnType = self::_extension#0|get#returnType;
get parameterType = self::_extension#0|get#parameterType;
}
-extension _extension#1<T extends self::Class<T*>* = self::Class<dynamic>*> on <S extends T* = dynamic>(T*, S*) →* dynamic {
+extension _extension#1<T extends self::Class<T> = self::Class<dynamic>> on <S extends T = dynamic>(T, S) → dynamic {
get parameterType = self::_extension#1|get#parameterType;
}
-static method _extension#0|get#returnType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#returnType::T*) →* self::_extension#0|get#returnType::R* #this) → core::Type*
- return self::_extension#0|get#returnType::R*;
-static method _extension#0|get#parameterType<R extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final (self::_extension#0|get#parameterType::T*) →* self::_extension#0|get#parameterType::R* #this) → core::Type*
- return self::_extension#0|get#parameterType::T*;
-static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T*>* = self::Class<dynamic>*>(lowered final <S extends self::_extension#1|get#parameterType::T* = dynamic>(self::_extension#1|get#parameterType::T*, S*) →* dynamic #this) → core::Type*
- return self::_extension#1|get#parameterType::T*;
+static method _extension#0|get#returnType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#returnType::T%) → self::_extension#0|get#returnType::R% #this) → core::Type
+ return self::_extension#0|get#returnType::R%;
+static method _extension#0|get#parameterType<R extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final (self::_extension#0|get#parameterType::T%) → self::_extension#0|get#parameterType::R% #this) → core::Type
+ return self::_extension#0|get#parameterType::T%;
+static method _extension#1|get#parameterType<T extends self::Class<self::_extension#1|get#parameterType::T> = self::Class<dynamic>>(lowered final <S extends self::_extension#1|get#parameterType::T = dynamic>(self::_extension#1|get#parameterType::T, S) → dynamic #this) → core::Type
+ return self::_extension#1|get#parameterType::T;
static method main() → dynamic {
- function local1(core::int* i) → core::int*
+ function local1(core::int i) → core::int
return i;
- core::print(self::_extension#0|get#returnType<core::int*, core::int*>(local1));
- core::print(self::_extension#0|get#parameterType<core::int*, core::int*>(local1));
- function local2<S extends self::Subclass*>(self::Subclass* a, S* b) → self::Subclass*
+ core::print(self::_extension#0|get#returnType<core::int, core::int>(local1));
+ core::print(self::_extension#0|get#parameterType<core::int, core::int>(local1));
+ function local2<S extends self::Subclass>(self::Subclass a, S b) → self::Subclass
return a;
- core::print(self::_extension#1|get#parameterType<self::Subclass*>(local2));
+ core::print(self::_extension#1|get#parameterType<self::Subclass>(local2));
}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference.dart b/pkg/front_end/testcases/extensions/on_type_inference.dart
index d2aaaf8..d81986c 100644
--- a/pkg/front_end/testcases/extensions/on_type_inference.dart
+++ b/pkg/front_end/testcases/extensions/on_type_inference.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
extension BestCom<T extends num> on Iterable<T> {
T best() => null;
}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart b/pkg/front_end/testcases/extensions/on_type_inference2.dart
new file mode 100644
index 0000000..cb372a0
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2019, 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.
+
+extension BestCom<T extends num> on Iterable<T>? {
+ T? best() => null;
+}
+
+extension BestList<T> on List<T> {
+ T? best() => null;
+}
+
+extension BestSpec on List<num> {
+ num? best() => null;
+}
+
+main() {
+ List<int>? x;
+ var v = x.best();
+ List<num>? y;
+ var w = y.best();
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/on_type_inference2.dart.textual_outline.expect
new file mode 100644
index 0000000..97b48a4
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart.textual_outline.expect
@@ -0,0 +1,13 @@
+extension BestCom<T extends num> on Iterable<T>? {
+ T? best() => null;
+}
+
+extension BestList<T> on List<T> {
+ T? best() => null;
+}
+
+extension BestSpec on List<num> {
+ num? best() => null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/on_type_inference2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..97b48a4
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart.textual_outline_modelled.expect
@@ -0,0 +1,13 @@
+extension BestCom<T extends num> on Iterable<T>? {
+ T? best() => null;
+}
+
+extension BestList<T> on List<T> {
+ T? best() => null;
+}
+
+extension BestSpec on List<num> {
+ num? best() => null;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.expect b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.expect
new file mode 100644
index 0000000..2d94479
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+extension BestCom<T extends core::num> on core::Iterable<T>? {
+ method best = self::BestCom|best;
+ tearoff best = self::BestCom|get#best;
+}
+extension BestList<T extends core::Object? = dynamic> on core::List<T%> {
+ method best = self::BestList|best;
+ tearoff best = self::BestList|get#best;
+}
+extension BestSpec on core::List<core::num> {
+ method best = self::BestSpec|best;
+ tearoff best = self::BestSpec|get#best;
+}
+static method BestCom|best<T extends core::num>(lowered final core::Iterable<self::BestCom|best::T>? #this) → self::BestCom|best::T?
+ return null;
+static method BestCom|get#best<T extends core::num>(lowered final core::Iterable<self::BestCom|get#best::T>? #this) → () → self::BestCom|get#best::T?
+ return () → self::BestCom|get#best::T? => self::BestCom|best<self::BestCom|get#best::T>(#this);
+static method BestList|best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|best::T%> #this) → self::BestList|best::T?
+ return null;
+static method BestList|get#best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|get#best::T%> #this) → () → self::BestList|get#best::T?
+ return () → self::BestList|get#best::T? => self::BestList|best<self::BestList|get#best::T%>(#this);
+static method BestSpec|best(lowered final core::List<core::num> #this) → core::num?
+ return null;
+static method BestSpec|get#best(lowered final core::List<core::num> #this) → () → core::num?
+ return () → core::num? => self::BestSpec|best(#this);
+static method main() → dynamic {
+ core::List<core::int>? x;
+ core::int? v = self::BestCom|best<core::int>(x);
+ core::List<core::num>? y;
+ core::num? w = self::BestCom|best<core::num>(y);
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.modular.expect
new file mode 100644
index 0000000..2d94479
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.modular.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+extension BestCom<T extends core::num> on core::Iterable<T>? {
+ method best = self::BestCom|best;
+ tearoff best = self::BestCom|get#best;
+}
+extension BestList<T extends core::Object? = dynamic> on core::List<T%> {
+ method best = self::BestList|best;
+ tearoff best = self::BestList|get#best;
+}
+extension BestSpec on core::List<core::num> {
+ method best = self::BestSpec|best;
+ tearoff best = self::BestSpec|get#best;
+}
+static method BestCom|best<T extends core::num>(lowered final core::Iterable<self::BestCom|best::T>? #this) → self::BestCom|best::T?
+ return null;
+static method BestCom|get#best<T extends core::num>(lowered final core::Iterable<self::BestCom|get#best::T>? #this) → () → self::BestCom|get#best::T?
+ return () → self::BestCom|get#best::T? => self::BestCom|best<self::BestCom|get#best::T>(#this);
+static method BestList|best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|best::T%> #this) → self::BestList|best::T?
+ return null;
+static method BestList|get#best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|get#best::T%> #this) → () → self::BestList|get#best::T?
+ return () → self::BestList|get#best::T? => self::BestList|best<self::BestList|get#best::T%>(#this);
+static method BestSpec|best(lowered final core::List<core::num> #this) → core::num?
+ return null;
+static method BestSpec|get#best(lowered final core::List<core::num> #this) → () → core::num?
+ return () → core::num? => self::BestSpec|best(#this);
+static method main() → dynamic {
+ core::List<core::int>? x;
+ core::int? v = self::BestCom|best<core::int>(x);
+ core::List<core::num>? y;
+ core::num? w = self::BestCom|best<core::num>(y);
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.outline.expect
new file mode 100644
index 0000000..12f465b
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.outline.expect
@@ -0,0 +1,30 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+extension BestCom<T extends core::num> on core::Iterable<T>? {
+ method best = self::BestCom|best;
+ tearoff best = self::BestCom|get#best;
+}
+extension BestList<T extends core::Object? = dynamic> on core::List<T%> {
+ method best = self::BestList|best;
+ tearoff best = self::BestList|get#best;
+}
+extension BestSpec on core::List<core::num> {
+ method best = self::BestSpec|best;
+ tearoff best = self::BestSpec|get#best;
+}
+static method BestCom|best<T extends core::num>(lowered final core::Iterable<self::BestCom|best::T>? #this) → self::BestCom|best::T?
+ ;
+static method BestCom|get#best<T extends core::num>(lowered final core::Iterable<self::BestCom|get#best::T>? #this) → () → self::BestCom|get#best::T?
+ return () → self::BestCom|get#best::T? => self::BestCom|best<self::BestCom|get#best::T>(#this);
+static method BestList|best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|best::T%> #this) → self::BestList|best::T?
+ ;
+static method BestList|get#best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|get#best::T%> #this) → () → self::BestList|get#best::T?
+ return () → self::BestList|get#best::T? => self::BestList|best<self::BestList|get#best::T%>(#this);
+static method BestSpec|best(lowered final core::List<core::num> #this) → core::num?
+ ;
+static method BestSpec|get#best(lowered final core::List<core::num> #this) → () → core::num?
+ return () → core::num? => self::BestSpec|best(#this);
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.transformed.expect
new file mode 100644
index 0000000..2d94479
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_inference2.dart.weak.transformed.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+extension BestCom<T extends core::num> on core::Iterable<T>? {
+ method best = self::BestCom|best;
+ tearoff best = self::BestCom|get#best;
+}
+extension BestList<T extends core::Object? = dynamic> on core::List<T%> {
+ method best = self::BestList|best;
+ tearoff best = self::BestList|get#best;
+}
+extension BestSpec on core::List<core::num> {
+ method best = self::BestSpec|best;
+ tearoff best = self::BestSpec|get#best;
+}
+static method BestCom|best<T extends core::num>(lowered final core::Iterable<self::BestCom|best::T>? #this) → self::BestCom|best::T?
+ return null;
+static method BestCom|get#best<T extends core::num>(lowered final core::Iterable<self::BestCom|get#best::T>? #this) → () → self::BestCom|get#best::T?
+ return () → self::BestCom|get#best::T? => self::BestCom|best<self::BestCom|get#best::T>(#this);
+static method BestList|best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|best::T%> #this) → self::BestList|best::T?
+ return null;
+static method BestList|get#best<T extends core::Object? = dynamic>(lowered final core::List<self::BestList|get#best::T%> #this) → () → self::BestList|get#best::T?
+ return () → self::BestList|get#best::T? => self::BestList|best<self::BestList|get#best::T%>(#this);
+static method BestSpec|best(lowered final core::List<core::num> #this) → core::num?
+ return null;
+static method BestSpec|get#best(lowered final core::List<core::num> #this) → () → core::num?
+ return () → core::num? => self::BestSpec|best(#this);
+static method main() → dynamic {
+ core::List<core::int>? x;
+ core::int? v = self::BestCom|best<core::int>(x);
+ core::List<core::num>? y;
+ core::num? w = self::BestCom|best<core::num>(y);
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart
index 513f153..a4920ec 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class Struct {}
class StructA extends Struct {}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.expect
index ea9e928..490ec18 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.expect
@@ -2,37 +2,37 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:44:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// nonStruct.method();
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
// nonStruct.property = nonStruct.property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
// nonStruct.property = nonStruct.property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// new NonStruct().method();
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:49:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
// new NonStruct().property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:50:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
// new NonStruct().property = null;
@@ -116,31 +116,31 @@
}
static method testNonStruct() → dynamic {
self::NonStruct* nonStruct;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:44:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
nonStruct.method();
^^^^^^" in nonStruct{<unresolved>}.method();
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
nonStruct.property = nonStruct.property;
- ^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ ^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
nonStruct.property = nonStruct.property;
^^^^^^^^" in nonStruct{<unresolved>}.property;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
new NonStruct().method();
^^^^^^" in new self::NonStruct::•(){<unresolved>}.method();
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:49:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
new NonStruct().property;
^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:50:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
new NonStruct().property = null;
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.modular.expect
index ea9e928..490ec18 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.modular.expect
@@ -2,37 +2,37 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:44:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// nonStruct.method();
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
// nonStruct.property = nonStruct.property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
// nonStruct.property = nonStruct.property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// new NonStruct().method();
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:49:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
// new NonStruct().property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:50:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
// new NonStruct().property = null;
@@ -116,31 +116,31 @@
}
static method testNonStruct() → dynamic {
self::NonStruct* nonStruct;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:44:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
nonStruct.method();
^^^^^^" in nonStruct{<unresolved>}.method();
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
nonStruct.property = nonStruct.property;
- ^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ ^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
nonStruct.property = nonStruct.property;
^^^^^^^^" in nonStruct{<unresolved>}.property;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
new NonStruct().method();
^^^^^^" in new self::NonStruct::•(){<unresolved>}.method();
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:49:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
new NonStruct().property;
^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:50:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
new NonStruct().property = null;
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.transformed.expect
index ea9e928..490ec18 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.weak.transformed.expect
@@ -2,37 +2,37 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:44:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// nonStruct.method();
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
// nonStruct.property = nonStruct.property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
// nonStruct.property = nonStruct.property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// new NonStruct().method();
// ^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:49:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
// new NonStruct().property;
// ^^^^^^^^
//
-// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// pkg/front_end/testcases/extensions/on_type_variable_inference.dart:50:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
// new NonStruct().property = null;
@@ -116,31 +116,31 @@
}
static method testNonStruct() → dynamic {
self::NonStruct* nonStruct;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:44:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
nonStruct.method();
^^^^^^" in nonStruct{<unresolved>}.method();
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
nonStruct.property = nonStruct.property;
- ^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:45:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ ^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
nonStruct.property = nonStruct.property;
^^^^^^^^" in nonStruct{<unresolved>}.property;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:46:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
new NonStruct().method();
^^^^^^" in new self::NonStruct::•(){<unresolved>}.method();
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:47:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:49:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
new NonStruct().property;
^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property;
- invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:48:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference.dart:50:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
- 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference.dart'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
new NonStruct().property = null;
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart
new file mode 100644
index 0000000..b1df269
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart
@@ -0,0 +1,64 @@
+// Copyright (c) 2019, 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 Struct {}
+
+class StructA extends Struct {}
+
+class StructB extends Struct {}
+
+class NonStruct {}
+
+extension Extension<T extends Struct?> on T {
+ T method() => this;
+ T get property => this;
+ void set property(T value) {}
+}
+
+main() {
+ Struct? struct;
+ StructA? structA;
+ StructB? structB;
+
+ struct.method();
+ struct.property = struct.property;
+ struct.property = structA.property;
+ struct.property = structB.property;
+ structA.method();
+ structA.property = structA.property;
+ structB.method();
+ structB.property = structB.property;
+
+ new Struct().method();
+ new Struct().property;
+ struct.property = null;
+ new StructA().method();
+ new StructA().property;
+ structA.property = null;
+ new StructB().method();
+ new StructB().property;
+ structB.property = null;
+}
+
+errors() {
+ Struct? struct;
+ StructA? structA;
+ StructB? structB;
+
+ structA.property = struct.property; // error
+ structB.property = struct.property; // error
+
+ new Struct().property = null; // error
+ new StructA().property = null; // error
+ new StructB().property = null; // error
+}
+
+testNonStruct() {
+ NonStruct nonStruct;
+ nonStruct.method(); // error
+ nonStruct.property = nonStruct.property; // error
+ new NonStruct().method(); // error
+ new NonStruct().property; // error
+ new NonStruct().property = null; // error
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.textual_outline.expect
new file mode 100644
index 0000000..3e1bb00
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.textual_outline.expect
@@ -0,0 +1,17 @@
+class Struct {}
+
+class StructA extends Struct {}
+
+class StructB extends Struct {}
+
+class NonStruct {}
+
+extension Extension<T extends Struct?> on T {
+ T method() => this;
+ T get property => this;
+ void set property(T value) {}
+}
+
+main() {}
+errors() {}
+testNonStruct() {}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..db89951
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.textual_outline_modelled.expect
@@ -0,0 +1,18 @@
+class NonStruct {}
+
+class Struct {}
+
+class StructA extends Struct {}
+
+class StructB extends Struct {}
+
+errors() {}
+
+extension Extension<T extends Struct?> on T {
+ T get property => this;
+ T method() => this;
+ void set property(T value) {}
+}
+
+main() {}
+testNonStruct() {}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.expect
new file mode 100644
index 0000000..929b404
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.expect
@@ -0,0 +1,202 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:49:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructA?'.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// structA.property = struct.property; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:50:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructB?'.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// structB.property = struct.property; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new Struct().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable.
+// - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new StructA().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable.
+// - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new StructB().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.method(); // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method'.
+// nonStruct.method(); // error
+// ^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:24: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:61:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method'.
+// new NonStruct().method(); // error
+// ^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:62:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+// new NonStruct().property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:63:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+// new NonStruct().property = null; // error
+// ^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Struct extends core::Object {
+ synthetic constructor •() → self::Struct
+ : super core::Object::•()
+ ;
+}
+class StructA extends self::Struct {
+ synthetic constructor •() → self::StructA
+ : super self::Struct::•()
+ ;
+}
+class StructB extends self::Struct {
+ synthetic constructor •() → self::StructB
+ : super self::Struct::•()
+ ;
+}
+class NonStruct extends core::Object {
+ synthetic constructor •() → self::NonStruct
+ : super core::Object::•()
+ ;
+}
+extension Extension<T extends self::Struct?> on T% {
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ get property = self::Extension|get#property;
+ set property = self::Extension|set#property;
+}
+static method Extension|method<T extends self::Struct?>(lowered final self::Extension|method::T% #this) → self::Extension|method::T%
+ return #this;
+static method Extension|get#method<T extends self::Struct?>(lowered final self::Extension|get#method::T% #this) → () → self::Extension|get#method::T%
+ return () → self::Extension|get#method::T% => self::Extension|method<self::Extension|get#method::T%>(#this);
+static method Extension|get#property<T extends self::Struct?>(lowered final self::Extension|get#property::T% #this) → self::Extension|get#property::T%
+ return #this;
+static method Extension|set#property<T extends self::Struct?>(lowered final self::Extension|set#property::T% #this, self::Extension|set#property::T% value) → void {}
+static method main() → dynamic {
+ self::Struct? struct;
+ self::StructA? structA;
+ self::StructB? structB;
+ self::Extension|method<self::Struct?>(struct);
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::Struct?>(struct));
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::StructA?>(structA));
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::StructB?>(structB));
+ self::Extension|method<self::StructA?>(structA);
+ self::Extension|set#property<self::StructA?>(structA, self::Extension|get#property<self::StructA?>(structA));
+ self::Extension|method<self::StructB?>(structB);
+ self::Extension|set#property<self::StructB?>(structB, self::Extension|get#property<self::StructB?>(structB));
+ self::Extension|method<self::Struct>(new self::Struct::•());
+ self::Extension|get#property<self::Struct>(new self::Struct::•());
+ self::Extension|set#property<self::Struct?>(struct, null);
+ self::Extension|method<self::StructA>(new self::StructA::•());
+ self::Extension|get#property<self::StructA>(new self::StructA::•());
+ self::Extension|set#property<self::StructA?>(structA, null);
+ self::Extension|method<self::StructB>(new self::StructB::•());
+ self::Extension|get#property<self::StructB>(new self::StructB::•());
+ self::Extension|set#property<self::StructB?>(structB, null);
+}
+static method errors() → dynamic {
+ self::Struct? struct;
+ self::StructA? structA;
+ self::StructB? structB;
+ self::Extension|set#property<self::StructA?>(structA, invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:49:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructA?'.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ structA.property = struct.property; // error
+ ^" in self::Extension|get#property<self::Struct?>(struct) as{TypeError,ForNonNullableByDefault} self::StructA?);
+ self::Extension|set#property<self::StructB?>(structB, invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:50:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructB?'.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ structB.property = struct.property; // error
+ ^" in self::Extension|get#property<self::Struct?>(struct) as{TypeError,ForNonNullableByDefault} self::StructB?);
+ self::Extension|set#property<self::Struct>(new self::Struct::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new Struct().property = null; // error
+ ^" in null as{TypeError,ForNonNullableByDefault} self::Struct);
+ self::Extension|set#property<self::StructA>(new self::StructA::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable.
+ - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new StructA().property = null; // error
+ ^" in null as{TypeError,ForNonNullableByDefault} self::StructA);
+ self::Extension|set#property<self::StructB>(new self::StructB::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable.
+ - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new StructB().property = null; // error
+ ^" in null as{TypeError,ForNonNullableByDefault} self::StructB);
+}
+static method testNonStruct() → dynamic {
+ self::NonStruct nonStruct;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method'.
+ nonStruct.method(); // error
+ ^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.method(); // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.method();
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:24: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.property;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:61:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method'.
+ new NonStruct().method(); // error
+ ^^^^^^" in new self::NonStruct::•(){<unresolved>}.method();
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:62:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+ new NonStruct().property; // error
+ ^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:63:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+ new NonStruct().property = null; // error
+ ^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property = null;
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.modular.expect
new file mode 100644
index 0000000..929b404
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.modular.expect
@@ -0,0 +1,202 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:49:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructA?'.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// structA.property = struct.property; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:50:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructB?'.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// structB.property = struct.property; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new Struct().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable.
+// - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new StructA().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable.
+// - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new StructB().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.method(); // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method'.
+// nonStruct.method(); // error
+// ^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:24: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:61:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method'.
+// new NonStruct().method(); // error
+// ^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:62:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+// new NonStruct().property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:63:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+// new NonStruct().property = null; // error
+// ^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Struct extends core::Object {
+ synthetic constructor •() → self::Struct
+ : super core::Object::•()
+ ;
+}
+class StructA extends self::Struct {
+ synthetic constructor •() → self::StructA
+ : super self::Struct::•()
+ ;
+}
+class StructB extends self::Struct {
+ synthetic constructor •() → self::StructB
+ : super self::Struct::•()
+ ;
+}
+class NonStruct extends core::Object {
+ synthetic constructor •() → self::NonStruct
+ : super core::Object::•()
+ ;
+}
+extension Extension<T extends self::Struct?> on T% {
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ get property = self::Extension|get#property;
+ set property = self::Extension|set#property;
+}
+static method Extension|method<T extends self::Struct?>(lowered final self::Extension|method::T% #this) → self::Extension|method::T%
+ return #this;
+static method Extension|get#method<T extends self::Struct?>(lowered final self::Extension|get#method::T% #this) → () → self::Extension|get#method::T%
+ return () → self::Extension|get#method::T% => self::Extension|method<self::Extension|get#method::T%>(#this);
+static method Extension|get#property<T extends self::Struct?>(lowered final self::Extension|get#property::T% #this) → self::Extension|get#property::T%
+ return #this;
+static method Extension|set#property<T extends self::Struct?>(lowered final self::Extension|set#property::T% #this, self::Extension|set#property::T% value) → void {}
+static method main() → dynamic {
+ self::Struct? struct;
+ self::StructA? structA;
+ self::StructB? structB;
+ self::Extension|method<self::Struct?>(struct);
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::Struct?>(struct));
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::StructA?>(structA));
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::StructB?>(structB));
+ self::Extension|method<self::StructA?>(structA);
+ self::Extension|set#property<self::StructA?>(structA, self::Extension|get#property<self::StructA?>(structA));
+ self::Extension|method<self::StructB?>(structB);
+ self::Extension|set#property<self::StructB?>(structB, self::Extension|get#property<self::StructB?>(structB));
+ self::Extension|method<self::Struct>(new self::Struct::•());
+ self::Extension|get#property<self::Struct>(new self::Struct::•());
+ self::Extension|set#property<self::Struct?>(struct, null);
+ self::Extension|method<self::StructA>(new self::StructA::•());
+ self::Extension|get#property<self::StructA>(new self::StructA::•());
+ self::Extension|set#property<self::StructA?>(structA, null);
+ self::Extension|method<self::StructB>(new self::StructB::•());
+ self::Extension|get#property<self::StructB>(new self::StructB::•());
+ self::Extension|set#property<self::StructB?>(structB, null);
+}
+static method errors() → dynamic {
+ self::Struct? struct;
+ self::StructA? structA;
+ self::StructB? structB;
+ self::Extension|set#property<self::StructA?>(structA, invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:49:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructA?'.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ structA.property = struct.property; // error
+ ^" in self::Extension|get#property<self::Struct?>(struct) as{TypeError,ForNonNullableByDefault} self::StructA?);
+ self::Extension|set#property<self::StructB?>(structB, invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:50:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructB?'.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ structB.property = struct.property; // error
+ ^" in self::Extension|get#property<self::Struct?>(struct) as{TypeError,ForNonNullableByDefault} self::StructB?);
+ self::Extension|set#property<self::Struct>(new self::Struct::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new Struct().property = null; // error
+ ^" in null as{TypeError,ForNonNullableByDefault} self::Struct);
+ self::Extension|set#property<self::StructA>(new self::StructA::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable.
+ - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new StructA().property = null; // error
+ ^" in null as{TypeError,ForNonNullableByDefault} self::StructA);
+ self::Extension|set#property<self::StructB>(new self::StructB::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable.
+ - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new StructB().property = null; // error
+ ^" in null as{TypeError,ForNonNullableByDefault} self::StructB);
+}
+static method testNonStruct() → dynamic {
+ self::NonStruct nonStruct;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method'.
+ nonStruct.method(); // error
+ ^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.method(); // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.method();
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:24: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.property;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:61:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method'.
+ new NonStruct().method(); // error
+ ^^^^^^" in new self::NonStruct::•(){<unresolved>}.method();
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:62:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+ new NonStruct().property; // error
+ ^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:63:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+ new NonStruct().property = null; // error
+ ^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property = null;
+}
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.outline.expect
new file mode 100644
index 0000000..ece84fa
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.outline.expect
@@ -0,0 +1,40 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Struct extends core::Object {
+ synthetic constructor •() → self::Struct
+ ;
+}
+class StructA extends self::Struct {
+ synthetic constructor •() → self::StructA
+ ;
+}
+class StructB extends self::Struct {
+ synthetic constructor •() → self::StructB
+ ;
+}
+class NonStruct extends core::Object {
+ synthetic constructor •() → self::NonStruct
+ ;
+}
+extension Extension<T extends self::Struct?> on T% {
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ get property = self::Extension|get#property;
+ set property = self::Extension|set#property;
+}
+static method Extension|method<T extends self::Struct?>(lowered final self::Extension|method::T% #this) → self::Extension|method::T%
+ ;
+static method Extension|get#method<T extends self::Struct?>(lowered final self::Extension|get#method::T% #this) → () → self::Extension|get#method::T%
+ return () → self::Extension|get#method::T% => self::Extension|method<self::Extension|get#method::T%>(#this);
+static method Extension|get#property<T extends self::Struct?>(lowered final self::Extension|get#property::T% #this) → self::Extension|get#property::T%
+ ;
+static method Extension|set#property<T extends self::Struct?>(lowered final self::Extension|set#property::T% #this, self::Extension|set#property::T% value) → void
+ ;
+static method main() → dynamic
+ ;
+static method errors() → dynamic
+ ;
+static method testNonStruct() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect
new file mode 100644
index 0000000..d60080b
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect
@@ -0,0 +1,202 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:49:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructA?'.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// structA.property = struct.property; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:50:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructB?'.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// structB.property = struct.property; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable.
+// - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new Struct().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable.
+// - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new StructA().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable.
+// - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// new StructB().property = null; // error
+// ^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.method(); // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method'.
+// nonStruct.method(); // error
+// ^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:24: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+// nonStruct.property = nonStruct.property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:61:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method'.
+// new NonStruct().method(); // error
+// ^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:62:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+// new NonStruct().property; // error
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:63:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+// - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+// new NonStruct().property = null; // error
+// ^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Struct extends core::Object {
+ synthetic constructor •() → self::Struct
+ : super core::Object::•()
+ ;
+}
+class StructA extends self::Struct {
+ synthetic constructor •() → self::StructA
+ : super self::Struct::•()
+ ;
+}
+class StructB extends self::Struct {
+ synthetic constructor •() → self::StructB
+ : super self::Struct::•()
+ ;
+}
+class NonStruct extends core::Object {
+ synthetic constructor •() → self::NonStruct
+ : super core::Object::•()
+ ;
+}
+extension Extension<T extends self::Struct?> on T% {
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ get property = self::Extension|get#property;
+ set property = self::Extension|set#property;
+}
+static method Extension|method<T extends self::Struct?>(lowered final self::Extension|method::T% #this) → self::Extension|method::T%
+ return #this;
+static method Extension|get#method<T extends self::Struct?>(lowered final self::Extension|get#method::T% #this) → () → self::Extension|get#method::T%
+ return () → self::Extension|get#method::T% => self::Extension|method<self::Extension|get#method::T%>(#this);
+static method Extension|get#property<T extends self::Struct?>(lowered final self::Extension|get#property::T% #this) → self::Extension|get#property::T%
+ return #this;
+static method Extension|set#property<T extends self::Struct?>(lowered final self::Extension|set#property::T% #this, self::Extension|set#property::T% value) → void {}
+static method main() → dynamic {
+ self::Struct? struct;
+ self::StructA? structA;
+ self::StructB? structB;
+ self::Extension|method<self::Struct?>(struct);
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::Struct?>(struct));
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::StructA?>(structA));
+ self::Extension|set#property<self::Struct?>(struct, self::Extension|get#property<self::StructB?>(structB));
+ self::Extension|method<self::StructA?>(structA);
+ self::Extension|set#property<self::StructA?>(structA, self::Extension|get#property<self::StructA?>(structA));
+ self::Extension|method<self::StructB?>(structB);
+ self::Extension|set#property<self::StructB?>(structB, self::Extension|get#property<self::StructB?>(structB));
+ self::Extension|method<self::Struct>(new self::Struct::•());
+ self::Extension|get#property<self::Struct>(new self::Struct::•());
+ self::Extension|set#property<self::Struct?>(struct, null);
+ self::Extension|method<self::StructA>(new self::StructA::•());
+ self::Extension|get#property<self::StructA>(new self::StructA::•());
+ self::Extension|set#property<self::StructA?>(structA, null);
+ self::Extension|method<self::StructB>(new self::StructB::•());
+ self::Extension|get#property<self::StructB>(new self::StructB::•());
+ self::Extension|set#property<self::StructB?>(structB, null);
+}
+static method errors() → dynamic {
+ self::Struct? struct;
+ self::StructA? structA;
+ self::StructB? structB;
+ self::Extension|set#property<self::StructA?>(structA, invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:49:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructA?'.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ structA.property = struct.property; // error
+ ^" in self::Extension|get#property<self::Struct?>(struct) as{TypeError,ForNonNullableByDefault} self::StructA?);
+ self::Extension|set#property<self::StructB?>(structB, invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:50:29: Error: A value of type 'Struct?' can't be assigned to a variable of type 'StructB?'.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ structB.property = struct.property; // error
+ ^" in self::Extension|get#property<self::Struct?>(struct) as{TypeError,ForNonNullableByDefault} self::StructB?);
+ self::Extension|set#property<self::Struct>(new self::Struct::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable.
+ - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new Struct().property = null; // error
+ ^" in null);
+ self::Extension|set#property<self::StructA>(new self::StructA::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable.
+ - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new StructA().property = null; // error
+ ^" in null);
+ self::Extension|set#property<self::StructB>(new self::StructB::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable.
+ - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+ new StructB().property = null; // error
+ ^" in null);
+}
+static method testNonStruct() → dynamic {
+ self::NonStruct nonStruct;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:13: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method'.
+ nonStruct.method(); // error
+ ^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:59:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.method(); // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.method();
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:13: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:3: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.property = invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:34: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^" in invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:60:24: Error: Non-nullable variable 'nonStruct' must be assigned before it can be used.
+ nonStruct.property = nonStruct.property; // error
+ ^^^^^^^^^" in nonStruct{<unresolved>}.property;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:61:19: Error: The method 'method' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method'.
+ new NonStruct().method(); // error
+ ^^^^^^" in new self::NonStruct::•(){<unresolved>}.method();
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:62:19: Error: The getter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
+ new NonStruct().property; // error
+ ^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property;
+ invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:63:19: Error: The setter 'property' isn't defined for the class 'NonStruct'.
+ - 'NonStruct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
+ new NonStruct().property = null; // error
+ ^^^^^^^^" in new self::NonStruct::•(){<unresolved>}.property = null;
+}
diff --git a/pkg/front_end/testcases/extensions/operators.dart b/pkg/front_end/testcases/extensions/operators.dart
index 8e50810..17d5e27 100644
--- a/pkg/front_end/testcases/extensions/operators.dart
+++ b/pkg/front_end/testcases/extensions/operators.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Complex {
final double real;
final double imaginary;
diff --git a/pkg/front_end/testcases/extensions/operators.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/operators.dart.textual_outline.expect
index 3242e21..908102a 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Complex {
final double real;
final double imaginary;
diff --git a/pkg/front_end/testcases/extensions/operators.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/operators.dart.textual_outline_modelled.expect
index a7a65c6..d77488d 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Complex {
Complex add(Complex other) {}
Complex negate() {}
diff --git a/pkg/front_end/testcases/extensions/operators.dart.weak.expect b/pkg/front_end/testcases/extensions/operators.dart.weak.expect
index d97d9f4..7ee87a4 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -14,58 +14,51 @@
import "dart:core" as core;
class Complex extends core::Object /*hasConstConstructor*/ {
- final field core::double* real;
- final field core::double* imaginary;
- const constructor •(core::double* real, core::double* imaginary) → self::Complex*
+ final field core::double real;
+ final field core::double imaginary;
+ const constructor •(core::double real, core::double imaginary) → self::Complex
: self::Complex::real = real, self::Complex::imaginary = imaginary, super core::Object::•()
;
- method add(self::Complex* other) → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::+}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::+}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+ method add(self::Complex other) → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::+}(other.{self::Complex::real}{core::double}){(core::num) → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::+}(other.{self::Complex::imaginary}{core::double}){(core::num) → core::double});
}
- method sub(self::Complex* other) → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::-}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::-}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+ method sub(self::Complex other) → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::-}(other.{self::Complex::real}{core::double}){(core::num) → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::-}(other.{self::Complex::imaginary}{core::double}){(core::num) → core::double});
}
- method negate() → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::unary-}(){() →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::unary-}(){() →* core::double*});
+ method negate() → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::unary-}(){() → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::unary-}(){() → core::double});
}
- get hashCode() → core::int*
- return this.{self::Complex::real}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(13){(core::num*) →* core::int*}.{core::num::+}(this.{self::Complex::imaginary}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(19){(core::num*) →* core::int*}){(core::num*) →* core::int*};
- operator ==(core::Object* other) → core::bool* {
+ get hashCode() → core::int
+ return this.{self::Complex::real}{core::double}.{core::num::hashCode}{core::int}.{core::num::*}(13){(core::num) → core::int}.{core::num::+}(this.{self::Complex::imaginary}{core::double}.{core::num::hashCode}{core::int}.{core::num::*}(19){(core::num) → core::int}){(core::num) → core::int};
+ operator ==(core::Object other) → core::bool {
if(core::identical(this, other))
return true;
- return other is self::Complex* && this.{self::Complex::real}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::real}{core::double*} && this.{self::Complex::imaginary}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::imaginary}{core::double*};
+ return other is{ForNonNullableByDefault} self::Complex && this.{self::Complex::real}{core::double} =={core::num::==}{(core::Object) → core::bool} other{self::Complex}.{self::Complex::real}{core::double} && this.{self::Complex::imaginary}{core::double} =={core::num::==}{(core::Object) → core::bool} other{self::Complex}.{self::Complex::imaginary}{core::double};
}
- method toString() → core::String*
- return "Complex(${this.{self::Complex::real}{core::double*}},${this.{self::Complex::imaginary}{core::double*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Complex(${this.{self::Complex::real}{core::double}},${this.{self::Complex::imaginary}{core::double}})";
}
-extension Operators on self::Complex* {
+extension Operators on self::Complex {
operator + = self::Operators|+;
operator - = self::Operators|-;
operator unary- = self::Operators|unary-;
}
-static method Operators|+(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
- return #this.{self::Complex::add}(other){(self::Complex*) →* self::Complex*};
-static method Operators|-(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
- return #this.{self::Complex::sub}(other){(self::Complex*) →* self::Complex*};
-static method Operators|unary-(lowered final self::Complex* #this) → self::Complex*
- return #this.{self::Complex::negate}(){() →* self::Complex*};
+static method Operators|+(lowered final self::Complex #this, self::Complex other) → self::Complex
+ return #this.{self::Complex::add}(other){(self::Complex) → self::Complex};
+static method Operators|-(lowered final self::Complex #this, self::Complex other) → self::Complex
+ return #this.{self::Complex::sub}(other){(self::Complex) → self::Complex};
+static method Operators|unary-(lowered final self::Complex #this) → self::Complex
+ return #this.{self::Complex::negate}(){() → self::Complex};
static method main() → dynamic {
self::implicit();
self::explicit();
}
static method implicit() → dynamic {
- self::Complex* c_m2 = new self::Complex::•(-2.0, 2.0);
- self::Complex* c_m1 = new self::Complex::•(-1.0, 1.0);
- self::Complex* c0 = new self::Complex::•(0.0, 0.0);
- self::Complex* c1 = new self::Complex::•(1.0, -1.0);
- self::Complex* c2 = new self::Complex::•(2.0, -2.0);
+ self::Complex c_m2 = new self::Complex::•(-2.0, 2.0);
+ self::Complex c_m1 = new self::Complex::•(-1.0, 1.0);
+ self::Complex c0 = new self::Complex::•(0.0, 0.0);
+ self::Complex c1 = new self::Complex::•(1.0, -1.0);
+ self::Complex c2 = new self::Complex::•(2.0, -2.0);
self::expect(c_m2, self::Operators|+(c0, c_m2));
self::expect(c_m2, self::Operators|+(c_m2, c0));
self::expect(c_m2, self::Operators|+(c_m1, c_m1));
@@ -97,11 +90,11 @@
self::expect(c0, self::Operators|unary-(c0));
}
static method explicit() → dynamic {
- self::Complex* c_m2 = new self::Complex::•(-2.0, 2.0);
- self::Complex* c_m1 = new self::Complex::•(-1.0, 1.0);
- self::Complex* c0 = new self::Complex::•(0.0, 0.0);
- self::Complex* c1 = new self::Complex::•(1.0, -1.0);
- self::Complex* c2 = new self::Complex::•(2.0, -2.0);
+ self::Complex c_m2 = new self::Complex::•(-2.0, 2.0);
+ self::Complex c_m1 = new self::Complex::•(-1.0, 1.0);
+ self::Complex c0 = new self::Complex::•(0.0, 0.0);
+ self::Complex c1 = new self::Complex::•(1.0, -1.0);
+ self::Complex c2 = new self::Complex::•(2.0, -2.0);
self::expect(c_m2, self::Operators|+(c0, c_m2));
self::expect(c_m2, self::Operators|+(c_m2, c0));
self::expect(c_m2, self::Operators|+(c_m1, c_m1));
@@ -132,16 +125,16 @@
self::expect(c0, self::Operators|-(c_m2, c_m2));
self::expect(c0, self::Operators|unary-(c0));
}
-static method errors(self::Complex* c) → void {
+static method errors(self::Complex c) → void {
invalid-expression "pkg/front_end/testcases/extensions/operators.dart:125:3: Error: Explicit extension application cannot be used as an expression.
Operators(c) == c;
- ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c;
+ ^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} c;
!(invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
Operators(c) != c;
- ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c);
+ ^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} c);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/operators.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/operators.dart.weak.modular.expect
index d97d9f4..7ee87a4 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -14,58 +14,51 @@
import "dart:core" as core;
class Complex extends core::Object /*hasConstConstructor*/ {
- final field core::double* real;
- final field core::double* imaginary;
- const constructor •(core::double* real, core::double* imaginary) → self::Complex*
+ final field core::double real;
+ final field core::double imaginary;
+ const constructor •(core::double real, core::double imaginary) → self::Complex
: self::Complex::real = real, self::Complex::imaginary = imaginary, super core::Object::•()
;
- method add(self::Complex* other) → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::+}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::+}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+ method add(self::Complex other) → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::+}(other.{self::Complex::real}{core::double}){(core::num) → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::+}(other.{self::Complex::imaginary}{core::double}){(core::num) → core::double});
}
- method sub(self::Complex* other) → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::-}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::-}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+ method sub(self::Complex other) → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::-}(other.{self::Complex::real}{core::double}){(core::num) → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::-}(other.{self::Complex::imaginary}{core::double}){(core::num) → core::double});
}
- method negate() → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::unary-}(){() →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::unary-}(){() →* core::double*});
+ method negate() → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::unary-}(){() → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::unary-}(){() → core::double});
}
- get hashCode() → core::int*
- return this.{self::Complex::real}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(13){(core::num*) →* core::int*}.{core::num::+}(this.{self::Complex::imaginary}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(19){(core::num*) →* core::int*}){(core::num*) →* core::int*};
- operator ==(core::Object* other) → core::bool* {
+ get hashCode() → core::int
+ return this.{self::Complex::real}{core::double}.{core::num::hashCode}{core::int}.{core::num::*}(13){(core::num) → core::int}.{core::num::+}(this.{self::Complex::imaginary}{core::double}.{core::num::hashCode}{core::int}.{core::num::*}(19){(core::num) → core::int}){(core::num) → core::int};
+ operator ==(core::Object other) → core::bool {
if(core::identical(this, other))
return true;
- return other is self::Complex* && this.{self::Complex::real}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::real}{core::double*} && this.{self::Complex::imaginary}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::imaginary}{core::double*};
+ return other is{ForNonNullableByDefault} self::Complex && this.{self::Complex::real}{core::double} =={core::num::==}{(core::Object) → core::bool} other{self::Complex}.{self::Complex::real}{core::double} && this.{self::Complex::imaginary}{core::double} =={core::num::==}{(core::Object) → core::bool} other{self::Complex}.{self::Complex::imaginary}{core::double};
}
- method toString() → core::String*
- return "Complex(${this.{self::Complex::real}{core::double*}},${this.{self::Complex::imaginary}{core::double*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Complex(${this.{self::Complex::real}{core::double}},${this.{self::Complex::imaginary}{core::double}})";
}
-extension Operators on self::Complex* {
+extension Operators on self::Complex {
operator + = self::Operators|+;
operator - = self::Operators|-;
operator unary- = self::Operators|unary-;
}
-static method Operators|+(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
- return #this.{self::Complex::add}(other){(self::Complex*) →* self::Complex*};
-static method Operators|-(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
- return #this.{self::Complex::sub}(other){(self::Complex*) →* self::Complex*};
-static method Operators|unary-(lowered final self::Complex* #this) → self::Complex*
- return #this.{self::Complex::negate}(){() →* self::Complex*};
+static method Operators|+(lowered final self::Complex #this, self::Complex other) → self::Complex
+ return #this.{self::Complex::add}(other){(self::Complex) → self::Complex};
+static method Operators|-(lowered final self::Complex #this, self::Complex other) → self::Complex
+ return #this.{self::Complex::sub}(other){(self::Complex) → self::Complex};
+static method Operators|unary-(lowered final self::Complex #this) → self::Complex
+ return #this.{self::Complex::negate}(){() → self::Complex};
static method main() → dynamic {
self::implicit();
self::explicit();
}
static method implicit() → dynamic {
- self::Complex* c_m2 = new self::Complex::•(-2.0, 2.0);
- self::Complex* c_m1 = new self::Complex::•(-1.0, 1.0);
- self::Complex* c0 = new self::Complex::•(0.0, 0.0);
- self::Complex* c1 = new self::Complex::•(1.0, -1.0);
- self::Complex* c2 = new self::Complex::•(2.0, -2.0);
+ self::Complex c_m2 = new self::Complex::•(-2.0, 2.0);
+ self::Complex c_m1 = new self::Complex::•(-1.0, 1.0);
+ self::Complex c0 = new self::Complex::•(0.0, 0.0);
+ self::Complex c1 = new self::Complex::•(1.0, -1.0);
+ self::Complex c2 = new self::Complex::•(2.0, -2.0);
self::expect(c_m2, self::Operators|+(c0, c_m2));
self::expect(c_m2, self::Operators|+(c_m2, c0));
self::expect(c_m2, self::Operators|+(c_m1, c_m1));
@@ -97,11 +90,11 @@
self::expect(c0, self::Operators|unary-(c0));
}
static method explicit() → dynamic {
- self::Complex* c_m2 = new self::Complex::•(-2.0, 2.0);
- self::Complex* c_m1 = new self::Complex::•(-1.0, 1.0);
- self::Complex* c0 = new self::Complex::•(0.0, 0.0);
- self::Complex* c1 = new self::Complex::•(1.0, -1.0);
- self::Complex* c2 = new self::Complex::•(2.0, -2.0);
+ self::Complex c_m2 = new self::Complex::•(-2.0, 2.0);
+ self::Complex c_m1 = new self::Complex::•(-1.0, 1.0);
+ self::Complex c0 = new self::Complex::•(0.0, 0.0);
+ self::Complex c1 = new self::Complex::•(1.0, -1.0);
+ self::Complex c2 = new self::Complex::•(2.0, -2.0);
self::expect(c_m2, self::Operators|+(c0, c_m2));
self::expect(c_m2, self::Operators|+(c_m2, c0));
self::expect(c_m2, self::Operators|+(c_m1, c_m1));
@@ -132,16 +125,16 @@
self::expect(c0, self::Operators|-(c_m2, c_m2));
self::expect(c0, self::Operators|unary-(c0));
}
-static method errors(self::Complex* c) → void {
+static method errors(self::Complex c) → void {
invalid-expression "pkg/front_end/testcases/extensions/operators.dart:125:3: Error: Explicit extension application cannot be used as an expression.
Operators(c) == c;
- ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c;
+ ^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} c;
!(invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
Operators(c) != c;
- ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c);
+ ^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} c);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/operators.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/operators.dart.weak.outline.expect
index 479c1d6..75596b2 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.weak.outline.expect
@@ -1,43 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Complex extends core::Object /*hasConstConstructor*/ {
- final field core::double* real;
- final field core::double* imaginary;
- const constructor •(core::double* real, core::double* imaginary) → self::Complex*
+ final field core::double real;
+ final field core::double imaginary;
+ const constructor •(core::double real, core::double imaginary) → self::Complex
: self::Complex::real = real, self::Complex::imaginary = imaginary, super core::Object::•()
;
- method add(self::Complex* other) → self::Complex*
+ method add(self::Complex other) → self::Complex
;
- method sub(self::Complex* other) → self::Complex*
+ method sub(self::Complex other) → self::Complex
;
- method negate() → self::Complex*
+ method negate() → self::Complex
;
- get hashCode() → core::int*
+ get hashCode() → core::int
;
- operator ==(core::Object* other) → core::bool*
+ operator ==(core::Object other) → core::bool
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Operators on self::Complex* {
+extension Operators on self::Complex {
operator + = self::Operators|+;
operator - = self::Operators|-;
operator unary- = self::Operators|unary-;
}
-static method Operators|+(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
+static method Operators|+(lowered final self::Complex #this, self::Complex other) → self::Complex
;
-static method Operators|-(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
+static method Operators|-(lowered final self::Complex #this, self::Complex other) → self::Complex
;
-static method Operators|unary-(lowered final self::Complex* #this) → self::Complex*
+static method Operators|unary-(lowered final self::Complex #this) → self::Complex
;
static method main() → dynamic
;
@@ -45,7 +38,7 @@
;
static method explicit() → dynamic
;
-static method errors(self::Complex* c) → void
+static method errors(self::Complex c) → void
;
static method expect(dynamic expected, dynamic actual) → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect
index d97d9f4..7ee87a4 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -14,58 +14,51 @@
import "dart:core" as core;
class Complex extends core::Object /*hasConstConstructor*/ {
- final field core::double* real;
- final field core::double* imaginary;
- const constructor •(core::double* real, core::double* imaginary) → self::Complex*
+ final field core::double real;
+ final field core::double imaginary;
+ const constructor •(core::double real, core::double imaginary) → self::Complex
: self::Complex::real = real, self::Complex::imaginary = imaginary, super core::Object::•()
;
- method add(self::Complex* other) → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::+}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::+}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+ method add(self::Complex other) → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::+}(other.{self::Complex::real}{core::double}){(core::num) → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::+}(other.{self::Complex::imaginary}{core::double}){(core::num) → core::double});
}
- method sub(self::Complex* other) → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::-}(other.{self::Complex::real}{core::double*}){(core::num*) →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::-}(other.{self::Complex::imaginary}{core::double*}){(core::num*) →* core::double*});
+ method sub(self::Complex other) → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::-}(other.{self::Complex::real}{core::double}){(core::num) → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::-}(other.{self::Complex::imaginary}{core::double}){(core::num) → core::double});
}
- method negate() → self::Complex* {
- return new self::Complex::•(this.{self::Complex::real}{core::double*}.{core::double::unary-}(){() →* core::double*}, this.{self::Complex::imaginary}{core::double*}.{core::double::unary-}(){() →* core::double*});
+ method negate() → self::Complex {
+ return new self::Complex::•(this.{self::Complex::real}{core::double}.{core::double::unary-}(){() → core::double}, this.{self::Complex::imaginary}{core::double}.{core::double::unary-}(){() → core::double});
}
- get hashCode() → core::int*
- return this.{self::Complex::real}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(13){(core::num*) →* core::int*}.{core::num::+}(this.{self::Complex::imaginary}{core::double*}.{core::num::hashCode}{core::int*}.{core::num::*}(19){(core::num*) →* core::int*}){(core::num*) →* core::int*};
- operator ==(core::Object* other) → core::bool* {
+ get hashCode() → core::int
+ return this.{self::Complex::real}{core::double}.{core::num::hashCode}{core::int}.{core::num::*}(13){(core::num) → core::int}.{core::num::+}(this.{self::Complex::imaginary}{core::double}.{core::num::hashCode}{core::int}.{core::num::*}(19){(core::num) → core::int}){(core::num) → core::int};
+ operator ==(core::Object other) → core::bool {
if(core::identical(this, other))
return true;
- return other is self::Complex* && this.{self::Complex::real}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::real}{core::double*} && this.{self::Complex::imaginary}{core::double*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Complex*}.{self::Complex::imaginary}{core::double*};
+ return other is{ForNonNullableByDefault} self::Complex && this.{self::Complex::real}{core::double} =={core::num::==}{(core::Object) → core::bool} other{self::Complex}.{self::Complex::real}{core::double} && this.{self::Complex::imaginary}{core::double} =={core::num::==}{(core::Object) → core::bool} other{self::Complex}.{self::Complex::imaginary}{core::double};
}
- method toString() → core::String*
- return "Complex(${this.{self::Complex::real}{core::double*}},${this.{self::Complex::imaginary}{core::double*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Complex(${this.{self::Complex::real}{core::double}},${this.{self::Complex::imaginary}{core::double}})";
}
-extension Operators on self::Complex* {
+extension Operators on self::Complex {
operator + = self::Operators|+;
operator - = self::Operators|-;
operator unary- = self::Operators|unary-;
}
-static method Operators|+(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
- return #this.{self::Complex::add}(other){(self::Complex*) →* self::Complex*};
-static method Operators|-(lowered final self::Complex* #this, self::Complex* other) → self::Complex*
- return #this.{self::Complex::sub}(other){(self::Complex*) →* self::Complex*};
-static method Operators|unary-(lowered final self::Complex* #this) → self::Complex*
- return #this.{self::Complex::negate}(){() →* self::Complex*};
+static method Operators|+(lowered final self::Complex #this, self::Complex other) → self::Complex
+ return #this.{self::Complex::add}(other){(self::Complex) → self::Complex};
+static method Operators|-(lowered final self::Complex #this, self::Complex other) → self::Complex
+ return #this.{self::Complex::sub}(other){(self::Complex) → self::Complex};
+static method Operators|unary-(lowered final self::Complex #this) → self::Complex
+ return #this.{self::Complex::negate}(){() → self::Complex};
static method main() → dynamic {
self::implicit();
self::explicit();
}
static method implicit() → dynamic {
- self::Complex* c_m2 = new self::Complex::•(-2.0, 2.0);
- self::Complex* c_m1 = new self::Complex::•(-1.0, 1.0);
- self::Complex* c0 = new self::Complex::•(0.0, 0.0);
- self::Complex* c1 = new self::Complex::•(1.0, -1.0);
- self::Complex* c2 = new self::Complex::•(2.0, -2.0);
+ self::Complex c_m2 = new self::Complex::•(-2.0, 2.0);
+ self::Complex c_m1 = new self::Complex::•(-1.0, 1.0);
+ self::Complex c0 = new self::Complex::•(0.0, 0.0);
+ self::Complex c1 = new self::Complex::•(1.0, -1.0);
+ self::Complex c2 = new self::Complex::•(2.0, -2.0);
self::expect(c_m2, self::Operators|+(c0, c_m2));
self::expect(c_m2, self::Operators|+(c_m2, c0));
self::expect(c_m2, self::Operators|+(c_m1, c_m1));
@@ -97,11 +90,11 @@
self::expect(c0, self::Operators|unary-(c0));
}
static method explicit() → dynamic {
- self::Complex* c_m2 = new self::Complex::•(-2.0, 2.0);
- self::Complex* c_m1 = new self::Complex::•(-1.0, 1.0);
- self::Complex* c0 = new self::Complex::•(0.0, 0.0);
- self::Complex* c1 = new self::Complex::•(1.0, -1.0);
- self::Complex* c2 = new self::Complex::•(2.0, -2.0);
+ self::Complex c_m2 = new self::Complex::•(-2.0, 2.0);
+ self::Complex c_m1 = new self::Complex::•(-1.0, 1.0);
+ self::Complex c0 = new self::Complex::•(0.0, 0.0);
+ self::Complex c1 = new self::Complex::•(1.0, -1.0);
+ self::Complex c2 = new self::Complex::•(2.0, -2.0);
self::expect(c_m2, self::Operators|+(c0, c_m2));
self::expect(c_m2, self::Operators|+(c_m2, c0));
self::expect(c_m2, self::Operators|+(c_m1, c_m1));
@@ -132,16 +125,16 @@
self::expect(c0, self::Operators|-(c_m2, c_m2));
self::expect(c0, self::Operators|unary-(c0));
}
-static method errors(self::Complex* c) → void {
+static method errors(self::Complex c) → void {
invalid-expression "pkg/front_end/testcases/extensions/operators.dart:125:3: Error: Explicit extension application cannot be used as an expression.
Operators(c) == c;
- ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c;
+ ^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} c;
!(invalid-expression "pkg/front_end/testcases/extensions/operators.dart:126:3: Error: Explicit extension application cannot be used as an expression.
Operators(c) != c;
- ^^^^^^^^^" =={core::Object::==}{(core::Object*) →* core::bool*} c);
+ ^^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} c);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart b/pkg/front_end/testcases/extensions/other_kinds.dart
index cefe49f..91046a3 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart
@@ -1,9 +1,9 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class A1 {
- int _instanceField;
+ int _instanceField = 0;
int getInstanceField() => _instanceField;
void setInstanceField(int value) {
_instanceField = value;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline.expect
index 70739a0..b57e67b 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline.expect
@@ -1,6 +1,5 @@
-// @dart = 2.9
class A1 {
- int _instanceField;
+ int _instanceField = 0;
int getInstanceField() => _instanceField;
void setInstanceField(int value) {}
static int _staticField = 0;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline_modelled.expect
index ceb2b26..1691357 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.textual_outline_modelled.expect
@@ -1,6 +1,5 @@
-// @dart = 2.9
class A1 {
- int _instanceField;
+ int _instanceField = 0;
int getInstanceField() => _instanceField;
static int _staticField = 0;
static int getStaticField() => _staticField;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect
index 5a567f7..267a00e 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::int* _instanceField = null;
- static field core::int* _staticField = 0;
- synthetic constructor •() → self::A1*
+ field core::int _instanceField = 0;
+ static field core::int _staticField = 0;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- method getInstanceField() → core::int*
- return this.{self::A1::_instanceField}{core::int*};
- method setInstanceField(core::int* value) → void {
+ method getInstanceField() → core::int
+ return this.{self::A1::_instanceField}{core::int};
+ method setInstanceField(core::int value) → void {
this.{self::A1::_instanceField} = value;
}
- static method getStaticField() → core::int*
+ static method getStaticField() → core::int
return self::A1::_staticField;
- static method setStaticField(core::int* value) → void {
+ static method setStaticField(core::int value) → void {
self::A1::_staticField = value;
}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
get instanceProperty = self::A2|get#instanceProperty;
operator + = self::A2|+;
operator - = self::A2|-;
@@ -39,24 +29,24 @@
set instanceProperty = self::A2|set#instanceProperty;
static set staticProperty = set self::A2|staticProperty;
}
-static field core::int* A2|staticField = self::A1::getStaticField();
-static method A2|get#instanceProperty(lowered final self::A1* #this) → core::int*
- return #this.{self::A1::getInstanceField}(){() →* core::int*};
-static method A2|set#instanceProperty(lowered final self::A1* #this, core::int* value) → void {
- #this.{self::A1::setInstanceField}(value){(core::int*) →* void};
+static field core::int A2|staticField = self::A1::getStaticField();
+static method A2|get#instanceProperty(lowered final self::A1 #this) → core::int
+ return #this.{self::A1::getInstanceField}(){() → core::int};
+static method A2|set#instanceProperty(lowered final self::A1 #this, core::int value) → void {
+ #this.{self::A1::setInstanceField}(value){(core::int) → void};
}
-static method A2|+(lowered final self::A1* #this, core::int* value) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::+}(value){(core::num*) →* core::int*};
+static method A2|+(lowered final self::A1 #this, core::int value) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::num::+}(value){(core::num) → core::int};
}
-static method A2|-(lowered final self::A1* #this, core::int* value) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::-}(value){(core::num*) →* core::int*};
+static method A2|-(lowered final self::A1 #this, core::int value) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::num::-}(value){(core::num) → core::int};
}
-static method A2|unary-(lowered final self::A1* #this) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::int::unary-}(){() →* core::int*};
+static method A2|unary-(lowered final self::A1 #this) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::int::unary-}(){() → core::int};
}
-static get A2|staticProperty() → core::int*
+static get A2|staticProperty() → core::int
return self::A1::getStaticField();
-static set A2|staticProperty(core::int* value) → void {
+static set A2|staticProperty(core::int value) → void {
self::A1::setStaticField(value);
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.modular.expect
index 5a567f7..267a00e 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.modular.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::int* _instanceField = null;
- static field core::int* _staticField = 0;
- synthetic constructor •() → self::A1*
+ field core::int _instanceField = 0;
+ static field core::int _staticField = 0;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- method getInstanceField() → core::int*
- return this.{self::A1::_instanceField}{core::int*};
- method setInstanceField(core::int* value) → void {
+ method getInstanceField() → core::int
+ return this.{self::A1::_instanceField}{core::int};
+ method setInstanceField(core::int value) → void {
this.{self::A1::_instanceField} = value;
}
- static method getStaticField() → core::int*
+ static method getStaticField() → core::int
return self::A1::_staticField;
- static method setStaticField(core::int* value) → void {
+ static method setStaticField(core::int value) → void {
self::A1::_staticField = value;
}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
get instanceProperty = self::A2|get#instanceProperty;
operator + = self::A2|+;
operator - = self::A2|-;
@@ -39,24 +29,24 @@
set instanceProperty = self::A2|set#instanceProperty;
static set staticProperty = set self::A2|staticProperty;
}
-static field core::int* A2|staticField = self::A1::getStaticField();
-static method A2|get#instanceProperty(lowered final self::A1* #this) → core::int*
- return #this.{self::A1::getInstanceField}(){() →* core::int*};
-static method A2|set#instanceProperty(lowered final self::A1* #this, core::int* value) → void {
- #this.{self::A1::setInstanceField}(value){(core::int*) →* void};
+static field core::int A2|staticField = self::A1::getStaticField();
+static method A2|get#instanceProperty(lowered final self::A1 #this) → core::int
+ return #this.{self::A1::getInstanceField}(){() → core::int};
+static method A2|set#instanceProperty(lowered final self::A1 #this, core::int value) → void {
+ #this.{self::A1::setInstanceField}(value){(core::int) → void};
}
-static method A2|+(lowered final self::A1* #this, core::int* value) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::+}(value){(core::num*) →* core::int*};
+static method A2|+(lowered final self::A1 #this, core::int value) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::num::+}(value){(core::num) → core::int};
}
-static method A2|-(lowered final self::A1* #this, core::int* value) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::-}(value){(core::num*) →* core::int*};
+static method A2|-(lowered final self::A1 #this, core::int value) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::num::-}(value){(core::num) → core::int};
}
-static method A2|unary-(lowered final self::A1* #this) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::int::unary-}(){() →* core::int*};
+static method A2|unary-(lowered final self::A1 #this) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::int::unary-}(){() → core::int};
}
-static get A2|staticProperty() → core::int*
+static get A2|staticProperty() → core::int
return self::A1::getStaticField();
-static set A2|staticProperty(core::int* value) → void {
+static set A2|staticProperty(core::int value) → void {
self::A1::setStaticField(value);
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.outline.expect
index e2dcbf5..8a9fd95 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.outline.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::int* _instanceField;
- static field core::int* _staticField;
- synthetic constructor •() → self::A1*
+ field core::int _instanceField;
+ static field core::int _staticField;
+ synthetic constructor •() → self::A1
;
- method getInstanceField() → core::int*
+ method getInstanceField() → core::int
;
- method setInstanceField(core::int* value) → void
+ method setInstanceField(core::int value) → void
;
- static method getStaticField() → core::int*
+ static method getStaticField() → core::int
;
- static method setStaticField(core::int* value) → void
+ static method setStaticField(core::int value) → void
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
get instanceProperty = self::A2|get#instanceProperty;
operator + = self::A2|+;
operator - = self::A2|-;
@@ -36,20 +26,20 @@
set instanceProperty = self::A2|set#instanceProperty;
static set staticProperty = set self::A2|staticProperty;
}
-static field core::int* A2|staticField;
-static method A2|get#instanceProperty(lowered final self::A1* #this) → core::int*
+static field core::int A2|staticField;
+static method A2|get#instanceProperty(lowered final self::A1 #this) → core::int
;
-static method A2|set#instanceProperty(lowered final self::A1* #this, core::int* value) → void
+static method A2|set#instanceProperty(lowered final self::A1 #this, core::int value) → void
;
-static method A2|+(lowered final self::A1* #this, core::int* value) → core::int*
+static method A2|+(lowered final self::A1 #this, core::int value) → core::int
;
-static method A2|-(lowered final self::A1* #this, core::int* value) → core::int*
+static method A2|-(lowered final self::A1 #this, core::int value) → core::int
;
-static method A2|unary-(lowered final self::A1* #this) → core::int*
+static method A2|unary-(lowered final self::A1 #this) → core::int
;
-static get A2|staticProperty() → core::int*
+static get A2|staticProperty() → core::int
;
-static set A2|staticProperty(core::int* value) → void
+static set A2|staticProperty(core::int value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect
index 5a567f7..267a00e 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.weak.transformed.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- field core::int* _instanceField = null;
- static field core::int* _staticField = 0;
- synthetic constructor •() → self::A1*
+ field core::int _instanceField = 0;
+ static field core::int _staticField = 0;
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- method getInstanceField() → core::int*
- return this.{self::A1::_instanceField}{core::int*};
- method setInstanceField(core::int* value) → void {
+ method getInstanceField() → core::int
+ return this.{self::A1::_instanceField}{core::int};
+ method setInstanceField(core::int value) → void {
this.{self::A1::_instanceField} = value;
}
- static method getStaticField() → core::int*
+ static method getStaticField() → core::int
return self::A1::_staticField;
- static method setStaticField(core::int* value) → void {
+ static method setStaticField(core::int value) → void {
self::A1::_staticField = value;
}
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
get instanceProperty = self::A2|get#instanceProperty;
operator + = self::A2|+;
operator - = self::A2|-;
@@ -39,24 +29,24 @@
set instanceProperty = self::A2|set#instanceProperty;
static set staticProperty = set self::A2|staticProperty;
}
-static field core::int* A2|staticField = self::A1::getStaticField();
-static method A2|get#instanceProperty(lowered final self::A1* #this) → core::int*
- return #this.{self::A1::getInstanceField}(){() →* core::int*};
-static method A2|set#instanceProperty(lowered final self::A1* #this, core::int* value) → void {
- #this.{self::A1::setInstanceField}(value){(core::int*) →* void};
+static field core::int A2|staticField = self::A1::getStaticField();
+static method A2|get#instanceProperty(lowered final self::A1 #this) → core::int
+ return #this.{self::A1::getInstanceField}(){() → core::int};
+static method A2|set#instanceProperty(lowered final self::A1 #this, core::int value) → void {
+ #this.{self::A1::setInstanceField}(value){(core::int) → void};
}
-static method A2|+(lowered final self::A1* #this, core::int* value) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::+}(value){(core::num*) →* core::int*};
+static method A2|+(lowered final self::A1 #this, core::int value) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::num::+}(value){(core::num) → core::int};
}
-static method A2|-(lowered final self::A1* #this, core::int* value) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::num::-}(value){(core::num*) →* core::int*};
+static method A2|-(lowered final self::A1 #this, core::int value) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::num::-}(value){(core::num) → core::int};
}
-static method A2|unary-(lowered final self::A1* #this) → core::int* {
- return #this.{self::A1::getInstanceField}(){() →* core::int*}.{core::int::unary-}(){() →* core::int*};
+static method A2|unary-(lowered final self::A1 #this) → core::int {
+ return #this.{self::A1::getInstanceField}(){() → core::int}.{core::int::unary-}(){() → core::int};
}
-static get A2|staticProperty() → core::int*
+static get A2|staticProperty() → core::int
return self::A1::getStaticField();
-static set A2|staticProperty(core::int* value) → void {
+static set A2|staticProperty(core::int value) → void {
self::A1::setStaticField(value);
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/private_members.dart b/pkg/front_end/testcases/extensions/private_members.dart
index 73cbe03..59b873f 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart
+++ b/pkg/front_end/testcases/extensions/private_members.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
import 'private_members_lib.dart';
main() {
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/private_members.dart.textual_outline.expect
index 492a3a9..ca40cab 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'private_members_lib.dart';
main() {}
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/private_members.dart.textual_outline_modelled.expect
index 65259cc..dfeb024 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
import 'private_members_lib.dart';
errors() {}
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
index 1e4a440..b67ccfa 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -103,11 +103,11 @@
^^^^^^^^^^^^^^^^^^^^^");
}
-library;
+library /*isNonNullableByDefault*/;
import self as pri;
import "dart:core" as core;
-extension _PrivateExtension on core::String* {
+extension _PrivateExtension on core::String {
method publicMethod1 = pri::_PrivateExtension|publicMethod1;
tearoff publicMethod1 = pri::_PrivateExtension|get#publicMethod1;
method _privateMethod1 = pri::_PrivateExtension|_privateMethod1;
@@ -117,7 +117,7 @@
method test1 = pri::_PrivateExtension|test1;
tearoff test1 = pri::_PrivateExtension|get#test1;
}
-extension PublicExtension on core::String* {
+extension PublicExtension on core::String {
method publicMethod2 = pri::PublicExtension|publicMethod2;
tearoff publicMethod2 = pri::PublicExtension|get#publicMethod2;
method _privateMethod2 = pri::PublicExtension|_privateMethod2;
@@ -127,7 +127,7 @@
method test2 = pri::PublicExtension|test2;
tearoff test2 = pri::PublicExtension|get#test2;
}
-extension _extension#0 on core::String* {
+extension _extension#0 on core::String {
method publicMethod3 = pri::_extension#0|publicMethod3;
tearoff publicMethod3 = pri::_extension#0|get#publicMethod3;
method _privateMethod3 = pri::_extension#0|_privateMethod3;
@@ -137,65 +137,65 @@
method test3 = pri::_extension#0|test3;
tearoff test3 = pri::_extension#0|get#test3;
}
-static method _PrivateExtension|publicMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|publicMethod1(lowered final core::String #this) → core::int
return 42;
-static method _PrivateExtension|get#publicMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_PrivateExtension|publicMethod1(#this);
-static method _PrivateExtension|_privateMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|get#publicMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_PrivateExtension|publicMethod1(#this);
+static method _PrivateExtension|_privateMethod1(lowered final core::String #this) → core::int
return 87;
-static method _PrivateExtension|get#_privateMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_PrivateExtension|_privateMethod1(#this);
-static method _PrivateExtension|publicStaticMethod1() → core::int*
+static method _PrivateExtension|get#_privateMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_PrivateExtension|_privateMethod1(#this);
+static method _PrivateExtension|publicStaticMethod1() → core::int
return 24;
-static method _PrivateExtension|_privateStaticMethod1() → core::int*
+static method _PrivateExtension|_privateStaticMethod1() → core::int
return 78;
-static method _PrivateExtension|test1(lowered final core::String* #this) → dynamic {
+static method _PrivateExtension|test1(lowered final core::String #this) → dynamic {
pri::expect(42, pri::_PrivateExtension|publicMethod1(#this));
pri::expect(87, pri::_PrivateExtension|_privateMethod1(#this));
pri::expect(24, pri::_PrivateExtension|publicStaticMethod1());
pri::expect(78, pri::_PrivateExtension|_privateStaticMethod1());
}
-static method _PrivateExtension|get#test1(lowered final core::String* #this) → () →* dynamic
+static method _PrivateExtension|get#test1(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::_PrivateExtension|test1(#this);
-static method PublicExtension|publicMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|publicMethod2(lowered final core::String #this) → core::int
return 123;
-static method PublicExtension|get#publicMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::PublicExtension|publicMethod2(#this);
-static method PublicExtension|_privateMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|get#publicMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::PublicExtension|publicMethod2(#this);
+static method PublicExtension|_privateMethod2(lowered final core::String #this) → core::int
return 237;
-static method PublicExtension|get#_privateMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::PublicExtension|_privateMethod2(#this);
-static method PublicExtension|publicStaticMethod2() → core::int*
+static method PublicExtension|get#_privateMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::PublicExtension|_privateMethod2(#this);
+static method PublicExtension|publicStaticMethod2() → core::int
return 321;
-static method PublicExtension|_privateStaticMethod2() → core::int*
+static method PublicExtension|_privateStaticMethod2() → core::int
return 732;
-static method PublicExtension|test2(lowered final core::String* #this) → dynamic {
+static method PublicExtension|test2(lowered final core::String #this) → dynamic {
pri::expect(123, pri::PublicExtension|publicMethod2(#this));
pri::expect(237, pri::PublicExtension|_privateMethod2(#this));
pri::expect(321, pri::PublicExtension|publicStaticMethod2());
pri::expect(732, pri::PublicExtension|_privateStaticMethod2());
}
-static method PublicExtension|get#test2(lowered final core::String* #this) → () →* dynamic
+static method PublicExtension|get#test2(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::PublicExtension|test2(#this);
-static method _extension#0|publicMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|publicMethod3(lowered final core::String #this) → core::int
return 473;
-static method _extension#0|get#publicMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_extension#0|publicMethod3(#this);
-static method _extension#0|_privateMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|get#publicMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_extension#0|publicMethod3(#this);
+static method _extension#0|_privateMethod3(lowered final core::String #this) → core::int
return 586;
-static method _extension#0|get#_privateMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_extension#0|_privateMethod3(#this);
-static method _extension#0|publicStaticMethod3() → core::int*
+static method _extension#0|get#_privateMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_extension#0|_privateMethod3(#this);
+static method _extension#0|publicStaticMethod3() → core::int
return 374;
-static method _extension#0|_privateStaticMethod3() → core::int*
+static method _extension#0|_privateStaticMethod3() → core::int
return 685;
-static method _extension#0|test3(lowered final core::String* #this) → dynamic {
+static method _extension#0|test3(lowered final core::String #this) → dynamic {
pri::expect(473, pri::_extension#0|publicMethod3(#this));
pri::expect(586, pri::_extension#0|_privateMethod3(#this));
pri::expect(374, pri::_extension#0|publicStaticMethod3());
pri::expect(685, pri::_extension#0|_privateStaticMethod3());
}
-static method _extension#0|get#test3(lowered final core::String* #this) → () →* dynamic
+static method _extension#0|get#test3(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::_extension#0|test3(#this);
static method test() → dynamic {
pri::expect(42, pri::_PrivateExtension|publicMethod1(""));
@@ -217,7 +217,7 @@
pri::_extension#0|test3("");
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.modular.expect
index 1e4a440..b67ccfa 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -103,11 +103,11 @@
^^^^^^^^^^^^^^^^^^^^^");
}
-library;
+library /*isNonNullableByDefault*/;
import self as pri;
import "dart:core" as core;
-extension _PrivateExtension on core::String* {
+extension _PrivateExtension on core::String {
method publicMethod1 = pri::_PrivateExtension|publicMethod1;
tearoff publicMethod1 = pri::_PrivateExtension|get#publicMethod1;
method _privateMethod1 = pri::_PrivateExtension|_privateMethod1;
@@ -117,7 +117,7 @@
method test1 = pri::_PrivateExtension|test1;
tearoff test1 = pri::_PrivateExtension|get#test1;
}
-extension PublicExtension on core::String* {
+extension PublicExtension on core::String {
method publicMethod2 = pri::PublicExtension|publicMethod2;
tearoff publicMethod2 = pri::PublicExtension|get#publicMethod2;
method _privateMethod2 = pri::PublicExtension|_privateMethod2;
@@ -127,7 +127,7 @@
method test2 = pri::PublicExtension|test2;
tearoff test2 = pri::PublicExtension|get#test2;
}
-extension _extension#0 on core::String* {
+extension _extension#0 on core::String {
method publicMethod3 = pri::_extension#0|publicMethod3;
tearoff publicMethod3 = pri::_extension#0|get#publicMethod3;
method _privateMethod3 = pri::_extension#0|_privateMethod3;
@@ -137,65 +137,65 @@
method test3 = pri::_extension#0|test3;
tearoff test3 = pri::_extension#0|get#test3;
}
-static method _PrivateExtension|publicMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|publicMethod1(lowered final core::String #this) → core::int
return 42;
-static method _PrivateExtension|get#publicMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_PrivateExtension|publicMethod1(#this);
-static method _PrivateExtension|_privateMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|get#publicMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_PrivateExtension|publicMethod1(#this);
+static method _PrivateExtension|_privateMethod1(lowered final core::String #this) → core::int
return 87;
-static method _PrivateExtension|get#_privateMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_PrivateExtension|_privateMethod1(#this);
-static method _PrivateExtension|publicStaticMethod1() → core::int*
+static method _PrivateExtension|get#_privateMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_PrivateExtension|_privateMethod1(#this);
+static method _PrivateExtension|publicStaticMethod1() → core::int
return 24;
-static method _PrivateExtension|_privateStaticMethod1() → core::int*
+static method _PrivateExtension|_privateStaticMethod1() → core::int
return 78;
-static method _PrivateExtension|test1(lowered final core::String* #this) → dynamic {
+static method _PrivateExtension|test1(lowered final core::String #this) → dynamic {
pri::expect(42, pri::_PrivateExtension|publicMethod1(#this));
pri::expect(87, pri::_PrivateExtension|_privateMethod1(#this));
pri::expect(24, pri::_PrivateExtension|publicStaticMethod1());
pri::expect(78, pri::_PrivateExtension|_privateStaticMethod1());
}
-static method _PrivateExtension|get#test1(lowered final core::String* #this) → () →* dynamic
+static method _PrivateExtension|get#test1(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::_PrivateExtension|test1(#this);
-static method PublicExtension|publicMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|publicMethod2(lowered final core::String #this) → core::int
return 123;
-static method PublicExtension|get#publicMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::PublicExtension|publicMethod2(#this);
-static method PublicExtension|_privateMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|get#publicMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::PublicExtension|publicMethod2(#this);
+static method PublicExtension|_privateMethod2(lowered final core::String #this) → core::int
return 237;
-static method PublicExtension|get#_privateMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::PublicExtension|_privateMethod2(#this);
-static method PublicExtension|publicStaticMethod2() → core::int*
+static method PublicExtension|get#_privateMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::PublicExtension|_privateMethod2(#this);
+static method PublicExtension|publicStaticMethod2() → core::int
return 321;
-static method PublicExtension|_privateStaticMethod2() → core::int*
+static method PublicExtension|_privateStaticMethod2() → core::int
return 732;
-static method PublicExtension|test2(lowered final core::String* #this) → dynamic {
+static method PublicExtension|test2(lowered final core::String #this) → dynamic {
pri::expect(123, pri::PublicExtension|publicMethod2(#this));
pri::expect(237, pri::PublicExtension|_privateMethod2(#this));
pri::expect(321, pri::PublicExtension|publicStaticMethod2());
pri::expect(732, pri::PublicExtension|_privateStaticMethod2());
}
-static method PublicExtension|get#test2(lowered final core::String* #this) → () →* dynamic
+static method PublicExtension|get#test2(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::PublicExtension|test2(#this);
-static method _extension#0|publicMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|publicMethod3(lowered final core::String #this) → core::int
return 473;
-static method _extension#0|get#publicMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_extension#0|publicMethod3(#this);
-static method _extension#0|_privateMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|get#publicMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_extension#0|publicMethod3(#this);
+static method _extension#0|_privateMethod3(lowered final core::String #this) → core::int
return 586;
-static method _extension#0|get#_privateMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_extension#0|_privateMethod3(#this);
-static method _extension#0|publicStaticMethod3() → core::int*
+static method _extension#0|get#_privateMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_extension#0|_privateMethod3(#this);
+static method _extension#0|publicStaticMethod3() → core::int
return 374;
-static method _extension#0|_privateStaticMethod3() → core::int*
+static method _extension#0|_privateStaticMethod3() → core::int
return 685;
-static method _extension#0|test3(lowered final core::String* #this) → dynamic {
+static method _extension#0|test3(lowered final core::String #this) → dynamic {
pri::expect(473, pri::_extension#0|publicMethod3(#this));
pri::expect(586, pri::_extension#0|_privateMethod3(#this));
pri::expect(374, pri::_extension#0|publicStaticMethod3());
pri::expect(685, pri::_extension#0|_privateStaticMethod3());
}
-static method _extension#0|get#test3(lowered final core::String* #this) → () →* dynamic
+static method _extension#0|get#test3(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::_extension#0|test3(#this);
static method test() → dynamic {
pri::expect(42, pri::_PrivateExtension|publicMethod1(""));
@@ -217,7 +217,7 @@
pri::_extension#0|test3("");
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.outline.expect
index 5f25ddb..58a8257 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///private_members_lib.dart";
@@ -8,11 +8,11 @@
static method errors() → dynamic
;
-library;
+library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
-extension _PrivateExtension on core::String* {
+extension _PrivateExtension on core::String {
method publicMethod1 = self2::_PrivateExtension|publicMethod1;
tearoff publicMethod1 = self2::_PrivateExtension|get#publicMethod1;
method _privateMethod1 = self2::_PrivateExtension|_privateMethod1;
@@ -22,7 +22,7 @@
method test1 = self2::_PrivateExtension|test1;
tearoff test1 = self2::_PrivateExtension|get#test1;
}
-extension PublicExtension on core::String* {
+extension PublicExtension on core::String {
method publicMethod2 = self2::PublicExtension|publicMethod2;
tearoff publicMethod2 = self2::PublicExtension|get#publicMethod2;
method _privateMethod2 = self2::PublicExtension|_privateMethod2;
@@ -32,7 +32,7 @@
method test2 = self2::PublicExtension|test2;
tearoff test2 = self2::PublicExtension|get#test2;
}
-extension _extension#0 on core::String* {
+extension _extension#0 on core::String {
method publicMethod3 = self2::_extension#0|publicMethod3;
tearoff publicMethod3 = self2::_extension#0|get#publicMethod3;
method _privateMethod3 = self2::_extension#0|_privateMethod3;
@@ -42,53 +42,53 @@
method test3 = self2::_extension#0|test3;
tearoff test3 = self2::_extension#0|get#test3;
}
-static method _PrivateExtension|publicMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|publicMethod1(lowered final core::String #this) → core::int
;
-static method _PrivateExtension|get#publicMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::_PrivateExtension|publicMethod1(#this);
-static method _PrivateExtension|_privateMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|get#publicMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::_PrivateExtension|publicMethod1(#this);
+static method _PrivateExtension|_privateMethod1(lowered final core::String #this) → core::int
;
-static method _PrivateExtension|get#_privateMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::_PrivateExtension|_privateMethod1(#this);
-static method _PrivateExtension|publicStaticMethod1() → core::int*
+static method _PrivateExtension|get#_privateMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::_PrivateExtension|_privateMethod1(#this);
+static method _PrivateExtension|publicStaticMethod1() → core::int
;
-static method _PrivateExtension|_privateStaticMethod1() → core::int*
+static method _PrivateExtension|_privateStaticMethod1() → core::int
;
-static method _PrivateExtension|test1(lowered final core::String* #this) → dynamic
+static method _PrivateExtension|test1(lowered final core::String #this) → dynamic
;
-static method _PrivateExtension|get#test1(lowered final core::String* #this) → () →* dynamic
+static method _PrivateExtension|get#test1(lowered final core::String #this) → () → dynamic
return () → dynamic => self2::_PrivateExtension|test1(#this);
-static method PublicExtension|publicMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|publicMethod2(lowered final core::String #this) → core::int
;
-static method PublicExtension|get#publicMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::PublicExtension|publicMethod2(#this);
-static method PublicExtension|_privateMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|get#publicMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::PublicExtension|publicMethod2(#this);
+static method PublicExtension|_privateMethod2(lowered final core::String #this) → core::int
;
-static method PublicExtension|get#_privateMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::PublicExtension|_privateMethod2(#this);
-static method PublicExtension|publicStaticMethod2() → core::int*
+static method PublicExtension|get#_privateMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::PublicExtension|_privateMethod2(#this);
+static method PublicExtension|publicStaticMethod2() → core::int
;
-static method PublicExtension|_privateStaticMethod2() → core::int*
+static method PublicExtension|_privateStaticMethod2() → core::int
;
-static method PublicExtension|test2(lowered final core::String* #this) → dynamic
+static method PublicExtension|test2(lowered final core::String #this) → dynamic
;
-static method PublicExtension|get#test2(lowered final core::String* #this) → () →* dynamic
+static method PublicExtension|get#test2(lowered final core::String #this) → () → dynamic
return () → dynamic => self2::PublicExtension|test2(#this);
-static method _extension#0|publicMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|publicMethod3(lowered final core::String #this) → core::int
;
-static method _extension#0|get#publicMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::_extension#0|publicMethod3(#this);
-static method _extension#0|_privateMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|get#publicMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::_extension#0|publicMethod3(#this);
+static method _extension#0|_privateMethod3(lowered final core::String #this) → core::int
;
-static method _extension#0|get#_privateMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => self2::_extension#0|_privateMethod3(#this);
-static method _extension#0|publicStaticMethod3() → core::int*
+static method _extension#0|get#_privateMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => self2::_extension#0|_privateMethod3(#this);
+static method _extension#0|publicStaticMethod3() → core::int
;
-static method _extension#0|_privateStaticMethod3() → core::int*
+static method _extension#0|_privateStaticMethod3() → core::int
;
-static method _extension#0|test3(lowered final core::String* #this) → dynamic
+static method _extension#0|test3(lowered final core::String #this) → dynamic
;
-static method _extension#0|get#test3(lowered final core::String* #this) → () →* dynamic
+static method _extension#0|get#test3(lowered final core::String #this) → () → dynamic
return () → dynamic => self2::_extension#0|test3(#this);
static method test() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
index 1e4a440..b67ccfa 100644
--- a/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/private_members.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -103,11 +103,11 @@
^^^^^^^^^^^^^^^^^^^^^");
}
-library;
+library /*isNonNullableByDefault*/;
import self as pri;
import "dart:core" as core;
-extension _PrivateExtension on core::String* {
+extension _PrivateExtension on core::String {
method publicMethod1 = pri::_PrivateExtension|publicMethod1;
tearoff publicMethod1 = pri::_PrivateExtension|get#publicMethod1;
method _privateMethod1 = pri::_PrivateExtension|_privateMethod1;
@@ -117,7 +117,7 @@
method test1 = pri::_PrivateExtension|test1;
tearoff test1 = pri::_PrivateExtension|get#test1;
}
-extension PublicExtension on core::String* {
+extension PublicExtension on core::String {
method publicMethod2 = pri::PublicExtension|publicMethod2;
tearoff publicMethod2 = pri::PublicExtension|get#publicMethod2;
method _privateMethod2 = pri::PublicExtension|_privateMethod2;
@@ -127,7 +127,7 @@
method test2 = pri::PublicExtension|test2;
tearoff test2 = pri::PublicExtension|get#test2;
}
-extension _extension#0 on core::String* {
+extension _extension#0 on core::String {
method publicMethod3 = pri::_extension#0|publicMethod3;
tearoff publicMethod3 = pri::_extension#0|get#publicMethod3;
method _privateMethod3 = pri::_extension#0|_privateMethod3;
@@ -137,65 +137,65 @@
method test3 = pri::_extension#0|test3;
tearoff test3 = pri::_extension#0|get#test3;
}
-static method _PrivateExtension|publicMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|publicMethod1(lowered final core::String #this) → core::int
return 42;
-static method _PrivateExtension|get#publicMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_PrivateExtension|publicMethod1(#this);
-static method _PrivateExtension|_privateMethod1(lowered final core::String* #this) → core::int*
+static method _PrivateExtension|get#publicMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_PrivateExtension|publicMethod1(#this);
+static method _PrivateExtension|_privateMethod1(lowered final core::String #this) → core::int
return 87;
-static method _PrivateExtension|get#_privateMethod1(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_PrivateExtension|_privateMethod1(#this);
-static method _PrivateExtension|publicStaticMethod1() → core::int*
+static method _PrivateExtension|get#_privateMethod1(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_PrivateExtension|_privateMethod1(#this);
+static method _PrivateExtension|publicStaticMethod1() → core::int
return 24;
-static method _PrivateExtension|_privateStaticMethod1() → core::int*
+static method _PrivateExtension|_privateStaticMethod1() → core::int
return 78;
-static method _PrivateExtension|test1(lowered final core::String* #this) → dynamic {
+static method _PrivateExtension|test1(lowered final core::String #this) → dynamic {
pri::expect(42, pri::_PrivateExtension|publicMethod1(#this));
pri::expect(87, pri::_PrivateExtension|_privateMethod1(#this));
pri::expect(24, pri::_PrivateExtension|publicStaticMethod1());
pri::expect(78, pri::_PrivateExtension|_privateStaticMethod1());
}
-static method _PrivateExtension|get#test1(lowered final core::String* #this) → () →* dynamic
+static method _PrivateExtension|get#test1(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::_PrivateExtension|test1(#this);
-static method PublicExtension|publicMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|publicMethod2(lowered final core::String #this) → core::int
return 123;
-static method PublicExtension|get#publicMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::PublicExtension|publicMethod2(#this);
-static method PublicExtension|_privateMethod2(lowered final core::String* #this) → core::int*
+static method PublicExtension|get#publicMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::PublicExtension|publicMethod2(#this);
+static method PublicExtension|_privateMethod2(lowered final core::String #this) → core::int
return 237;
-static method PublicExtension|get#_privateMethod2(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::PublicExtension|_privateMethod2(#this);
-static method PublicExtension|publicStaticMethod2() → core::int*
+static method PublicExtension|get#_privateMethod2(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::PublicExtension|_privateMethod2(#this);
+static method PublicExtension|publicStaticMethod2() → core::int
return 321;
-static method PublicExtension|_privateStaticMethod2() → core::int*
+static method PublicExtension|_privateStaticMethod2() → core::int
return 732;
-static method PublicExtension|test2(lowered final core::String* #this) → dynamic {
+static method PublicExtension|test2(lowered final core::String #this) → dynamic {
pri::expect(123, pri::PublicExtension|publicMethod2(#this));
pri::expect(237, pri::PublicExtension|_privateMethod2(#this));
pri::expect(321, pri::PublicExtension|publicStaticMethod2());
pri::expect(732, pri::PublicExtension|_privateStaticMethod2());
}
-static method PublicExtension|get#test2(lowered final core::String* #this) → () →* dynamic
+static method PublicExtension|get#test2(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::PublicExtension|test2(#this);
-static method _extension#0|publicMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|publicMethod3(lowered final core::String #this) → core::int
return 473;
-static method _extension#0|get#publicMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_extension#0|publicMethod3(#this);
-static method _extension#0|_privateMethod3(lowered final core::String* #this) → core::int*
+static method _extension#0|get#publicMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_extension#0|publicMethod3(#this);
+static method _extension#0|_privateMethod3(lowered final core::String #this) → core::int
return 586;
-static method _extension#0|get#_privateMethod3(lowered final core::String* #this) → () →* core::int*
- return () → core::int* => pri::_extension#0|_privateMethod3(#this);
-static method _extension#0|publicStaticMethod3() → core::int*
+static method _extension#0|get#_privateMethod3(lowered final core::String #this) → () → core::int
+ return () → core::int => pri::_extension#0|_privateMethod3(#this);
+static method _extension#0|publicStaticMethod3() → core::int
return 374;
-static method _extension#0|_privateStaticMethod3() → core::int*
+static method _extension#0|_privateStaticMethod3() → core::int
return 685;
-static method _extension#0|test3(lowered final core::String* #this) → dynamic {
+static method _extension#0|test3(lowered final core::String #this) → dynamic {
pri::expect(473, pri::_extension#0|publicMethod3(#this));
pri::expect(586, pri::_extension#0|_privateMethod3(#this));
pri::expect(374, pri::_extension#0|publicStaticMethod3());
pri::expect(685, pri::_extension#0|_privateStaticMethod3());
}
-static method _extension#0|get#test3(lowered final core::String* #this) → () →* dynamic
+static method _extension#0|get#test3(lowered final core::String #this) → () → dynamic
return () → dynamic => pri::_extension#0|test3(#this);
static method test() → dynamic {
pri::expect(42, pri::_PrivateExtension|publicMethod1(""));
@@ -217,7 +217,7 @@
pri::_extension#0|test3("");
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/private_members_lib.dart b/pkg/front_end/testcases/extensions/private_members_lib.dart
index 4f5f780..2cf5032 100644
--- a/pkg/front_end/testcases/extensions/private_members_lib.dart
+++ b/pkg/front_end/testcases/extensions/private_members_lib.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
extension _PrivateExtension on String {
int publicMethod1() => 42;
int _privateMethod1() => 87;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart b/pkg/front_end/testcases/extensions/static_access.dart
index 37f9cf6..170f77e 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart
+++ b/pkg/front_end/testcases/extensions/static_access.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/static_access.dart.textual_outline.expect
index a124177..af89663 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/static_access.dart.textual_outline_modelled.expect
index 03ebb40..d7a88d1 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.weak.expect b/pkg/front_end/testcases/extensions/static_access.dart.weak.expect
index 973805f..91c0ad8 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.weak.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
static method method = self::Extension|method;
static method genericMethod = self::Extension|genericMethod;
static get property = get self::Extension|property;
@@ -30,20 +20,20 @@
}
static field dynamic Extension|field;
static method Extension|method() → dynamic {}
-static method Extension|genericMethod<T extends core::Object* = dynamic>(self::Extension|genericMethod::T* t) → dynamic {}
+static method Extension|genericMethod<T extends core::Object? = dynamic>(self::Extension|genericMethod::T% t) → dynamic {}
static get Extension|property() → dynamic
return 42;
static set Extension|property(dynamic value) → void {}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
return 42;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void {}
static method main() → dynamic {
self::Extension|method();
- self::Extension|genericMethod<core::int*>(42);
- self::Extension|genericMethod<core::num*>(42);
+ self::Extension|genericMethod<core::int>(42);
+ self::Extension|genericMethod<core::num>(42);
#C1;
#C2;
self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/static_access.dart.weak.modular.expect
index 973805f..91c0ad8 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.weak.modular.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
static method method = self::Extension|method;
static method genericMethod = self::Extension|genericMethod;
static get property = get self::Extension|property;
@@ -30,20 +20,20 @@
}
static field dynamic Extension|field;
static method Extension|method() → dynamic {}
-static method Extension|genericMethod<T extends core::Object* = dynamic>(self::Extension|genericMethod::T* t) → dynamic {}
+static method Extension|genericMethod<T extends core::Object? = dynamic>(self::Extension|genericMethod::T% t) → dynamic {}
static get Extension|property() → dynamic
return 42;
static set Extension|property(dynamic value) → void {}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
return 42;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void {}
static method main() → dynamic {
self::Extension|method();
- self::Extension|genericMethod<core::int*>(42);
- self::Extension|genericMethod<core::num*>(42);
+ self::Extension|genericMethod<core::int>(42);
+ self::Extension|genericMethod<core::num>(42);
#C1;
#C2;
self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/static_access.dart.weak.outline.expect
index 362a61f..c0fe1cd 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.weak.outline.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
static method method = self::Extension|method;
static method genericMethod = self::Extension|genericMethod;
static get property = get self::Extension|property;
@@ -30,19 +20,19 @@
static field dynamic Extension|field;
static method Extension|method() → dynamic
;
-static method Extension|genericMethod<T extends core::Object* = dynamic>(self::Extension|genericMethod::T* t) → dynamic
+static method Extension|genericMethod<T extends core::Object? = dynamic>(self::Extension|genericMethod::T% t) → dynamic
;
static get Extension|property() → dynamic
;
static set Extension|property(dynamic value) → void
;
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic
;
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/static_access.dart.weak.transformed.expect
index 973805f..91c0ad8 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.weak.transformed.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
static method method = self::Extension|method;
static method genericMethod = self::Extension|genericMethod;
static get property = get self::Extension|property;
@@ -30,20 +20,20 @@
}
static field dynamic Extension|field;
static method Extension|method() → dynamic {}
-static method Extension|genericMethod<T extends core::Object* = dynamic>(self::Extension|genericMethod::T* t) → dynamic {}
+static method Extension|genericMethod<T extends core::Object? = dynamic>(self::Extension|genericMethod::T% t) → dynamic {}
static get Extension|property() → dynamic
return 42;
static set Extension|property(dynamic value) → void {}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
return 42;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void {}
static method main() → dynamic {
self::Extension|method();
- self::Extension|genericMethod<core::int*>(42);
- self::Extension|genericMethod<core::num*>(42);
+ self::Extension|genericMethod<core::int>(42);
+ self::Extension|genericMethod<core::num>(42);
#C1;
#C2;
self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart b/pkg/front_end/testcases/extensions/static_access_of_instance.dart
index 7b664f9..606a735 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline.expect
index 2a3f073..38dbcbf 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline_modelled.expect
index 856f36c..114f677 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect
index b6e0e94..3fcfdf7 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -22,32 +22,22 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method instanceMethod = self::Extension|instanceMethod;
tearoff instanceMethod = self::Extension|get#instanceMethod;
get instanceProperty = self::Extension|get#instanceProperty;
set instanceProperty = self::Extension|set#instanceProperty;
}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
return 42;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void {}
static method main() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
Extension.instanceMethod();
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.modular.expect
index b6e0e94..3fcfdf7 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -22,32 +22,22 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method instanceMethod = self::Extension|instanceMethod;
tearoff instanceMethod = self::Extension|get#instanceMethod;
get instanceProperty = self::Extension|get#instanceProperty;
set instanceProperty = self::Extension|set#instanceProperty;
}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
return 42;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void {}
static method main() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
Extension.instanceMethod();
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.outline.expect
index a401139..3dcb102 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.outline.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method instanceMethod = self::Extension|instanceMethod;
tearoff instanceMethod = self::Extension|get#instanceMethod;
get instanceProperty = self::Extension|get#instanceProperty;
set instanceProperty = self::Extension|set#instanceProperty;
}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic
;
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void
;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect
index b6e0e94..3fcfdf7 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -22,32 +22,22 @@
import "dart:core" as core;
class Class extends core::Object {
- synthetic constructor •() → self::Class*
+ synthetic constructor •() → self::Class
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension Extension on self::Class* {
+extension Extension on self::Class {
method instanceMethod = self::Extension|instanceMethod;
tearoff instanceMethod = self::Extension|get#instanceMethod;
get instanceProperty = self::Extension|get#instanceProperty;
set instanceProperty = self::Extension|set#instanceProperty;
}
-static method Extension|instanceMethod(lowered final self::Class* #this) → dynamic {}
-static method Extension|get#instanceMethod(lowered final self::Class* #this) → () →* dynamic
+static method Extension|instanceMethod(lowered final self::Class #this) → dynamic {}
+static method Extension|get#instanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|instanceMethod(#this);
-static method Extension|get#instanceProperty(lowered final self::Class* #this) → dynamic
+static method Extension|get#instanceProperty(lowered final self::Class #this) → dynamic
return 42;
-static method Extension|set#instanceProperty(lowered final self::Class* #this, dynamic value) → void {}
+static method Extension|set#instanceProperty(lowered final self::Class #this, dynamic value) → void {}
static method main() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/static_access_of_instance.dart:14:13: Error: Member not found: 'Extension.instanceMethod'.
Extension.instanceMethod();
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart b/pkg/front_end/testcases/extensions/tear_offs.dart
index ce7b186..b683759 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart
@@ -1,7 +1,9 @@
// Copyright (c) 2019, 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.
+
// @dart=2.9
+
class Class {}
extension Extension on Class {
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart.weak.expect b/pkg/front_end/testcases/extensions/tear_offs.dart.weak.expect
index d56bc4b..7c706bd 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart.weak.expect
@@ -2,15 +2,15 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:17:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:19:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
// int Function(int) intId = getter;
// ^
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:30:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:32:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
// num Function(num) numId = c.getter;
// ^
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:31:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:33:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
// bool Function(bool) boolId = Extension(c).getter;
// ^
//
@@ -53,7 +53,7 @@
static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
return () → dynamic => self::Extension|method(#this);
static method Extension|errors(lowered final self::Class* #this) → dynamic {
- (core::int*) →* core::int* intId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:17:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
+ (core::int*) →* core::int* intId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:19:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
int Function(int) intId = getter;
^" in self::Extension|get#getter(#this) as{TypeError} (core::int*) →* core::int*;
}
@@ -66,10 +66,10 @@
}
static method errors() → dynamic {
self::Class* c = new self::Class::•();
- (core::num*) →* core::num* numId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:30:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
+ (core::num*) →* core::num* numId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:32:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
num Function(num) numId = c.getter;
^" in self::Extension|get#getter(c) as{TypeError} (core::num*) →* core::num*;
- (core::bool*) →* core::bool* boolId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:31:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
+ (core::bool*) →* core::bool* boolId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:33:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
bool Function(bool) boolId = Extension(c).getter;
^" in self::Extension|get#getter(c) as{TypeError} (core::bool*) →* core::bool*;
}
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/tear_offs.dart.weak.modular.expect
index d56bc4b..7c706bd 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart.weak.modular.expect
@@ -2,15 +2,15 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:17:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:19:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
// int Function(int) intId = getter;
// ^
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:30:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:32:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
// num Function(num) numId = c.getter;
// ^
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:31:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:33:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
// bool Function(bool) boolId = Extension(c).getter;
// ^
//
@@ -53,7 +53,7 @@
static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
return () → dynamic => self::Extension|method(#this);
static method Extension|errors(lowered final self::Class* #this) → dynamic {
- (core::int*) →* core::int* intId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:17:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
+ (core::int*) →* core::int* intId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:19:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
int Function(int) intId = getter;
^" in self::Extension|get#getter(#this) as{TypeError} (core::int*) →* core::int*;
}
@@ -66,10 +66,10 @@
}
static method errors() → dynamic {
self::Class* c = new self::Class::•();
- (core::num*) →* core::num* numId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:30:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
+ (core::num*) →* core::num* numId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:32:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
num Function(num) numId = c.getter;
^" in self::Extension|get#getter(c) as{TypeError} (core::num*) →* core::num*;
- (core::bool*) →* core::bool* boolId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:31:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
+ (core::bool*) →* core::bool* boolId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:33:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
bool Function(bool) boolId = Extension(c).getter;
^" in self::Extension|get#getter(c) as{TypeError} (core::bool*) →* core::bool*;
}
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/tear_offs.dart.weak.transformed.expect
index d56bc4b..7c706bd 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart.weak.transformed.expect
@@ -2,15 +2,15 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:17:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:19:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
// int Function(int) intId = getter;
// ^
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:30:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:32:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
// num Function(num) numId = c.getter;
// ^
//
-// pkg/front_end/testcases/extensions/tear_offs.dart:31:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
+// pkg/front_end/testcases/extensions/tear_offs.dart:33:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
// bool Function(bool) boolId = Extension(c).getter;
// ^
//
@@ -53,7 +53,7 @@
static method Extension|get#method(lowered final self::Class* #this) → () →* dynamic
return () → dynamic => self::Extension|method(#this);
static method Extension|errors(lowered final self::Class* #this) → dynamic {
- (core::int*) →* core::int* intId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:17:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
+ (core::int*) →* core::int* intId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:19:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'int Function(int)'.
int Function(int) intId = getter;
^" in self::Extension|get#getter(#this) as{TypeError} (core::int*) →* core::int*;
}
@@ -66,10 +66,10 @@
}
static method errors() → dynamic {
self::Class* c = new self::Class::•();
- (core::num*) →* core::num* numId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:30:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
+ (core::num*) →* core::num* numId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:32:31: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'num Function(num)'.
num Function(num) numId = c.getter;
^" in self::Extension|get#getter(c) as{TypeError} (core::num*) →* core::num*;
- (core::bool*) →* core::bool* boolId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:31:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
+ (core::bool*) →* core::bool* boolId = invalid-expression "pkg/front_end/testcases/extensions/tear_offs.dart:33:45: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'bool Function(bool)'.
bool Function(bool) boolId = Extension(c).getter;
^" in self::Extension|get#getter(c) as{TypeError} (core::bool*) →* core::bool*;
}
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart b/pkg/front_end/testcases/extensions/tear_offs2.dart
new file mode 100644
index 0000000..910bae9
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2019, 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 Class {}
+
+extension Extension on Class {
+ T id<T>(T t) => t;
+
+ T Function<T>(T) get getter => id;
+
+ method() {
+ String Function(String) stringId = id;
+ }
+
+ errors() {
+ int Function(int) intId = getter;
+ }
+}
+
+main() {
+ Class c = new Class();
+ int Function(int) intId = c.id;
+ double Function(double) doubleId = Extension(c).id;
+}
+
+errors() {
+ Class c = new Class();
+ num Function(num) numId = c.getter;
+ bool Function(bool) boolId = Extension(c).getter;
+}
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/tear_offs2.dart.textual_outline.expect
new file mode 100644
index 0000000..45dbc23
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart.textual_outline.expect
@@ -0,0 +1,11 @@
+class Class {}
+
+extension Extension on Class {
+ T id<T>(T t) => t;
+ T Function<T>(T) get getter => id;
+ method() {}
+ errors() {}
+}
+
+main() {}
+errors() {}
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/tear_offs2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..5ce0c980
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart.textual_outline_modelled.expect
@@ -0,0 +1,12 @@
+class Class {}
+
+errors() {}
+
+extension Extension on Class {
+ T Function<T>(T) get getter => id;
+ T id<T>(T t) => t;
+ errors() {}
+ method() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.expect b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.expect
new file mode 100644
index 0000000..6aad050
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.expect
@@ -0,0 +1,44 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ method id = self::Extension|id;
+ tearoff id = self::Extension|get#id;
+ get getter = self::Extension|get#getter;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method errors = self::Extension|errors;
+ tearoff errors = self::Extension|get#errors;
+}
+static method Extension|id<T extends core::Object? = dynamic>(lowered final self::Class #this, self::Extension|id::T% t) → self::Extension|id::T%
+ return t;
+static method Extension|get#id(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return <T extends core::Object? = dynamic>(T% t) → T% => self::Extension|id<T%>(#this, t);
+static method Extension|get#getter(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return self::Extension|get#id(#this);
+static method Extension|method(lowered final self::Class #this) → dynamic {
+ (core::String) → core::String stringId = self::Extension|get#id(#this)<core::String>;
+}
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|method(#this);
+static method Extension|errors(lowered final self::Class #this) → dynamic {
+ (core::int) → core::int intId = self::Extension|get#getter(#this)<core::int>;
+}
+static method Extension|get#errors(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|errors(#this);
+static method main() → dynamic {
+ self::Class c = new self::Class::•();
+ (core::int) → core::int intId = self::Extension|get#id(c)<core::int>;
+ (core::double) → core::double doubleId = self::Extension|get#id(c)<core::double>;
+}
+static method errors() → dynamic {
+ self::Class c = new self::Class::•();
+ (core::num) → core::num numId = self::Extension|get#getter(c)<core::num>;
+ (core::bool) → core::bool boolId = self::Extension|get#getter(c)<core::bool>;
+}
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.modular.expect
new file mode 100644
index 0000000..6aad050
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.modular.expect
@@ -0,0 +1,44 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ method id = self::Extension|id;
+ tearoff id = self::Extension|get#id;
+ get getter = self::Extension|get#getter;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method errors = self::Extension|errors;
+ tearoff errors = self::Extension|get#errors;
+}
+static method Extension|id<T extends core::Object? = dynamic>(lowered final self::Class #this, self::Extension|id::T% t) → self::Extension|id::T%
+ return t;
+static method Extension|get#id(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return <T extends core::Object? = dynamic>(T% t) → T% => self::Extension|id<T%>(#this, t);
+static method Extension|get#getter(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return self::Extension|get#id(#this);
+static method Extension|method(lowered final self::Class #this) → dynamic {
+ (core::String) → core::String stringId = self::Extension|get#id(#this)<core::String>;
+}
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|method(#this);
+static method Extension|errors(lowered final self::Class #this) → dynamic {
+ (core::int) → core::int intId = self::Extension|get#getter(#this)<core::int>;
+}
+static method Extension|get#errors(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|errors(#this);
+static method main() → dynamic {
+ self::Class c = new self::Class::•();
+ (core::int) → core::int intId = self::Extension|get#id(c)<core::int>;
+ (core::double) → core::double doubleId = self::Extension|get#id(c)<core::double>;
+}
+static method errors() → dynamic {
+ self::Class c = new self::Class::•();
+ (core::num) → core::num numId = self::Extension|get#getter(c)<core::num>;
+ (core::bool) → core::bool boolId = self::Extension|get#getter(c)<core::bool>;
+}
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.outline.expect
new file mode 100644
index 0000000..c5df276
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.outline.expect
@@ -0,0 +1,35 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ ;
+}
+extension Extension on self::Class {
+ method id = self::Extension|id;
+ tearoff id = self::Extension|get#id;
+ get getter = self::Extension|get#getter;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method errors = self::Extension|errors;
+ tearoff errors = self::Extension|get#errors;
+}
+static method Extension|id<T extends core::Object? = dynamic>(lowered final self::Class #this, self::Extension|id::T% t) → self::Extension|id::T%
+ ;
+static method Extension|get#id(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return <T extends core::Object? = dynamic>(T% t) → T% => self::Extension|id<T%>(#this, t);
+static method Extension|get#getter(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ ;
+static method Extension|method(lowered final self::Class #this) → dynamic
+ ;
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|method(#this);
+static method Extension|errors(lowered final self::Class #this) → dynamic
+ ;
+static method Extension|get#errors(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|errors(#this);
+static method main() → dynamic
+ ;
+static method errors() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.transformed.expect
new file mode 100644
index 0000000..6aad050
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/tear_offs2.dart.weak.transformed.expect
@@ -0,0 +1,44 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+extension Extension on self::Class {
+ method id = self::Extension|id;
+ tearoff id = self::Extension|get#id;
+ get getter = self::Extension|get#getter;
+ method method = self::Extension|method;
+ tearoff method = self::Extension|get#method;
+ method errors = self::Extension|errors;
+ tearoff errors = self::Extension|get#errors;
+}
+static method Extension|id<T extends core::Object? = dynamic>(lowered final self::Class #this, self::Extension|id::T% t) → self::Extension|id::T%
+ return t;
+static method Extension|get#id(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return <T extends core::Object? = dynamic>(T% t) → T% => self::Extension|id<T%>(#this, t);
+static method Extension|get#getter(lowered final self::Class #this) → <T extends core::Object? = dynamic>(T%) → T%
+ return self::Extension|get#id(#this);
+static method Extension|method(lowered final self::Class #this) → dynamic {
+ (core::String) → core::String stringId = self::Extension|get#id(#this)<core::String>;
+}
+static method Extension|get#method(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|method(#this);
+static method Extension|errors(lowered final self::Class #this) → dynamic {
+ (core::int) → core::int intId = self::Extension|get#getter(#this)<core::int>;
+}
+static method Extension|get#errors(lowered final self::Class #this) → () → dynamic
+ return () → dynamic => self::Extension|errors(#this);
+static method main() → dynamic {
+ self::Class c = new self::Class::•();
+ (core::int) → core::int intId = self::Extension|get#id(c)<core::int>;
+ (core::double) → core::double doubleId = self::Extension|get#id(c)<core::double>;
+}
+static method errors() → dynamic {
+ self::Class c = new self::Class::•();
+ (core::num) → core::num numId = self::Extension|get#getter(c)<core::num>;
+ (core::bool) → core::bool boolId = self::Extension|get#getter(c)<core::bool>;
+}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound.dart b/pkg/front_end/testcases/extensions/type_variable_bound.dart
index 2d98762d..5adb87c 100644
--- a/pkg/front_end/testcases/extensions/type_variable_bound.dart
+++ b/pkg/front_end/testcases/extensions/type_variable_bound.dart
@@ -1,8 +1,8 @@
// Copyright (c) 2020, 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.
+
// @dart=2.9
-// @dart=2.8
extension Extension<T> on T {
T method1() => this;
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline.expect
index 23bbc97..4bd6f06 100644
--- a/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline.expect
@@ -1,5 +1,4 @@
// @dart = 2.9
-// @dart = 2.8
extension Extension<T> on T {
T method1() => this;
}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline_modelled.expect
index 3dcbad3..3f5d1a5 100644
--- a/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/type_variable_bound.dart.textual_outline_modelled.expect
@@ -1,5 +1,4 @@
// @dart = 2.9
-// @dart = 2.8
Class test1<T>(T t1) {}
class Class {}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart b/pkg/front_end/testcases/extensions/type_variable_bound2.dart
new file mode 100644
index 0000000..82744c3
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2020, 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.
+
+extension Extension<T> on T {
+ T method1() => this;
+}
+
+extension BoundExtension<T extends Class> on T {
+ T method2() => this;
+}
+
+class Class {}
+
+class SubClass extends Class {}
+
+Class test1<T>(T t1) {
+ if (t1 is SubClass) {
+ return t1.method1() as SubClass;
+ }
+ return new Class();
+}
+
+test2<T extends Class>(T t2) {
+ if (T == SubClass) {
+ SubClass subClass = t2.method2() as SubClass;
+ }
+}
+
+test3<T>(T t3) {
+ if (t3 is SubClass) {
+ SubClass subClass = t3.method2() as SubClass; // error
+ }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.textual_outline.expect
new file mode 100644
index 0000000..7f86fba
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.textual_outline.expect
@@ -0,0 +1,16 @@
+extension Extension<T> on T {
+ T method1() => this;
+}
+
+extension BoundExtension<T extends Class> on T {
+ T method2() => this;
+}
+
+class Class {}
+
+class SubClass extends Class {}
+
+Class test1<T>(T t1) {}
+test2<T extends Class>(T t2) {}
+test3<T>(T t3) {}
+main() {}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..d20dc15
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.textual_outline_modelled.expect
@@ -0,0 +1,17 @@
+Class test1<T>(T t1) {}
+
+class Class {}
+
+class SubClass extends Class {}
+
+extension BoundExtension<T extends Class> on T {
+ T method2() => this;
+}
+
+extension Extension<T> on T {
+ T method1() => this;
+}
+
+main() {}
+test2<T extends Class>(T t2) {}
+test3<T>(T t3) {}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.expect b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.expect
new file mode 100644
index 0000000..d5f25e2
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.expect
@@ -0,0 +1,64 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/type_variable_bound2.dart:32:28: Error: The method 'method2' isn't defined for the class 'SubClass'.
+// - 'SubClass' is from 'pkg/front_end/testcases/extensions/type_variable_bound2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method2'.
+// SubClass subClass = t3.method2() as SubClass; // error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+class SubClass extends self::Class {
+ synthetic constructor •() → self::SubClass
+ : super self::Class::•()
+ ;
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+ method method1 = self::Extension|method1;
+ tearoff method1 = self::Extension|get#method1;
+}
+extension BoundExtension<T extends self::Class> on T {
+ method method2 = self::BoundExtension|method2;
+ tearoff method2 = self::BoundExtension|get#method2;
+}
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::Extension|method1::T% #this) → self::Extension|method1::T%
+ return #this;
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension|get#method1::T% #this) → () → self::Extension|get#method1::T%
+ return () → self::Extension|get#method1::T% => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method BoundExtension|method2<T extends self::Class>(lowered final self::BoundExtension|method2::T #this) → self::BoundExtension|method2::T
+ return #this;
+static method BoundExtension|get#method2<T extends self::Class>(lowered final self::BoundExtension|get#method2::T #this) → () → self::BoundExtension|get#method2::T
+ return () → self::BoundExtension|get#method2::T => self::BoundExtension|method2<self::BoundExtension|get#method2::T>(#this);
+static method test1<T extends core::Object? = dynamic>(self::test1::T% t1) → self::Class {
+ if(t1 is{ForNonNullableByDefault} self::SubClass) {
+ return self::Extension|method1<self::test1::T%>(t1{self::test1::T% & self::SubClass /* '%' & '!' = '!' */}) as{ForNonNullableByDefault} self::SubClass;
+ }
+ return new self::Class::•();
+}
+static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
+ if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} #C1) {
+ self::SubClass subClass = self::BoundExtension|method2<self::test2::T>(t2) as{ForNonNullableByDefault} self::SubClass;
+ }
+}
+static method test3<T extends core::Object? = dynamic>(self::test3::T% t3) → dynamic {
+ if(t3 is{ForNonNullableByDefault} self::SubClass) {
+ self::SubClass subClass = invalid-expression "pkg/front_end/testcases/extensions/type_variable_bound2.dart:32:28: Error: The method 'method2' isn't defined for the class 'SubClass'.
+ - 'SubClass' is from 'pkg/front_end/testcases/extensions/type_variable_bound2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method2'.
+ SubClass subClass = t3.method2() as SubClass; // error
+ ^^^^^^^" in t3{self::test3::T% & self::SubClass /* '%' & '!' = '!' */}{<unresolved>}.method2() as{ForNonNullableByDefault} self::SubClass;
+ }
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = TypeLiteralConstant(self::SubClass*)
+}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.modular.expect
new file mode 100644
index 0000000..d5f25e2
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.modular.expect
@@ -0,0 +1,64 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/type_variable_bound2.dart:32:28: Error: The method 'method2' isn't defined for the class 'SubClass'.
+// - 'SubClass' is from 'pkg/front_end/testcases/extensions/type_variable_bound2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method2'.
+// SubClass subClass = t3.method2() as SubClass; // error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+class SubClass extends self::Class {
+ synthetic constructor •() → self::SubClass
+ : super self::Class::•()
+ ;
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+ method method1 = self::Extension|method1;
+ tearoff method1 = self::Extension|get#method1;
+}
+extension BoundExtension<T extends self::Class> on T {
+ method method2 = self::BoundExtension|method2;
+ tearoff method2 = self::BoundExtension|get#method2;
+}
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::Extension|method1::T% #this) → self::Extension|method1::T%
+ return #this;
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension|get#method1::T% #this) → () → self::Extension|get#method1::T%
+ return () → self::Extension|get#method1::T% => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method BoundExtension|method2<T extends self::Class>(lowered final self::BoundExtension|method2::T #this) → self::BoundExtension|method2::T
+ return #this;
+static method BoundExtension|get#method2<T extends self::Class>(lowered final self::BoundExtension|get#method2::T #this) → () → self::BoundExtension|get#method2::T
+ return () → self::BoundExtension|get#method2::T => self::BoundExtension|method2<self::BoundExtension|get#method2::T>(#this);
+static method test1<T extends core::Object? = dynamic>(self::test1::T% t1) → self::Class {
+ if(t1 is{ForNonNullableByDefault} self::SubClass) {
+ return self::Extension|method1<self::test1::T%>(t1{self::test1::T% & self::SubClass /* '%' & '!' = '!' */}) as{ForNonNullableByDefault} self::SubClass;
+ }
+ return new self::Class::•();
+}
+static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
+ if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} #C1) {
+ self::SubClass subClass = self::BoundExtension|method2<self::test2::T>(t2) as{ForNonNullableByDefault} self::SubClass;
+ }
+}
+static method test3<T extends core::Object? = dynamic>(self::test3::T% t3) → dynamic {
+ if(t3 is{ForNonNullableByDefault} self::SubClass) {
+ self::SubClass subClass = invalid-expression "pkg/front_end/testcases/extensions/type_variable_bound2.dart:32:28: Error: The method 'method2' isn't defined for the class 'SubClass'.
+ - 'SubClass' is from 'pkg/front_end/testcases/extensions/type_variable_bound2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method2'.
+ SubClass subClass = t3.method2() as SubClass; // error
+ ^^^^^^^" in t3{self::test3::T% & self::SubClass /* '%' & '!' = '!' */}{<unresolved>}.method2() as{ForNonNullableByDefault} self::SubClass;
+ }
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = TypeLiteralConstant(self::SubClass*)
+}
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.outline.expect
new file mode 100644
index 0000000..1a7ba19
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.outline.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ ;
+}
+class SubClass extends self::Class {
+ synthetic constructor •() → self::SubClass
+ ;
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+ method method1 = self::Extension|method1;
+ tearoff method1 = self::Extension|get#method1;
+}
+extension BoundExtension<T extends self::Class> on T {
+ method method2 = self::BoundExtension|method2;
+ tearoff method2 = self::BoundExtension|get#method2;
+}
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::Extension|method1::T% #this) → self::Extension|method1::T%
+ ;
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension|get#method1::T% #this) → () → self::Extension|get#method1::T%
+ return () → self::Extension|get#method1::T% => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method BoundExtension|method2<T extends self::Class>(lowered final self::BoundExtension|method2::T #this) → self::BoundExtension|method2::T
+ ;
+static method BoundExtension|get#method2<T extends self::Class>(lowered final self::BoundExtension|get#method2::T #this) → () → self::BoundExtension|get#method2::T
+ return () → self::BoundExtension|get#method2::T => self::BoundExtension|method2<self::BoundExtension|get#method2::T>(#this);
+static method test1<T extends core::Object? = dynamic>(self::test1::T% t1) → self::Class
+ ;
+static method test2<T extends self::Class>(self::test2::T t2) → dynamic
+ ;
+static method test3<T extends core::Object? = dynamic>(self::test3::T% t3) → dynamic
+ ;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.transformed.expect
new file mode 100644
index 0000000..0c70fa2
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/type_variable_bound2.dart.weak.transformed.expect
@@ -0,0 +1,64 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/type_variable_bound2.dart:32:28: Error: The method 'method2' isn't defined for the class 'SubClass'.
+// - 'SubClass' is from 'pkg/front_end/testcases/extensions/type_variable_bound2.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'method2'.
+// SubClass subClass = t3.method2() as SubClass; // error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+}
+class SubClass extends self::Class {
+ synthetic constructor •() → self::SubClass
+ : super self::Class::•()
+ ;
+}
+extension Extension<T extends core::Object? = dynamic> on T% {
+ method method1 = self::Extension|method1;
+ tearoff method1 = self::Extension|get#method1;
+}
+extension BoundExtension<T extends self::Class> on T {
+ method method2 = self::BoundExtension|method2;
+ tearoff method2 = self::BoundExtension|get#method2;
+}
+static method Extension|method1<T extends core::Object? = dynamic>(lowered final self::Extension|method1::T% #this) → self::Extension|method1::T%
+ return #this;
+static method Extension|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension|get#method1::T% #this) → () → self::Extension|get#method1::T%
+ return () → self::Extension|get#method1::T% => self::Extension|method1<self::Extension|get#method1::T%>(#this);
+static method BoundExtension|method2<T extends self::Class>(lowered final self::BoundExtension|method2::T #this) → self::BoundExtension|method2::T
+ return #this;
+static method BoundExtension|get#method2<T extends self::Class>(lowered final self::BoundExtension|get#method2::T #this) → () → self::BoundExtension|get#method2::T
+ return () → self::BoundExtension|get#method2::T => self::BoundExtension|method2<self::BoundExtension|get#method2::T>(#this);
+static method test1<T extends core::Object? = dynamic>(self::test1::T% t1) → self::Class {
+ if(t1 is{ForNonNullableByDefault} self::SubClass) {
+ return self::Extension|method1<self::test1::T%>(t1{self::test1::T% & self::SubClass /* '%' & '!' = '!' */}) as{ForNonNullableByDefault} self::SubClass;
+ }
+ return new self::Class::•();
+}
+static method test2<T extends self::Class>(self::test2::T t2) → dynamic {
+ if(self::test2::T =={core::Type::==}{(core::Object) → core::bool} #C1) {
+ self::SubClass subClass = self::BoundExtension|method2<self::test2::T>(t2) as{ForNonNullableByDefault} self::SubClass;
+ }
+}
+static method test3<T extends core::Object? = dynamic>(self::test3::T% t3) → dynamic {
+ if(t3 is{ForNonNullableByDefault} self::SubClass) {
+ self::SubClass subClass = invalid-expression "pkg/front_end/testcases/extensions/type_variable_bound2.dart:32:28: Error: The method 'method2' isn't defined for the class 'SubClass'.
+ - 'SubClass' is from 'pkg/front_end/testcases/extensions/type_variable_bound2.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'method2'.
+ SubClass subClass = t3.method2() as SubClass; // error
+ ^^^^^^^" in t3{self::test3::T% & self::SubClass /* '%' & '!' = '!' */}{<unresolved>}.method2();
+ }
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = TypeLiteralConstant(self::SubClass*)
+}
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart b/pkg/front_end/testcases/extensions/type_variables.dart
index c17dbcb..bea2ded 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart
+++ b/pkg/front_end/testcases/extensions/type_variables.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class A1<T> {}
extension A2<T> on A1<T> {
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline.expect
index 28326e8..4f3bfdf 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A1<T> {}
extension A2<T> on A1<T> {
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline_modelled.expect
index 28326e8..4f3bfdf 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A1<T> {}
extension A2<T> on A1<T> {
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.weak.expect b/pkg/front_end/testcases/extensions/type_variables.dart.weak.expect
index aeae0f7..ef08b8e 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.weak.expect
@@ -1,48 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A1<self::A1::T*>*
+class A1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A1<self::A1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A2<T extends core::Object? = dynamic> on self::A1<T%> {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension A3<T extends self::A1<T*>* = self::A1<dynamic>*> on self::A1<T*>* {
+extension A3<T extends self::A1<T> = self::A1<dynamic>> on self::A1<T> {
}
-extension A4<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A4<T extends core::Object? = dynamic> on self::A1<T%> {
method method = self::A4|method;
tearoff method = self::A4|get#method;
}
-static method A2|method1<T extends core::Object* = dynamic, S extends self::A2|method1::T* = dynamic>(lowered final self::A1<self::A2|method1::T*>* #this) → self::A1<self::A2|method1::T*>* {
+static method A2|method1<T extends core::Object? = dynamic, S extends self::A2|method1::T% = dynamic>(lowered final self::A1<self::A2|method1::T%> #this) → self::A1<self::A2|method1::T%> {
return #this;
}
-static method A2|get#method1<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method1::T*>* #this) → <S extends self::A2|get#method1::T* = dynamic>() →* self::A1<self::A2|get#method1::T*>*
- return <S extends self::A2|get#method1::T* = dynamic>() → self::A1<self::A2|get#method1::T*>* => self::A2|method1<self::A2|get#method1::T*, S*>(#this);
-static method A2|method2<T extends core::Object* = dynamic, S extends self::A1<self::A2|method2::T*>* = self::A1<dynamic>*>(lowered final self::A1<self::A2|method2::T*>* #this, self::A2|method2::S* o) → self::A1<self::A2|method2::T*>* {
+static method A2|get#method1<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method1::T%> #this) → <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%>
+ return <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%> => self::A2|method1<self::A2|get#method1::T%, S%>(#this);
+static method A2|method2<T extends core::Object? = dynamic, S extends self::A1<self::A2|method2::T%> = self::A1<dynamic>>(lowered final self::A1<self::A2|method2::T%> #this, self::A2|method2::S o) → self::A1<self::A2|method2::T%> {
core::print(o);
- core::print(self::A2|method2::T*);
- core::print(self::A2|method2::S*);
+ core::print(self::A2|method2::T%);
+ core::print(self::A2|method2::S);
return #this;
}
-static method A2|get#method2<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method2::T*>* #this) → <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S*) →* self::A1<self::A2|get#method2::T*>*
- return <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S* o) → self::A1<self::A2|get#method2::T*>* => self::A2|method2<self::A2|get#method2::T*, S*>(#this, o);
-static method A4|method<#T extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final self::A1<self::A4|method::#T*>* #this) → dynamic {}
-static method A4|get#method<#T extends core::Object* = dynamic>(lowered final self::A1<self::A4|get#method::#T*>* #this) → <T extends core::Object* = dynamic>() →* dynamic
- return <T extends core::Object* = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T*, T*>(#this);
+static method A2|get#method2<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method2::T%> #this) → <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S) → self::A1<self::A2|get#method2::T%>
+ return <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S o) → self::A1<self::A2|get#method2::T%> => self::A2|method2<self::A2|get#method2::T%, S>(#this, o);
+static method A4|method<#T extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final self::A1<self::A4|method::#T%> #this) → dynamic {}
+static method A4|get#method<#T extends core::Object? = dynamic>(lowered final self::A1<self::A4|get#method::#T%> #this) → <T extends core::Object? = dynamic>() → dynamic
+ return <T extends core::Object? = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T%, T%>(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/type_variables.dart.weak.modular.expect
index aeae0f7..ef08b8e 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.weak.modular.expect
@@ -1,48 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A1<self::A1::T*>*
+class A1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A1<self::A1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A2<T extends core::Object? = dynamic> on self::A1<T%> {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension A3<T extends self::A1<T*>* = self::A1<dynamic>*> on self::A1<T*>* {
+extension A3<T extends self::A1<T> = self::A1<dynamic>> on self::A1<T> {
}
-extension A4<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A4<T extends core::Object? = dynamic> on self::A1<T%> {
method method = self::A4|method;
tearoff method = self::A4|get#method;
}
-static method A2|method1<T extends core::Object* = dynamic, S extends self::A2|method1::T* = dynamic>(lowered final self::A1<self::A2|method1::T*>* #this) → self::A1<self::A2|method1::T*>* {
+static method A2|method1<T extends core::Object? = dynamic, S extends self::A2|method1::T% = dynamic>(lowered final self::A1<self::A2|method1::T%> #this) → self::A1<self::A2|method1::T%> {
return #this;
}
-static method A2|get#method1<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method1::T*>* #this) → <S extends self::A2|get#method1::T* = dynamic>() →* self::A1<self::A2|get#method1::T*>*
- return <S extends self::A2|get#method1::T* = dynamic>() → self::A1<self::A2|get#method1::T*>* => self::A2|method1<self::A2|get#method1::T*, S*>(#this);
-static method A2|method2<T extends core::Object* = dynamic, S extends self::A1<self::A2|method2::T*>* = self::A1<dynamic>*>(lowered final self::A1<self::A2|method2::T*>* #this, self::A2|method2::S* o) → self::A1<self::A2|method2::T*>* {
+static method A2|get#method1<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method1::T%> #this) → <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%>
+ return <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%> => self::A2|method1<self::A2|get#method1::T%, S%>(#this);
+static method A2|method2<T extends core::Object? = dynamic, S extends self::A1<self::A2|method2::T%> = self::A1<dynamic>>(lowered final self::A1<self::A2|method2::T%> #this, self::A2|method2::S o) → self::A1<self::A2|method2::T%> {
core::print(o);
- core::print(self::A2|method2::T*);
- core::print(self::A2|method2::S*);
+ core::print(self::A2|method2::T%);
+ core::print(self::A2|method2::S);
return #this;
}
-static method A2|get#method2<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method2::T*>* #this) → <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S*) →* self::A1<self::A2|get#method2::T*>*
- return <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S* o) → self::A1<self::A2|get#method2::T*>* => self::A2|method2<self::A2|get#method2::T*, S*>(#this, o);
-static method A4|method<#T extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final self::A1<self::A4|method::#T*>* #this) → dynamic {}
-static method A4|get#method<#T extends core::Object* = dynamic>(lowered final self::A1<self::A4|get#method::#T*>* #this) → <T extends core::Object* = dynamic>() →* dynamic
- return <T extends core::Object* = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T*, T*>(#this);
+static method A2|get#method2<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method2::T%> #this) → <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S) → self::A1<self::A2|get#method2::T%>
+ return <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S o) → self::A1<self::A2|get#method2::T%> => self::A2|method2<self::A2|get#method2::T%, S>(#this, o);
+static method A4|method<#T extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final self::A1<self::A4|method::#T%> #this) → dynamic {}
+static method A4|get#method<#T extends core::Object? = dynamic>(lowered final self::A1<self::A4|get#method::#T%> #this) → <T extends core::Object? = dynamic>() → dynamic
+ return <T extends core::Object? = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T%, T%>(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/type_variables.dart.weak.outline.expect
index 38ec5af..bae3a86 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.weak.outline.expect
@@ -1,44 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A1<self::A1::T*>*
+class A1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A1<self::A1::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A2<T extends core::Object? = dynamic> on self::A1<T%> {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension A3<T extends self::A1<T*>* = self::A1<dynamic>*> on self::A1<T*>* {
+extension A3<T extends self::A1<T> = self::A1<dynamic>> on self::A1<T> {
}
-extension A4<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A4<T extends core::Object? = dynamic> on self::A1<T%> {
method method = self::A4|method;
tearoff method = self::A4|get#method;
}
-static method A2|method1<T extends core::Object* = dynamic, S extends self::A2|method1::T* = dynamic>(lowered final self::A1<self::A2|method1::T*>* #this) → self::A1<self::A2|method1::T*>*
+static method A2|method1<T extends core::Object? = dynamic, S extends self::A2|method1::T% = dynamic>(lowered final self::A1<self::A2|method1::T%> #this) → self::A1<self::A2|method1::T%>
;
-static method A2|get#method1<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method1::T*>* #this) → <S extends self::A2|get#method1::T* = dynamic>() →* self::A1<self::A2|get#method1::T*>*
- return <S extends self::A2|get#method1::T* = dynamic>() → self::A1<self::A2|get#method1::T*>* => self::A2|method1<self::A2|get#method1::T*, S*>(#this);
-static method A2|method2<T extends core::Object* = dynamic, S extends self::A1<self::A2|method2::T*>* = self::A1<dynamic>*>(lowered final self::A1<self::A2|method2::T*>* #this, self::A2|method2::S* o) → self::A1<self::A2|method2::T*>*
+static method A2|get#method1<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method1::T%> #this) → <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%>
+ return <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%> => self::A2|method1<self::A2|get#method1::T%, S%>(#this);
+static method A2|method2<T extends core::Object? = dynamic, S extends self::A1<self::A2|method2::T%> = self::A1<dynamic>>(lowered final self::A1<self::A2|method2::T%> #this, self::A2|method2::S o) → self::A1<self::A2|method2::T%>
;
-static method A2|get#method2<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method2::T*>* #this) → <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S*) →* self::A1<self::A2|get#method2::T*>*
- return <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S* o) → self::A1<self::A2|get#method2::T*>* => self::A2|method2<self::A2|get#method2::T*, S*>(#this, o);
-static method A4|method<#T extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final self::A1<self::A4|method::#T*>* #this) → dynamic
+static method A2|get#method2<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method2::T%> #this) → <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S) → self::A1<self::A2|get#method2::T%>
+ return <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S o) → self::A1<self::A2|get#method2::T%> => self::A2|method2<self::A2|get#method2::T%, S>(#this, o);
+static method A4|method<#T extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final self::A1<self::A4|method::#T%> #this) → dynamic
;
-static method A4|get#method<#T extends core::Object* = dynamic>(lowered final self::A1<self::A4|get#method::#T*>* #this) → <T extends core::Object* = dynamic>() →* dynamic
- return <T extends core::Object* = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T*, T*>(#this);
+static method A4|get#method<#T extends core::Object? = dynamic>(lowered final self::A1<self::A4|get#method::#T%> #this) → <T extends core::Object? = dynamic>() → dynamic
+ return <T extends core::Object? = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T%, T%>(#this);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/type_variables.dart.weak.transformed.expect
index aeae0f7..ef08b8e 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.weak.transformed.expect
@@ -1,48 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-class A1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::A1<self::A1::T*>*
+class A1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::A1<self::A1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A2<T extends core::Object? = dynamic> on self::A1<T%> {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension A3<T extends self::A1<T*>* = self::A1<dynamic>*> on self::A1<T*>* {
+extension A3<T extends self::A1<T> = self::A1<dynamic>> on self::A1<T> {
}
-extension A4<T extends core::Object* = dynamic> on self::A1<T*>* {
+extension A4<T extends core::Object? = dynamic> on self::A1<T%> {
method method = self::A4|method;
tearoff method = self::A4|get#method;
}
-static method A2|method1<T extends core::Object* = dynamic, S extends self::A2|method1::T* = dynamic>(lowered final self::A1<self::A2|method1::T*>* #this) → self::A1<self::A2|method1::T*>* {
+static method A2|method1<T extends core::Object? = dynamic, S extends self::A2|method1::T% = dynamic>(lowered final self::A1<self::A2|method1::T%> #this) → self::A1<self::A2|method1::T%> {
return #this;
}
-static method A2|get#method1<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method1::T*>* #this) → <S extends self::A2|get#method1::T* = dynamic>() →* self::A1<self::A2|get#method1::T*>*
- return <S extends self::A2|get#method1::T* = dynamic>() → self::A1<self::A2|get#method1::T*>* => self::A2|method1<self::A2|get#method1::T*, S*>(#this);
-static method A2|method2<T extends core::Object* = dynamic, S extends self::A1<self::A2|method2::T*>* = self::A1<dynamic>*>(lowered final self::A1<self::A2|method2::T*>* #this, self::A2|method2::S* o) → self::A1<self::A2|method2::T*>* {
+static method A2|get#method1<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method1::T%> #this) → <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%>
+ return <S extends self::A2|get#method1::T% = dynamic>() → self::A1<self::A2|get#method1::T%> => self::A2|method1<self::A2|get#method1::T%, S%>(#this);
+static method A2|method2<T extends core::Object? = dynamic, S extends self::A1<self::A2|method2::T%> = self::A1<dynamic>>(lowered final self::A1<self::A2|method2::T%> #this, self::A2|method2::S o) → self::A1<self::A2|method2::T%> {
core::print(o);
- core::print(self::A2|method2::T*);
- core::print(self::A2|method2::S*);
+ core::print(self::A2|method2::T%);
+ core::print(self::A2|method2::S);
return #this;
}
-static method A2|get#method2<T extends core::Object* = dynamic>(lowered final self::A1<self::A2|get#method2::T*>* #this) → <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S*) →* self::A1<self::A2|get#method2::T*>*
- return <S extends self::A1<self::A2|get#method2::T*>* = self::A1<dynamic>*>(S* o) → self::A1<self::A2|get#method2::T*>* => self::A2|method2<self::A2|get#method2::T*, S*>(#this, o);
-static method A4|method<#T extends core::Object* = dynamic, T extends core::Object* = dynamic>(lowered final self::A1<self::A4|method::#T*>* #this) → dynamic {}
-static method A4|get#method<#T extends core::Object* = dynamic>(lowered final self::A1<self::A4|get#method::#T*>* #this) → <T extends core::Object* = dynamic>() →* dynamic
- return <T extends core::Object* = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T*, T*>(#this);
+static method A2|get#method2<T extends core::Object? = dynamic>(lowered final self::A1<self::A2|get#method2::T%> #this) → <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S) → self::A1<self::A2|get#method2::T%>
+ return <S extends self::A1<self::A2|get#method2::T%> = self::A1<dynamic>>(S o) → self::A1<self::A2|get#method2::T%> => self::A2|method2<self::A2|get#method2::T%, S>(#this, o);
+static method A4|method<#T extends core::Object? = dynamic, T extends core::Object? = dynamic>(lowered final self::A1<self::A4|method::#T%> #this) → dynamic {}
+static method A4|get#method<#T extends core::Object? = dynamic>(lowered final self::A1<self::A4|get#method::#T%> #this) → <T extends core::Object? = dynamic>() → dynamic
+ return <T extends core::Object? = dynamic>() → dynamic => self::A4|method<self::A4|get#method::#T%, T%>(#this);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart b/pkg/front_end/testcases/extensions/unnamed_extensions.dart
index bf0bddc..58eecf4 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
class Class1 {
int field;
@@ -23,7 +23,7 @@
print('Extension1.method on $this');
return field;
}
- int genericMethod<T extends num>(T t) {
+ num genericMethod<T extends num>(T t) {
print('Extension1.genericMethod<$T>($t) on $this');
return field + t;
}
@@ -44,7 +44,7 @@
print('Extension2.method on $this');
return field + 3;
}
- int genericMethod<T extends num>(T t) {
+ num genericMethod<T extends num>(T t) {
print('Extension2.genericMethod<$T>($t) on $this');
return field + t + 4;
}
@@ -60,22 +60,24 @@
}
main() {
- testExtension1();
- testExtension2();
+ Class1 c10 = new Class1(0);
+ Class1 c11 = new Class1(1);
+ testExtension1(c10, c11, c10, c11);
+ Class2 c20 = new Class2(0);
+ Class2 c21 = new Class2(1);
+ testExtension2(c20, c21, c20);
}
-testExtension1() {
- Class1 c0 = new Class1(0);
- Class1 c1 = new Class1(1);
+testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {
expect(0, c0.method());
expect(1, c1.method());
- expect(1, c1?.method());
+ expect(1, c1n?.method());
expect(42, c0.genericMethod(42));
expect(43, c0.genericMethod<num>(43));
expect(88, c1.genericMethod(87));
expect(89, c1.genericMethod<num>(88));
expect(0, c0.property);
- expect(0, c0?.property);
+ expect(0, c0n?.property);
expect(42, c0.property = 42);
expect(1, c1.property);
expect(87, c0.property = 87);
@@ -85,18 +87,16 @@
expect(67, c0.property = c1.property = c0.property = 67);
}
-testExtension2() {
- Class2 c0 = new Class2(0);
- Class2 c1 = new Class2(1);
+testExtension2(Class2 c0, Class2 c1, Class2? c0n) {
expect(3, c0.method());
- expect(3, c0?.method());
+ expect(3, c0n?.method());
expect(4, c1.method());
expect(46, c0.genericMethod(42));
expect(47, c0.genericMethod<num>(43));
expect(92, c1.genericMethod(87));
expect(93, c1.genericMethod<num>(88));
expect(5, c0.property);
- expect(5, c0?.property);
+ expect(5, c0n?.property);
expect(42, c0.property = 42);
expect(48, c0.property);
expect(6, c1.property);
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline.expect
index 4120a4e..c1ec591 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {
int field;
Class1(this.field);
@@ -13,19 +12,19 @@
extension on Class1 {
int method() {}
- int genericMethod<T extends num>(T t) {}
+ num genericMethod<T extends num>(T t) {}
int get property {}
set property(int value) {}
}
extension on Class2 {
int method() {}
- int genericMethod<T extends num>(T t) {}
+ num genericMethod<T extends num>(T t) {}
int get property {}
set property(int value) {}
}
main() {}
-testExtension1() {}
-testExtension2() {}
+testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {}
+testExtension2(Class2 c0, Class2 c1, Class2? c0n) {}
expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline_modelled.expect
index d2ab91a..77bfd33 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class Class1 {
Class1(this.field);
String toString() => 'Class1($field)';
@@ -14,19 +13,19 @@
expect(expected, actual) {}
extension on Class1 {
- int genericMethod<T extends num>(T t) {}
int get property {}
int method() {}
+ num genericMethod<T extends num>(T t) {}
set property(int value) {}
}
extension on Class2 {
- int genericMethod<T extends num>(T t) {}
int get property {}
int method() {}
+ num genericMethod<T extends num>(T t) {}
set property(int value) {}
}
main() {}
-testExtension1() {}
-testExtension2() {}
+testExtension1(Class1 c0, Class1 c1, Class1? c0n, Class1? c1n) {}
+testExtension2(Class2 c0, Class2 c1, Class2? c0n) {}
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect
index 6532400..d69a033 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.expect
@@ -1,42 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension _extension#0 on self::Class1* {
+extension _extension#0 on self::Class1 {
method method = self::_extension#0|method;
tearoff method = self::_extension#0|get#method;
method genericMethod = self::_extension#0|genericMethod;
@@ -44,7 +26,7 @@
get property = self::_extension#0|get#property;
set property = self::_extension#0|set#property;
}
-extension _extension#1 on self::Class2* {
+extension _extension#1 on self::Class2 {
method method = self::_extension#1|method;
tearoff method = self::_extension#1|get#method;
method genericMethod = self::_extension#1|genericMethod;
@@ -52,96 +34,96 @@
get property = self::_extension#1|get#property;
set property = self::_extension#1|set#property;
}
-static method _extension#0|method(lowered final self::Class1* #this) → core::int* {
+static method _extension#0|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method _extension#0|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::_extension#0|method(#this);
-static method _extension#0|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::_extension#0|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method _extension#0|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::_extension#0|method(#this);
+static method _extension#0|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::_extension#0|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method _extension#0|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#0|genericMethod<T*>(#this, t);
-static method _extension#0|get#property(lowered final self::Class1* #this) → core::int* {
+static method _extension#0|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#0|genericMethod<T>(#this, t);
+static method _extension#0|get#property(lowered final self::Class1 #this) → core::int {
core::print("Extension1.property get on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method _extension#0|set#property(lowered final self::Class1* #this, core::int* value) → void {
+static method _extension#0|set#property(lowered final self::Class1 #this, core::int value) → void {
#this.{self::Class1::field} = value;
core::print("Extension1.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
-static method _extension#1|method(lowered final self::Class2* #this) → core::int* {
+static method _extension#1|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(3){(core::num) → core::int};
}
-static method _extension#1|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::_extension#1|method(#this);
-static method _extension#1|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::_extension#1|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method _extension#1|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::_extension#1|method(#this);
+static method _extension#1|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::_extension#1|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(4){(core::num) → core::num};
}
-static method _extension#1|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#1|genericMethod<T*>(#this, t);
-static method _extension#1|get#property(lowered final self::Class2* #this) → core::int* {
+static method _extension#1|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#1|genericMethod<T>(#this, t);
+static method _extension#1|get#property(lowered final self::Class2 #this) → core::int {
core::print("Extension2.property get on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(5){(core::num) → core::int};
}
-static method _extension#1|set#property(lowered final self::Class2* #this, core::int* value) → void {
+static method _extension#1|set#property(lowered final self::Class2 #this, core::int value) → void {
core::print("Extension2.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
#this.{self::Class2::field} = value;
}
static method main() → dynamic {
- self::testExtension1();
- self::testExtension2();
+ self::Class1 c10 = new self::Class1::•(0);
+ self::Class1 c11 = new self::Class1::•(1);
+ self::testExtension1(c10, c11, c10, c11);
+ self::Class2 c20 = new self::Class2::•(0);
+ self::Class2 c21 = new self::Class2::•(1);
+ self::testExtension2(c20, c21, c20);
}
-static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic {
self::expect(0, self::_extension#0|method(c0));
self::expect(1, self::_extension#0|method(c1));
- self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::_extension#0|method(#t1));
- self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
- self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
- self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
- self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
+ self::expect(1, let final self::Class1? #t1 = c1n in #t1 == null ?{core::int?} null : self::_extension#0|method(#t1{self::Class1}));
+ self::expect(42, self::_extension#0|genericMethod<core::int>(c0, 42));
+ self::expect(43, self::_extension#0|genericMethod<core::num>(c0, 43));
+ self::expect(88, self::_extension#0|genericMethod<core::int>(c1, 87));
+ self::expect(89, self::_extension#0|genericMethod<core::num>(c1, 88));
self::expect(0, self::_extension#0|get#property(c0));
- self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::_extension#0|get#property(#t2));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
+ self::expect(0, let final self::Class1? #t2 = c0n in #t2 == null ?{core::int?} null : self::_extension#0|get#property(#t2{self::Class1}));
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
self::expect(1, self::_extension#0|get#property(c1));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
- self::expect(27, let final core::int* #t7 = let final core::int* #t8 = 27 in let final void #t9 = self::_extension#0|set#property(c1, #t8) in #t8 in let final void #t10 = self::_extension#0|set#property(c0, #t7) in #t7);
- self::expect(37, let final core::int* #t11 = let final core::int* #t12 = 37 in let final void #t13 = self::_extension#0|set#property(c0, #t12) in #t12 in let final void #t14 = self::_extension#0|set#property(c1, #t11) in #t11);
- self::expect(77, let final core::int* #t15 = let final core::int* #t16 = let final core::int* #t17 = 77 in let final void #t18 = self::_extension#0|set#property(c1, #t17) in #t17 in let final void #t19 = self::_extension#0|set#property(c0, #t16) in #t16 in let final void #t20 = self::_extension#0|set#property(c1, #t15) in #t15);
- self::expect(67, let final core::int* #t21 = let final core::int* #t22 = let final core::int* #t23 = 67 in let final void #t24 = self::_extension#0|set#property(c0, #t23) in #t23 in let final void #t25 = self::_extension#0|set#property(c1, #t22) in #t22 in let final void #t26 = self::_extension#0|set#property(c0, #t21) in #t21);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
+ self::expect(27, let final core::int #t7 = let final core::int #t8 = 27 in let final void #t9 = self::_extension#0|set#property(c1, #t8) in #t8 in let final void #t10 = self::_extension#0|set#property(c0, #t7) in #t7);
+ self::expect(37, let final core::int #t11 = let final core::int #t12 = 37 in let final void #t13 = self::_extension#0|set#property(c0, #t12) in #t12 in let final void #t14 = self::_extension#0|set#property(c1, #t11) in #t11);
+ self::expect(77, let final core::int #t15 = let final core::int #t16 = let final core::int #t17 = 77 in let final void #t18 = self::_extension#0|set#property(c1, #t17) in #t17 in let final void #t19 = self::_extension#0|set#property(c0, #t16) in #t16 in let final void #t20 = self::_extension#0|set#property(c1, #t15) in #t15);
+ self::expect(67, let final core::int #t21 = let final core::int #t22 = let final core::int #t23 = 67 in let final void #t24 = self::_extension#0|set#property(c0, #t23) in #t23 in let final void #t25 = self::_extension#0|set#property(c1, #t22) in #t22 in let final void #t26 = self::_extension#0|set#property(c0, #t21) in #t21);
}
-static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic {
self::expect(3, self::_extension#1|method(c0));
- self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::_extension#1|method(#t27));
+ self::expect(3, let final self::Class2? #t27 = c0n in #t27 == null ?{core::int?} null : self::_extension#1|method(#t27{self::Class2}));
self::expect(4, self::_extension#1|method(c1));
- self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
- self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
- self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
- self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
+ self::expect(46, self::_extension#1|genericMethod<core::int>(c0, 42));
+ self::expect(47, self::_extension#1|genericMethod<core::num>(c0, 43));
+ self::expect(92, self::_extension#1|genericMethod<core::int>(c1, 87));
+ self::expect(93, self::_extension#1|genericMethod<core::num>(c1, 88));
self::expect(5, self::_extension#1|get#property(c0));
- self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::_extension#1|get#property(#t28));
- self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
+ self::expect(5, let final self::Class2? #t28 = c0n in #t28 == null ?{core::int?} null : self::_extension#1|get#property(#t28{self::Class2}));
+ self::expect(42, let final core::int #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
self::expect(48, self::_extension#1|get#property(c0));
self::expect(6, self::_extension#1|get#property(c1));
- self::expect(43, let final core::int* #t31 = 43 in let final void #t32 = self::_extension#1|set#property(c1, #t31) in #t31);
+ self::expect(43, let final core::int #t31 = 43 in let final void #t32 = self::_extension#1|set#property(c1, #t31) in #t31);
self::expect(49, self::_extension#1|get#property(c1));
- self::expect(49, let final core::int* #t33 = self::_extension#1|get#property(c1) in let final void #t34 = self::_extension#1|set#property(c0, #t33) in #t33);
- self::expect(55, let final core::int* #t35 = self::_extension#1|get#property(c0) in let final void #t36 = self::_extension#1|set#property(c1, #t35) in #t35);
- self::expect(61, let final core::int* #t37 = let final core::int* #t38 = self::_extension#1|get#property(c1) in let final void #t39 = self::_extension#1|set#property(c0, #t38) in #t38 in let final void #t40 = self::_extension#1|set#property(c1, #t37) in #t37);
- self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
+ self::expect(49, let final core::int #t33 = self::_extension#1|get#property(c1) in let final void #t34 = self::_extension#1|set#property(c0, #t33) in #t33);
+ self::expect(55, let final core::int #t35 = self::_extension#1|get#property(c0) in let final void #t36 = self::_extension#1|set#property(c1, #t35) in #t35);
+ self::expect(61, let final core::int #t37 = let final core::int #t38 = self::_extension#1|get#property(c1) in let final void #t39 = self::_extension#1|set#property(c0, #t38) in #t38 in let final void #t40 = self::_extension#1|set#property(c1, #t37) in #t37);
+ self::expect(67, let final core::int #t41 = let final core::int #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.modular.expect
index 6532400..d69a033 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.modular.expect
@@ -1,42 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension _extension#0 on self::Class1* {
+extension _extension#0 on self::Class1 {
method method = self::_extension#0|method;
tearoff method = self::_extension#0|get#method;
method genericMethod = self::_extension#0|genericMethod;
@@ -44,7 +26,7 @@
get property = self::_extension#0|get#property;
set property = self::_extension#0|set#property;
}
-extension _extension#1 on self::Class2* {
+extension _extension#1 on self::Class2 {
method method = self::_extension#1|method;
tearoff method = self::_extension#1|get#method;
method genericMethod = self::_extension#1|genericMethod;
@@ -52,96 +34,96 @@
get property = self::_extension#1|get#property;
set property = self::_extension#1|set#property;
}
-static method _extension#0|method(lowered final self::Class1* #this) → core::int* {
+static method _extension#0|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method _extension#0|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::_extension#0|method(#this);
-static method _extension#0|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::_extension#0|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method _extension#0|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::_extension#0|method(#this);
+static method _extension#0|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::_extension#0|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method _extension#0|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#0|genericMethod<T*>(#this, t);
-static method _extension#0|get#property(lowered final self::Class1* #this) → core::int* {
+static method _extension#0|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#0|genericMethod<T>(#this, t);
+static method _extension#0|get#property(lowered final self::Class1 #this) → core::int {
core::print("Extension1.property get on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method _extension#0|set#property(lowered final self::Class1* #this, core::int* value) → void {
+static method _extension#0|set#property(lowered final self::Class1 #this, core::int value) → void {
#this.{self::Class1::field} = value;
core::print("Extension1.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
-static method _extension#1|method(lowered final self::Class2* #this) → core::int* {
+static method _extension#1|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(3){(core::num) → core::int};
}
-static method _extension#1|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::_extension#1|method(#this);
-static method _extension#1|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::_extension#1|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method _extension#1|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::_extension#1|method(#this);
+static method _extension#1|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::_extension#1|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(4){(core::num) → core::num};
}
-static method _extension#1|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#1|genericMethod<T*>(#this, t);
-static method _extension#1|get#property(lowered final self::Class2* #this) → core::int* {
+static method _extension#1|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#1|genericMethod<T>(#this, t);
+static method _extension#1|get#property(lowered final self::Class2 #this) → core::int {
core::print("Extension2.property get on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(5){(core::num) → core::int};
}
-static method _extension#1|set#property(lowered final self::Class2* #this, core::int* value) → void {
+static method _extension#1|set#property(lowered final self::Class2 #this, core::int value) → void {
core::print("Extension2.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
#this.{self::Class2::field} = value;
}
static method main() → dynamic {
- self::testExtension1();
- self::testExtension2();
+ self::Class1 c10 = new self::Class1::•(0);
+ self::Class1 c11 = new self::Class1::•(1);
+ self::testExtension1(c10, c11, c10, c11);
+ self::Class2 c20 = new self::Class2::•(0);
+ self::Class2 c21 = new self::Class2::•(1);
+ self::testExtension2(c20, c21, c20);
}
-static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic {
self::expect(0, self::_extension#0|method(c0));
self::expect(1, self::_extension#0|method(c1));
- self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::_extension#0|method(#t1));
- self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
- self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
- self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
- self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
+ self::expect(1, let final self::Class1? #t1 = c1n in #t1 == null ?{core::int?} null : self::_extension#0|method(#t1{self::Class1}));
+ self::expect(42, self::_extension#0|genericMethod<core::int>(c0, 42));
+ self::expect(43, self::_extension#0|genericMethod<core::num>(c0, 43));
+ self::expect(88, self::_extension#0|genericMethod<core::int>(c1, 87));
+ self::expect(89, self::_extension#0|genericMethod<core::num>(c1, 88));
self::expect(0, self::_extension#0|get#property(c0));
- self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::_extension#0|get#property(#t2));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
+ self::expect(0, let final self::Class1? #t2 = c0n in #t2 == null ?{core::int?} null : self::_extension#0|get#property(#t2{self::Class1}));
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
self::expect(1, self::_extension#0|get#property(c1));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
- self::expect(27, let final core::int* #t7 = let final core::int* #t8 = 27 in let final void #t9 = self::_extension#0|set#property(c1, #t8) in #t8 in let final void #t10 = self::_extension#0|set#property(c0, #t7) in #t7);
- self::expect(37, let final core::int* #t11 = let final core::int* #t12 = 37 in let final void #t13 = self::_extension#0|set#property(c0, #t12) in #t12 in let final void #t14 = self::_extension#0|set#property(c1, #t11) in #t11);
- self::expect(77, let final core::int* #t15 = let final core::int* #t16 = let final core::int* #t17 = 77 in let final void #t18 = self::_extension#0|set#property(c1, #t17) in #t17 in let final void #t19 = self::_extension#0|set#property(c0, #t16) in #t16 in let final void #t20 = self::_extension#0|set#property(c1, #t15) in #t15);
- self::expect(67, let final core::int* #t21 = let final core::int* #t22 = let final core::int* #t23 = 67 in let final void #t24 = self::_extension#0|set#property(c0, #t23) in #t23 in let final void #t25 = self::_extension#0|set#property(c1, #t22) in #t22 in let final void #t26 = self::_extension#0|set#property(c0, #t21) in #t21);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
+ self::expect(27, let final core::int #t7 = let final core::int #t8 = 27 in let final void #t9 = self::_extension#0|set#property(c1, #t8) in #t8 in let final void #t10 = self::_extension#0|set#property(c0, #t7) in #t7);
+ self::expect(37, let final core::int #t11 = let final core::int #t12 = 37 in let final void #t13 = self::_extension#0|set#property(c0, #t12) in #t12 in let final void #t14 = self::_extension#0|set#property(c1, #t11) in #t11);
+ self::expect(77, let final core::int #t15 = let final core::int #t16 = let final core::int #t17 = 77 in let final void #t18 = self::_extension#0|set#property(c1, #t17) in #t17 in let final void #t19 = self::_extension#0|set#property(c0, #t16) in #t16 in let final void #t20 = self::_extension#0|set#property(c1, #t15) in #t15);
+ self::expect(67, let final core::int #t21 = let final core::int #t22 = let final core::int #t23 = 67 in let final void #t24 = self::_extension#0|set#property(c0, #t23) in #t23 in let final void #t25 = self::_extension#0|set#property(c1, #t22) in #t22 in let final void #t26 = self::_extension#0|set#property(c0, #t21) in #t21);
}
-static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic {
self::expect(3, self::_extension#1|method(c0));
- self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::_extension#1|method(#t27));
+ self::expect(3, let final self::Class2? #t27 = c0n in #t27 == null ?{core::int?} null : self::_extension#1|method(#t27{self::Class2}));
self::expect(4, self::_extension#1|method(c1));
- self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
- self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
- self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
- self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
+ self::expect(46, self::_extension#1|genericMethod<core::int>(c0, 42));
+ self::expect(47, self::_extension#1|genericMethod<core::num>(c0, 43));
+ self::expect(92, self::_extension#1|genericMethod<core::int>(c1, 87));
+ self::expect(93, self::_extension#1|genericMethod<core::num>(c1, 88));
self::expect(5, self::_extension#1|get#property(c0));
- self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::_extension#1|get#property(#t28));
- self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
+ self::expect(5, let final self::Class2? #t28 = c0n in #t28 == null ?{core::int?} null : self::_extension#1|get#property(#t28{self::Class2}));
+ self::expect(42, let final core::int #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
self::expect(48, self::_extension#1|get#property(c0));
self::expect(6, self::_extension#1|get#property(c1));
- self::expect(43, let final core::int* #t31 = 43 in let final void #t32 = self::_extension#1|set#property(c1, #t31) in #t31);
+ self::expect(43, let final core::int #t31 = 43 in let final void #t32 = self::_extension#1|set#property(c1, #t31) in #t31);
self::expect(49, self::_extension#1|get#property(c1));
- self::expect(49, let final core::int* #t33 = self::_extension#1|get#property(c1) in let final void #t34 = self::_extension#1|set#property(c0, #t33) in #t33);
- self::expect(55, let final core::int* #t35 = self::_extension#1|get#property(c0) in let final void #t36 = self::_extension#1|set#property(c1, #t35) in #t35);
- self::expect(61, let final core::int* #t37 = let final core::int* #t38 = self::_extension#1|get#property(c1) in let final void #t39 = self::_extension#1|set#property(c0, #t38) in #t38 in let final void #t40 = self::_extension#1|set#property(c1, #t37) in #t37);
- self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
+ self::expect(49, let final core::int #t33 = self::_extension#1|get#property(c1) in let final void #t34 = self::_extension#1|set#property(c0, #t33) in #t33);
+ self::expect(55, let final core::int #t35 = self::_extension#1|get#property(c0) in let final void #t36 = self::_extension#1|set#property(c1, #t35) in #t35);
+ self::expect(61, let final core::int #t37 = let final core::int #t38 = self::_extension#1|get#property(c1) in let final void #t39 = self::_extension#1|set#property(c0, #t38) in #t38 in let final void #t40 = self::_extension#1|set#property(c1, #t37) in #t37);
+ self::expect(67, let final core::int #t41 = let final core::int #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.outline.expect
index 7880975..fd6ebb3 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.outline.expect
@@ -1,40 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
;
- method toString() → core::String*
+ method toString() → core::String
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension _extension#0 on self::Class1* {
+extension _extension#0 on self::Class1 {
method method = self::_extension#0|method;
tearoff method = self::_extension#0|get#method;
method genericMethod = self::_extension#0|genericMethod;
@@ -42,7 +24,7 @@
get property = self::_extension#0|get#property;
set property = self::_extension#0|set#property;
}
-extension _extension#1 on self::Class2* {
+extension _extension#1 on self::Class2 {
method method = self::_extension#1|method;
tearoff method = self::_extension#1|get#method;
method genericMethod = self::_extension#1|genericMethod;
@@ -50,35 +32,35 @@
get property = self::_extension#1|get#property;
set property = self::_extension#1|set#property;
}
-static method _extension#0|method(lowered final self::Class1* #this) → core::int*
+static method _extension#0|method(lowered final self::Class1 #this) → core::int
;
-static method _extension#0|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::_extension#0|method(#this);
-static method _extension#0|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::_extension#0|genericMethod::T* t) → core::int*
+static method _extension#0|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::_extension#0|method(#this);
+static method _extension#0|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::_extension#0|genericMethod::T t) → core::num
;
-static method _extension#0|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#0|genericMethod<T*>(#this, t);
-static method _extension#0|get#property(lowered final self::Class1* #this) → core::int*
+static method _extension#0|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#0|genericMethod<T>(#this, t);
+static method _extension#0|get#property(lowered final self::Class1 #this) → core::int
;
-static method _extension#0|set#property(lowered final self::Class1* #this, core::int* value) → void
+static method _extension#0|set#property(lowered final self::Class1 #this, core::int value) → void
;
-static method _extension#1|method(lowered final self::Class2* #this) → core::int*
+static method _extension#1|method(lowered final self::Class2 #this) → core::int
;
-static method _extension#1|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::_extension#1|method(#this);
-static method _extension#1|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::_extension#1|genericMethod::T* t) → core::int*
+static method _extension#1|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::_extension#1|method(#this);
+static method _extension#1|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::_extension#1|genericMethod::T t) → core::num
;
-static method _extension#1|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#1|genericMethod<T*>(#this, t);
-static method _extension#1|get#property(lowered final self::Class2* #this) → core::int*
+static method _extension#1|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#1|genericMethod<T>(#this, t);
+static method _extension#1|get#property(lowered final self::Class2 #this) → core::int
;
-static method _extension#1|set#property(lowered final self::Class2* #this, core::int* value) → void
+static method _extension#1|set#property(lowered final self::Class2 #this, core::int value) → void
;
static method main() → dynamic
;
-static method testExtension1() → dynamic
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic
;
-static method testExtension2() → dynamic
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic
;
static method expect(dynamic expected, dynamic actual) → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect
index f3b4c97..82dee77 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.weak.transformed.expect
@@ -1,42 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class1*
+ field core::int field;
+ constructor •(core::int field) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class1(${this.{self::Class1::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class1(${this.{self::Class1::field}{core::int}})";
}
class Class2 extends core::Object {
- field core::int* field;
- constructor •(core::int* field) → self::Class2*
+ field core::int field;
+ constructor •(core::int field) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- method toString() → core::String*
- return "Class2(${this.{self::Class2::field}{core::int*}})";
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+ method toString() → core::String
+ return "Class2(${this.{self::Class2::field}{core::int}})";
}
-extension _extension#0 on self::Class1* {
+extension _extension#0 on self::Class1 {
method method = self::_extension#0|method;
tearoff method = self::_extension#0|get#method;
method genericMethod = self::_extension#0|genericMethod;
@@ -44,7 +26,7 @@
get property = self::_extension#0|get#property;
set property = self::_extension#0|set#property;
}
-extension _extension#1 on self::Class2* {
+extension _extension#1 on self::Class2 {
method method = self::_extension#1|method;
tearoff method = self::_extension#1|get#method;
method genericMethod = self::_extension#1|genericMethod;
@@ -52,116 +34,116 @@
get property = self::_extension#1|get#property;
set property = self::_extension#1|set#property;
}
-static method _extension#0|method(lowered final self::Class1* #this) → core::int* {
+static method _extension#0|method(lowered final self::Class1 #this) → core::int {
core::print("Extension1.method on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method _extension#0|get#method(lowered final self::Class1* #this) → () →* core::int*
- return () → core::int* => self::_extension#0|method(#this);
-static method _extension#0|genericMethod<T extends core::num*>(lowered final self::Class1* #this, self::_extension#0|genericMethod::T* t) → core::int* {
- core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class1::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method _extension#0|get#method(lowered final self::Class1 #this) → () → core::int
+ return () → core::int => self::_extension#0|method(#this);
+static method _extension#0|genericMethod<T extends core::num>(lowered final self::Class1 #this, self::_extension#0|genericMethod::T t) → core::num {
+ core::print("Extension1.genericMethod<${self::_extension#0|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class1::field}{core::int}.{core::num::+}(t){(core::num) → core::num};
}
-static method _extension#0|get#genericMethod(lowered final self::Class1* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#0|genericMethod<T*>(#this, t);
-static method _extension#0|get#property(lowered final self::Class1* #this) → core::int* {
+static method _extension#0|get#genericMethod(lowered final self::Class1 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#0|genericMethod<T>(#this, t);
+static method _extension#0|get#property(lowered final self::Class1 #this) → core::int {
core::print("Extension1.property get on ${#this}");
- return #this.{self::Class1::field}{core::int*};
+ return #this.{self::Class1::field}{core::int};
}
-static method _extension#0|set#property(lowered final self::Class1* #this, core::int* value) → void {
+static method _extension#0|set#property(lowered final self::Class1 #this, core::int value) → void {
#this.{self::Class1::field} = value;
core::print("Extension1.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
}
-static method _extension#1|method(lowered final self::Class2* #this) → core::int* {
+static method _extension#1|method(lowered final self::Class2 #this) → core::int {
core::print("Extension2.method on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(3){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(3){(core::num) → core::int};
}
-static method _extension#1|get#method(lowered final self::Class2* #this) → () →* core::int*
- return () → core::int* => self::_extension#1|method(#this);
-static method _extension#1|genericMethod<T extends core::num*>(lowered final self::Class2* #this, self::_extension#1|genericMethod::T* t) → core::int* {
- core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T*}>(${t}) on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(t){(core::num*) →* core::num*}.{core::num::+}(4){(core::num*) →* core::num*} as{TypeError} core::int*;
+static method _extension#1|get#method(lowered final self::Class2 #this) → () → core::int
+ return () → core::int => self::_extension#1|method(#this);
+static method _extension#1|genericMethod<T extends core::num>(lowered final self::Class2 #this, self::_extension#1|genericMethod::T t) → core::num {
+ core::print("Extension2.genericMethod<${self::_extension#1|genericMethod::T}>(${t}) on ${#this}");
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(t){(core::num) → core::num}.{core::num::+}(4){(core::num) → core::num};
}
-static method _extension#1|get#genericMethod(lowered final self::Class2* #this) → <T extends core::num*>(T*) →* core::int*
- return <T extends core::num*>(T* t) → core::int* => self::_extension#1|genericMethod<T*>(#this, t);
-static method _extension#1|get#property(lowered final self::Class2* #this) → core::int* {
+static method _extension#1|get#genericMethod(lowered final self::Class2 #this) → <T extends core::num>(T) → core::num
+ return <T extends core::num>(T t) → core::num => self::_extension#1|genericMethod<T>(#this, t);
+static method _extension#1|get#property(lowered final self::Class2 #this) → core::int {
core::print("Extension2.property get on ${#this}");
- return #this.{self::Class2::field}{core::int*}.{core::num::+}(5){(core::num*) →* core::int*};
+ return #this.{self::Class2::field}{core::int}.{core::num::+}(5){(core::num) → core::int};
}
-static method _extension#1|set#property(lowered final self::Class2* #this, core::int* value) → void {
+static method _extension#1|set#property(lowered final self::Class2 #this, core::int value) → void {
core::print("Extension2.property set(${value}) on ${#this}");
- value = value.{core::num::+}(1){(core::num*) →* core::int*};
+ value = value.{core::num::+}(1){(core::num) → core::int};
#this.{self::Class2::field} = value;
}
static method main() → dynamic {
- self::testExtension1();
- self::testExtension2();
+ self::Class1 c10 = new self::Class1::•(0);
+ self::Class1 c11 = new self::Class1::•(1);
+ self::testExtension1(c10, c11, c10, c11);
+ self::Class2 c20 = new self::Class2::•(0);
+ self::Class2 c21 = new self::Class2::•(1);
+ self::testExtension2(c20, c21, c20);
}
-static method testExtension1() → dynamic {
- self::Class1* c0 = new self::Class1::•(0);
- self::Class1* c1 = new self::Class1::•(1);
+static method testExtension1(self::Class1 c0, self::Class1 c1, self::Class1? c0n, self::Class1? c1n) → dynamic {
self::expect(0, self::_extension#0|method(c0));
self::expect(1, self::_extension#0|method(c1));
- self::expect(1, let final self::Class1* #t1 = c1 in #t1 == null ?{core::int*} null : self::_extension#0|method(#t1));
- self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
- self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
- self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
- self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
+ self::expect(1, let final self::Class1? #t1 = c1n in #t1 == null ?{core::int?} null : self::_extension#0|method(#t1{self::Class1}));
+ self::expect(42, self::_extension#0|genericMethod<core::int>(c0, 42));
+ self::expect(43, self::_extension#0|genericMethod<core::num>(c0, 43));
+ self::expect(88, self::_extension#0|genericMethod<core::int>(c1, 87));
+ self::expect(89, self::_extension#0|genericMethod<core::num>(c1, 88));
self::expect(0, self::_extension#0|get#property(c0));
- self::expect(0, let final self::Class1* #t2 = c0 in #t2 == null ?{core::int*} null : self::_extension#0|get#property(#t2));
- self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
+ self::expect(0, let final self::Class1? #t2 = c0n in #t2 == null ?{core::int?} null : self::_extension#0|get#property(#t2{self::Class1}));
+ self::expect(42, let final core::int #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
self::expect(1, self::_extension#0|get#property(c1));
- self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
- self::expect(27, let final core::int* #t7 = let final core::int* #t8 = 27 in let final void #t9 = self::_extension#0|set#property(c1, #t8) in #t8 in let final void #t10 = self::_extension#0|set#property(c0, #t7) in #t7);
- self::expect(37, let final core::int* #t11 = let final core::int* #t12 = 37 in let final void #t13 = self::_extension#0|set#property(c0, #t12) in #t12 in let final void #t14 = self::_extension#0|set#property(c1, #t11) in #t11);
- self::expect(77, let final core::int* #t15 = let final core::int* #t16 = let final core::int* #t17 = 77 in let final void #t18 = self::_extension#0|set#property(c1, #t17) in #t17 in let final void #t19 = self::_extension#0|set#property(c0, #t16) in #t16 in let final void #t20 = self::_extension#0|set#property(c1, #t15) in #t15);
- self::expect(67, let final core::int* #t21 = let final core::int* #t22 = let final core::int* #t23 = 67 in let final void #t24 = self::_extension#0|set#property(c0, #t23) in #t23 in let final void #t25 = self::_extension#0|set#property(c1, #t22) in #t22 in let final void #t26 = self::_extension#0|set#property(c0, #t21) in #t21);
+ self::expect(87, let final core::int #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
+ self::expect(27, let final core::int #t7 = let final core::int #t8 = 27 in let final void #t9 = self::_extension#0|set#property(c1, #t8) in #t8 in let final void #t10 = self::_extension#0|set#property(c0, #t7) in #t7);
+ self::expect(37, let final core::int #t11 = let final core::int #t12 = 37 in let final void #t13 = self::_extension#0|set#property(c0, #t12) in #t12 in let final void #t14 = self::_extension#0|set#property(c1, #t11) in #t11);
+ self::expect(77, let final core::int #t15 = let final core::int #t16 = let final core::int #t17 = 77 in let final void #t18 = self::_extension#0|set#property(c1, #t17) in #t17 in let final void #t19 = self::_extension#0|set#property(c0, #t16) in #t16 in let final void #t20 = self::_extension#0|set#property(c1, #t15) in #t15);
+ self::expect(67, let final core::int #t21 = let final core::int #t22 = let final core::int #t23 = 67 in let final void #t24 = self::_extension#0|set#property(c0, #t23) in #t23 in let final void #t25 = self::_extension#0|set#property(c1, #t22) in #t22 in let final void #t26 = self::_extension#0|set#property(c0, #t21) in #t21);
}
-static method testExtension2() → dynamic {
- self::Class2* c0 = new self::Class2::•(0);
- self::Class2* c1 = new self::Class2::•(1);
+static method testExtension2(self::Class2 c0, self::Class2 c1, self::Class2? c0n) → dynamic {
self::expect(3, self::_extension#1|method(c0));
- self::expect(3, let final self::Class2* #t27 = c0 in #t27 == null ?{core::int*} null : self::_extension#1|method(#t27));
+ self::expect(3, let final self::Class2? #t27 = c0n in #t27 == null ?{core::int?} null : self::_extension#1|method(#t27{self::Class2}));
self::expect(4, self::_extension#1|method(c1));
- self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
- self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
- self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
- self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
+ self::expect(46, self::_extension#1|genericMethod<core::int>(c0, 42));
+ self::expect(47, self::_extension#1|genericMethod<core::num>(c0, 43));
+ self::expect(92, self::_extension#1|genericMethod<core::int>(c1, 87));
+ self::expect(93, self::_extension#1|genericMethod<core::num>(c1, 88));
self::expect(5, self::_extension#1|get#property(c0));
- self::expect(5, let final self::Class2* #t28 = c0 in #t28 == null ?{core::int*} null : self::_extension#1|get#property(#t28));
- self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
+ self::expect(5, let final self::Class2? #t28 = c0n in #t28 == null ?{core::int?} null : self::_extension#1|get#property(#t28{self::Class2}));
+ self::expect(42, let final core::int #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
self::expect(48, self::_extension#1|get#property(c0));
self::expect(6, self::_extension#1|get#property(c1));
- self::expect(43, let final core::int* #t31 = 43 in let final void #t32 = self::_extension#1|set#property(c1, #t31) in #t31);
+ self::expect(43, let final core::int #t31 = 43 in let final void #t32 = self::_extension#1|set#property(c1, #t31) in #t31);
self::expect(49, self::_extension#1|get#property(c1));
- self::expect(49, let final core::int* #t33 = self::_extension#1|get#property(c1) in let final void #t34 = self::_extension#1|set#property(c0, #t33) in #t33);
- self::expect(55, let final core::int* #t35 = self::_extension#1|get#property(c0) in let final void #t36 = self::_extension#1|set#property(c1, #t35) in #t35);
- self::expect(61, let final core::int* #t37 = let final core::int* #t38 = self::_extension#1|get#property(c1) in let final void #t39 = self::_extension#1|set#property(c0, #t38) in #t38 in let final void #t40 = self::_extension#1|set#property(c1, #t37) in #t37);
- self::expect(67, let final core::int* #t41 = let final core::int* #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
+ self::expect(49, let final core::int #t33 = self::_extension#1|get#property(c1) in let final void #t34 = self::_extension#1|set#property(c0, #t33) in #t33);
+ self::expect(55, let final core::int #t35 = self::_extension#1|get#property(c0) in let final void #t36 = self::_extension#1|set#property(c1, #t35) in #t35);
+ self::expect(61, let final core::int #t37 = let final core::int #t38 = self::_extension#1|get#property(c1) in let final void #t39 = self::_extension#1|set#property(c0, #t38) in #t38 in let final void #t40 = self::_extension#1|set#property(c1, #t37) in #t37);
+ self::expect(67, let final core::int #t41 = let final core::int #t42 = self::_extension#1|get#property(c0) in let final void #t43 = self::_extension#1|set#property(c1, #t42) in #t42 in let final void #t44 = self::_extension#1|set#property(c0, #t41) in #t41);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
- if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
Extra constant evaluation status:
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:79:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:79:28 -> IntConstant(42)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:81:28 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:81:28 -> IntConstant(87)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:82:42 -> IntConstant(27)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:82:42 -> IntConstant(27)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:83:42 -> IntConstant(37)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:83:42 -> IntConstant(37)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:84:56 -> IntConstant(77)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:84:56 -> IntConstant(77)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:85:56 -> IntConstant(67)
-Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:85:56 -> IntConstant(67)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:81:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:81:28 -> IntConstant(42)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:83:28 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:83:28 -> IntConstant(87)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:84:42 -> IntConstant(27)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:84:42 -> IntConstant(27)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:85:42 -> IntConstant(37)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:85:42 -> IntConstant(37)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:86:56 -> IntConstant(77)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:86:56 -> IntConstant(77)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:87:56 -> IntConstant(67)
+Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:87:56 -> IntConstant(67)
Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:100:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:100:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:103:28 -> IntConstant(43)
Evaluated: VariableGet @ org-dartlang-testcase:///unnamed_extensions.dart:103:28 -> IntConstant(43)
-Extra constant evaluation: evaluated: 325, effectively constant: 16
+Extra constant evaluation: evaluated: 330, effectively constant: 16
diff --git a/pkg/front_end/testcases/extensions/use_this.dart b/pkg/front_end/testcases/extensions/use_this.dart
index 8a23cb9..89105d8 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart
+++ b/pkg/front_end/testcases/extensions/use_this.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart=2.9
-
class A1 {}
extension A2 on A1 {
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/use_this.dart.textual_outline.expect
index 9cf7a3b..f12590a 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A1 {}
extension A2 on A1 {
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/use_this.dart.textual_outline_modelled.expect
index d1ae3f2..f79fb58 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
class A1 {}
class B1<T> {}
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.weak.expect b/pkg/front_end/testcases/extensions/use_this.dart.weak.expect
index f7ce7a4..b415f82 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.weak.expect
@@ -1,69 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1* {
+static method A2|method1(lowered final self::A1 #this) → self::A1 {
return #this;
}
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1* {
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>* {
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> {
return #this;
}
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>* {
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> {
core::print(o);
return #this;
}
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/use_this.dart.weak.modular.expect
index f7ce7a4..b415f82 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.weak.modular.expect
@@ -1,69 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1* {
+static method A2|method1(lowered final self::A1 #this) → self::A1 {
return #this;
}
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1* {
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>* {
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> {
return #this;
}
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>* {
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> {
core::print(o);
return #this;
}
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.weak.outline.expect b/pkg/front_end/testcases/extensions/use_this.dart.weak.outline.expect
index f40c736..07b6cee 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.weak.outline.expect
@@ -1,62 +1,42 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1*
+static method A2|method1(lowered final self::A1 #this) → self::A1
;
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1*
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1
;
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>*
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%>
;
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>*
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%>
;
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/use_this.dart.weak.transformed.expect
index f7ce7a4..b415f82 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.weak.transformed.expect
@@ -1,69 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A1 extends core::Object {
- synthetic constructor •() → self::A1*
+ synthetic constructor •() → self::A1
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-class B1<T extends core::Object* = dynamic> extends core::Object {
- synthetic constructor •() → self::B1<self::B1::T*>*
+class B1<T extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B1<self::B1::T%>
: super core::Object::•()
;
- abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
- abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
- abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
- abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
- abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
- abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
- abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
- abstract member-signature method toString() → core::String*; -> core::Object::toString
- abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
- abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-extension A2 on self::A1* {
+extension A2 on self::A1 {
method method1 = self::A2|method1;
tearoff method1 = self::A2|get#method1;
method method2 = self::A2|method2;
tearoff method2 = self::A2|get#method2;
}
-extension B2<T extends core::Object* = dynamic> on self::B1<T*>* {
+extension B2<T extends core::Object? = dynamic> on self::B1<T%> {
method method1 = self::B2|method1;
tearoff method1 = self::B2|get#method1;
method method2 = self::B2|method2;
tearoff method2 = self::B2|get#method2;
}
-static method A2|method1(lowered final self::A1* #this) → self::A1* {
+static method A2|method1(lowered final self::A1 #this) → self::A1 {
return #this;
}
-static method A2|get#method1(lowered final self::A1* #this) → () →* self::A1*
- return () → self::A1* => self::A2|method1(#this);
-static method A2|method2<T extends core::Object* = dynamic>(lowered final self::A1* #this, self::A2|method2::T* o) → self::A1* {
+static method A2|get#method1(lowered final self::A1 #this) → () → self::A1
+ return () → self::A1 => self::A2|method1(#this);
+static method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 {
core::print(o);
return #this;
}
-static method A2|get#method2(lowered final self::A1* #this) → <T extends core::Object* = dynamic>(T*) →* self::A1*
- return <T extends core::Object* = dynamic>(T* o) → self::A1* => self::A2|method2<T*>(#this, o);
-static method B2|method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|method1::T*>* #this) → self::B1<self::B2|method1::T*>* {
+static method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1
+ return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o);
+static method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> {
return #this;
}
-static method B2|get#method1<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method1::T*>* #this) → () →* self::B1<self::B2|get#method1::T*>*
- return () → self::B1<self::B2|get#method1::T*>* => self::B2|method1<self::B2|get#method1::T*>(#this);
-static method B2|method2<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::B1<self::B2|method2::T*>* #this, self::B2|method2::S* o) → self::B1<self::B2|method2::T*>* {
+static method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%>
+ return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this);
+static method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> {
core::print(o);
return #this;
}
-static method B2|get#method2<T extends core::Object* = dynamic>(lowered final self::B1<self::B2|get#method2::T*>* #this) → <S extends core::Object* = dynamic>(S*) →* self::B1<self::B2|get#method2::T*>*
- return <S extends core::Object* = dynamic>(S* o) → self::B1<self::B2|get#method2::T*>* => self::B2|method2<self::B2|get#method2::T*, S*>(#this, o);
+static method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%>
+ return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o);
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 4d3af5e..cf5467d 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -13,6 +13,27 @@
dart2js/late_statics: SemiFuzzFailure
static_field_lowering/opt_in: SemiFuzzFailure
+const_functions/const_functions_list: SemiFuzzCrash
+generic_metadata/typedef_generic_types_in_arguments_and_bounds: SemiFuzzCrash
+
+# These tests have "privacy issues" and isn't compatiable with splitting files (fuzzing):
+constructor_tearoffs/lowering/typedef_from: semiFuzzFailureOnForceRebuildBodies # parts not supported
+dart2js/mixin_default_values/main: semiFuzzFailureOnForceRebuildBodies # private method
+dartdevc/factory_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+dartdevc/private_covariant: semiFuzzFailureOnForceRebuildBodies # private method in class
+late_lowering/injected_late_field_checks/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+late_lowering/issue41436/issue41436: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+late_lowering/issue41922: semiFuzzFailureOnForceRebuildBodies # private field
+late_lowering/private_members: semiFuzzFailureOnForceRebuildBodies # parts not supported
+macros/inject_constructor: semiFuzzFailureOnForceRebuildBodies # Macro injection --- think it might introduce a class in a file?
+nnbd/injected_late_field_checks/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+nnbd/issue42504: semiFuzzFailureOnForceRebuildBodies # private class
+nnbd/issue43918: semiFuzzFailureOnForceRebuildBodies # private class
+nnbd/issue44595: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+nnbd/nullable_extension: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+nnbd/nullable_setter: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+none/mixin_super: semiFuzzFailureOnForceRebuildBodies # has private name mixin
+
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
enhanced_enums/declared_hashcode: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index e28929c..def324c 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -4,6 +4,12 @@
# Status file for the weak_suite.dart test suite.
+const_functions/const_functions_list: SemiFuzzCrash
+generic_metadata/typedef_generic_types_in_arguments_and_bounds: SemiFuzzCrash
+nnbd_mixed/mixed_mixin: SemiFuzzFailure
+no_such_method_forwarders/abstract_override_abstract_different_type: SemiFuzzFailure
+no_such_method_forwarders/abstract_override_with_different_signature: SemiFuzzFailure
+
dart2js/flutter_issue94561/main: SemiFuzzFailure
dart2js/flutter_issue94561/main.no_link: SemiFuzzFailure
dart2js/late_fields: SemiFuzzFailure
@@ -21,6 +27,55 @@
regress/utf_16_le_content.crash: SemiFuzzCrash
static_field_lowering/opt_in: SemiFuzzFailure
+# These tests have "privacy issues" and isn't compatiable with splitting files (fuzzing):
+constructor_tearoffs/lowering/typedef_from: semiFuzzFailureOnForceRebuildBodies # parts not supported
+dart2js/mixin_default_values/main: semiFuzzFailureOnForceRebuildBodies # private method
+dartdevc/factory_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+dartdevc/private_covariant: semiFuzzFailureOnForceRebuildBodies # private method in class
+extensions/internal_resolution: semiFuzzFailureOnForceRebuildBodies # unnamed extensions
+extensions/issue40816: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+extensions/on_function_type: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+extensions/unnamed_extensions: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+general/bug33099: semiFuzzFailureOnForceRebuildBodies # private class
+general/closure: semiFuzzFailureOnForceRebuildBodies # private field
+general/constants/rudimentary_test_01: semiFuzzFailureOnForceRebuildBodies # private method
+general/constants/with_unevaluated_agnostic/rudimentary_test_01: semiFuzzFailureOnForceRebuildBodies # private method
+general/constructor_const_inference: semiFuzzFailureOnForceRebuildBodies # private class
+general/constructor_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+general/issue31767: semiFuzzFailureOnForceRebuildBodies # private class, field
+general/issue45101/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+general/issue47036: semiFuzzFailureOnForceRebuildBodies # private class
+general/issue48548: semiFuzzFailureOnForceRebuildBodies # private field
+general/nested_lib_spec/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+general/part_as_entry_point: semiFuzzFailureOnForceRebuildBodies # parts not supported
+general/private_members: semiFuzzFailureOnForceRebuildBodies # parts not supported
+general/private_method_tearoff: semiFuzzFailureOnForceRebuildBodies # private method in class
+general/redirecting_factory_const_inference: semiFuzzFailureOnForceRebuildBodies # private class
+general/redirecting_factory_invocation_metadata: semiFuzzFailureOnForceRebuildBodies # parts not supported
+general/store_load: semiFuzzFailureOnForceRebuildBodies # private field in class
+general/top_level_accessors: semiFuzzFailureOnForceRebuildBodies # parts not supported
+general/typedef: semiFuzzFailureOnForceRebuildBodies # private typedef
+inference/downwards_inference_on_list_literals_infer_if_value_types_match_context: semiFuzzFailureOnForceRebuildBodies # private field
+late_lowering/injected_late_field_checks/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+
+late_lowering/issue41436/issue41436: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+late_lowering/issue41922: semiFuzzFailureOnForceRebuildBodies # private field
+late_lowering/private_members: semiFuzzFailureOnForceRebuildBodies # parts not supported
+macros/inject_constructor: semiFuzzFailureOnForceRebuildBodies # Macro injection --- think it might introduce a class in a file?
+nnbd_mixed/issue46518: semiFuzzFailureOnForceRebuildBodies # private method
+nnbd_mixed/no_null_shorting_explicit_extension: semiFuzzFailureOnForceRebuildBodies # private field in class
+nnbd_mixed/no_null_shorting_extension: semiFuzzFailureOnForceRebuildBodies # private field in class
+nnbd_mixed/nullable_extension_on_opt_out: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+nnbd_mixed/object_bound_redirecting_factory/main: semiFuzzFailureOnForceRebuildBodies # private constructor
+nnbd/injected_late_field_checks/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+nnbd/issue42504: semiFuzzFailureOnForceRebuildBodies # private class
+nnbd/issue43918: semiFuzzFailureOnForceRebuildBodies # private class
+nnbd/issue44595: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+nnbd/nullable_extension: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+nnbd/nullable_setter: semiFuzzFailureOnForceRebuildBodies # unnamed extension
+none/mixin_super: semiFuzzFailureOnForceRebuildBodies # has private name mixin
+regress/issue_39682: semiFuzzFailureOnForceRebuildBodies # has private method
+
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
enhanced_enums/declared_hashcode: TypeCheckError
diff --git a/tools/VERSION b/tools/VERSION
index 2441773..d7ac1d5 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 0
+PRERELEASE 1
PRERELEASE_PATCH 0
\ No newline at end of file