Version 2.13.0-21.0.dev
Merge commit 'dbfcf237d081ed77c9f1d8c984f3db2d4c9440d1' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 2b29fe4..29268f2 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
"constraint, update this by running tools/generate_package_config.dart."
],
"configVersion": 2,
- "generated": "2021-02-04T09:42:25.936196",
+ "generated": "2021-02-08T17:50:36.420568",
"generator": "tools/generate_package_config.dart",
"packages": [
{
@@ -112,7 +112,7 @@
"name": "async",
"rootUri": "../third_party/pkg/async",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "async_helper",
@@ -166,7 +166,7 @@
"name": "collection",
"rootUri": "../third_party/pkg/collection",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "compiler",
@@ -404,7 +404,7 @@
"name": "markdown",
"rootUri": "../third_party/pkg/markdown",
"packageUri": "lib/",
- "languageVersion": "2.6"
+ "languageVersion": "2.12"
},
{
"name": "matcher",
@@ -497,7 +497,7 @@
"name": "path",
"rootUri": "../third_party/pkg/path",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "pedantic",
@@ -665,19 +665,19 @@
"name": "test",
"rootUri": "../third_party/pkg/test/pkgs/test",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "test_api",
"rootUri": "../third_party/pkg/test/pkgs/test_api",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "test_core",
"rootUri": "../third_party/pkg/test/pkgs/test_core",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "test_descriptor",
@@ -782,4 +782,4 @@
"languageVersion": "2.12"
}
]
-}
\ No newline at end of file
+}
diff --git a/DEPS b/DEPS
index 397cf38..3316fb1 100644
--- a/DEPS
+++ b/DEPS
@@ -121,7 +121,7 @@
"linter_tag": "0.1.129",
"logging_rev": "e2f633b543ef89c54688554b15ca3d7e425b86a2",
"markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
- "markdown_rev": "6f89681d59541ddb1cf3a58efbdaa2304ffc3f51",
+ "markdown_rev": "9c4beaac96d8f008078e00b027915f81b665d2de",
"matcher_rev": "43d5cac48fcd386643016e767164da87c5c25e29",
"mime_rev": "c931f4bed87221beaece356494b43731445ce7b8",
"mockito_rev": "d39ac507483b9891165e422ec98d9fb480037c8b",
@@ -156,7 +156,7 @@
"test_descriptor_tag": "1.1.1",
"test_process_tag": "1.0.3",
"term_glyph_rev": "6a0f9b6fb645ba75e7a00a4e20072678327a0347",
- "test_reflective_loader_rev": "b76ae201ab9c6f3b90643958965e7cc215a38e9b",
+ "test_reflective_loader_rev": "54e930a11c372683792e22bddad79197728c91ce",
"test_rev": "bb98af3d17a821c28488ef8e2881e3ca173baf94",
"typed_data_tag": "f94fc57b8e8c0e4fe4ff6cfd8290b94af52d3719",
"usage_rev": "6c64d9e7b6b3758d06d030efcb5afe20bfc04dde",
diff --git a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
index ba9b171..ddd82cc 100644
--- a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
@@ -3485,7 +3485,8 @@
final Map<Statement, _BranchTargetContext<Variable, Type>>
_statementToContext = {};
- late FlowModel<Variable, Type> _current;
+ FlowModel<Variable, Type> _current =
+ new FlowModel<Variable, Type>(Reachability.initial);
/// The most recently visited expression for which an [ExpressionInfo] object
/// exists, or `null` if no expression has been visited that has a
@@ -3519,9 +3520,7 @@
{bool allowLocalBooleanVarsToPromote = false})
: allowLocalBooleanVarsToPromote =
allowLocalBooleanVarsToPromoteByDefault ||
- allowLocalBooleanVarsToPromote {
- _current = new FlowModel<Variable, Type>(Reachability.initial);
- }
+ allowLocalBooleanVarsToPromote;
@override
bool get isReachable => _current.reachable.overallReachable;
@@ -4141,7 +4140,7 @@
Variable? exceptionVariable, Variable? stackTraceVariable) {
_TryContext<Variable, Type> context =
_stack.last as _TryContext<Variable, Type>;
- _current = context._beforeCatch!;
+ _current = context._beforeCatch;
if (exceptionVariable != null) {
_current = _current.declare(exceptionVariable, true);
}
@@ -4162,7 +4161,7 @@
void tryCatchStatement_end() {
_TryContext<Variable, Type> context =
_stack.removeLast() as _TryContext<Variable, Type>;
- _current = context._afterBodyAndCatches!.unsplit();
+ _current = context._afterBodyAndCatches.unsplit();
}
@override
@@ -4177,11 +4176,11 @@
_TryFinallyContext<Variable, Type> context =
_stack.removeLast() as _TryFinallyContext<Variable, Type>;
if (allowLocalBooleanVarsToPromote) {
- _current = context._afterBodyAndCatches!
+ _current = context._afterBodyAndCatches
.attachFinally(typeOperations, context._beforeFinally, _current);
} else {
_current = _current.restrict(
- typeOperations, context._afterBodyAndCatches!, info._written);
+ typeOperations, context._afterBodyAndCatches, info._written);
}
}
@@ -5122,14 +5121,14 @@
extends _SimpleContext<Variable, Type> {
/// If the statement is a "try/catch" statement, the flow model representing
/// program state at the top of any `catch` block.
- FlowModel<Variable, Type>? _beforeCatch;
+ late final FlowModel<Variable, Type> _beforeCatch;
/// If the statement is a "try/catch" statement, the accumulated flow model
/// representing program state after the `try` block or one of the `catch`
/// blocks has finished executing. If the statement is a "try/finally"
/// statement, the flow model representing program state after the `try` block
/// has finished executing.
- FlowModel<Variable, Type>? _afterBodyAndCatches;
+ late FlowModel<Variable, Type> _afterBodyAndCatches;
_TryContext(FlowModel<Variable, Type> previous) : super(previous);
@@ -5143,7 +5142,7 @@
extends _TryContext<Variable, Type> {
/// The flow model representing program state at the top of the `finally`
/// block.
- late FlowModel<Variable, Type> _beforeFinally;
+ late final FlowModel<Variable, Type> _beforeFinally;
_TryFinallyContext(FlowModel<Variable, Type> previous) : super(previous);
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 71efad4..5ba8d5f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -1079,6 +1079,28 @@
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)>
+ templateConflictsWithImplicitSetter =
+ const Template<Message Function(String name)>(
+ messageTemplate:
+ r"""Conflicts with the implicit setter of the field '#name'.""",
+ withArguments: _withArgumentsConflictsWithImplicitSetter);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)> codeConflictsWithImplicitSetter =
+ const Code<Message Function(String name)>("ConflictsWithImplicitSetter",
+ analyzerCodes: <String>["CONFLICTS_WITH_MEMBER"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsConflictsWithImplicitSetter(String name) {
+ if (name.isEmpty) throw 'No name provided';
+ name = demangleMixinApplicationName(name);
+ return new Message(codeConflictsWithImplicitSetter,
+ message: """Conflicts with the implicit setter of the field '${name}'.""",
+ arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<Message Function(String name)> templateConflictsWithMember =
const Template<Message Function(String name)>(
messageTemplate: r"""Conflicts with member '#name'.""",
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
index 309bf3e..697726f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
@@ -17,7 +17,7 @@
/// The first step when processing a `for` control flow collection entry.
class ForCondition extends LiteralEntryInfo {
- late bool inStyle;
+ bool _inStyle = false;
ForCondition() : super(false, 0);
@@ -39,12 +39,12 @@
if (optional('in', token.next!) || optional(':', token.next!)) {
// Process `for ( ... in ... )`
- inStyle = true;
+ _inStyle = true;
token = parser.parseForInLoopPartsRest(
token, awaitToken, forToken, identifier);
} else {
// Process `for ( ... ; ... ; ... )`
- inStyle = false;
+ _inStyle = false;
token = parser.parseForLoopPartsRest(token, forToken, awaitToken);
}
return token;
@@ -57,17 +57,17 @@
(optional('await', next) && optional('for', next.next!))) {
return new Nested(
new ForCondition(),
- inStyle ? const ForInComplete() : const ForComplete(),
+ _inStyle ? const ForInComplete() : const ForComplete(),
);
} else if (optional('if', next)) {
return new Nested(
ifCondition,
- inStyle ? const ForInComplete() : const ForComplete(),
+ _inStyle ? const ForInComplete() : const ForComplete(),
);
} else if (optional('...', next) || optional('...?', next)) {
- return inStyle ? const ForInSpread() : const ForSpread();
+ return _inStyle ? const ForInSpread() : const ForSpread();
}
- return inStyle ? const ForInEntry() : const ForEntry();
+ return _inStyle ? const ForInEntry() : const ForEntry();
}
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
index 7c367b8..b577fba 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import '../scanner/error_token.dart' show UnmatchedToken;
-
import '../scanner/token.dart'
show
BeginToken,
@@ -227,28 +226,21 @@
}
class NextTokenStreamChange implements TokenStreamChange {
- late Token setOn;
- Token? setOnNext;
- late Token nextToken;
- Token? nextTokenPrevious;
- Token? nextTokenBeforeSynthetic;
+ final Token setOn;
+ final Token? setOnNext;
+ final Token nextToken;
+ final Token? nextTokenPrevious;
+ final Token? nextTokenBeforeSynthetic;
- NextTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+ NextTokenStreamChange(
+ UndoableTokenStreamRewriter rewriter, this.setOn, this.nextToken)
+ : setOnNext = setOn.next,
+ nextTokenPrevious = nextToken.previous,
+ nextTokenBeforeSynthetic = nextToken.beforeSynthetic {
rewriter._changes.add(this);
- }
-
- Token setNext(Token setOn, Token nextToken) {
- this.setOn = setOn;
- this.setOnNext = setOn.next;
- this.nextToken = nextToken;
- this.nextTokenPrevious = nextToken.previous;
- this.nextTokenBeforeSynthetic = nextToken.beforeSynthetic;
-
setOn.next = nextToken;
nextToken.previous = setOn;
nextToken.beforeSynthetic = setOn;
-
- return nextToken;
}
@override
@@ -260,17 +252,13 @@
}
class EndGroupTokenStreamChange implements TokenStreamChange {
- late BeginToken setOn;
- Token? endGroup;
+ final BeginToken setOn;
+ final Token? endGroup;
- EndGroupTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+ EndGroupTokenStreamChange(
+ UndoableTokenStreamRewriter rewriter, this.setOn, Token endGroup)
+ : endGroup = setOn.endGroup {
rewriter._changes.add(this);
- }
-
- void setEndGroup(BeginToken setOn, Token endGroup) {
- this.setOn = setOn;
- this.endGroup = setOn.endGroup;
-
setOn.endGroup = endGroup;
}
@@ -281,17 +269,13 @@
}
class OffsetTokenStreamChange implements TokenStreamChange {
- late Token setOn;
- late int offset;
+ final Token setOn;
+ final int offset;
- OffsetTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+ OffsetTokenStreamChange(
+ UndoableTokenStreamRewriter rewriter, this.setOn, int offset)
+ : offset = setOn.offset {
rewriter._changes.add(this);
- }
-
- void setOffset(Token setOn, int offset) {
- this.setOn = setOn;
- this.offset = setOn.offset;
-
setOn.offset = offset;
}
@@ -302,17 +286,13 @@
}
class PrecedingCommentsTokenStreamChange implements TokenStreamChange {
- late SimpleToken setOn;
- CommentToken? comment;
+ final SimpleToken setOn;
+ final CommentToken? comment;
- PrecedingCommentsTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+ PrecedingCommentsTokenStreamChange(
+ UndoableTokenStreamRewriter rewriter, this.setOn, CommentToken? comment)
+ : comment = setOn.precedingComments {
rewriter._changes.add(this);
- }
-
- void setPrecedingComments(SimpleToken setOn, CommentToken? comment) {
- this.setOn = setOn;
- this.comment = setOn.precedingComments;
-
setOn.precedingComments = comment;
}
@@ -323,17 +303,13 @@
}
class PreviousTokenStreamChange implements TokenStreamChange {
- late Token setOn;
- late Token previous;
+ final Token setOn;
+ final Token previous;
- PreviousTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+ PreviousTokenStreamChange(
+ UndoableTokenStreamRewriter rewriter, this.setOn, Token previous)
+ : previous = setOn.previous! {
rewriter._changes.add(this);
- }
-
- void setPrevious(Token setOn, Token previous) {
- this.setOn = setOn;
- this.previous = setOn.previous!;
-
setOn.previous = previous;
}
@@ -359,27 +335,26 @@
@override
void _setEndGroup(BeginToken setOn, Token endGroup) {
- new EndGroupTokenStreamChange(this).setEndGroup(setOn, endGroup);
+ new EndGroupTokenStreamChange(this, setOn, endGroup);
}
@override
Token _setNext(Token setOn, Token nextToken) {
- return new NextTokenStreamChange(this).setNext(setOn, nextToken);
+ return new NextTokenStreamChange(this, setOn, nextToken).nextToken;
}
@override
void _setOffset(Token setOn, int offset) {
- new OffsetTokenStreamChange(this).setOffset(setOn, offset);
+ new OffsetTokenStreamChange(this, setOn, offset);
}
@override
void _setPrecedingComments(SimpleToken setOn, CommentToken? comment) {
- new PrecedingCommentsTokenStreamChange(this)
- .setPrecedingComments(setOn, comment);
+ new PrecedingCommentsTokenStreamChange(this, setOn, comment);
}
@override
void _setPrevious(Token setOn, Token previous) {
- new PreviousTokenStreamChange(this).setPrevious(setOn, previous);
+ new PreviousTokenStreamChange(this, setOn, previous);
}
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart
index 73bcfb1..edd0af2 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart
@@ -915,7 +915,7 @@
final bool allowsVariance;
@override
- late int typeArgumentCount;
+ int typeArgumentCount = 0;
/// The `>` token which ends the type parameter or argument.
/// This closer may be synthetic, points to the next token in the stream,
@@ -938,7 +938,6 @@
TypeParamOrArgInfo compute() {
Token token;
Token next = start;
- typeArgumentCount = 0;
while (true) {
TypeInfo typeInfo =
computeType(next, /* required = */ true, inDeclaration);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
index 725cce1..65bd017 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
@@ -115,7 +115,7 @@
*/
Token? commentsTail;
- late final List<int> lineStarts;
+ final List<int> lineStarts;
/**
* The stack of open groups, e.g [: { ... ( .. :]
@@ -1948,22 +1948,11 @@
}
class LineStarts extends Object with ListMixin<int> {
- late List<int> array;
+ List<int> array;
int arrayLength = 0;
- LineStarts(int? numberOfBytesHint) {
- // Let's assume the average Dart file is 300 bytes.
- if (numberOfBytesHint == null) numberOfBytesHint = 300;
-
- // Let's assume we have on average 22 bytes per line.
- final int expectedNumberOfLines = 1 + (numberOfBytesHint ~/ 22);
-
- if (numberOfBytesHint > 65535) {
- array = new Uint32List(expectedNumberOfLines);
- } else {
- array = new Uint16List(expectedNumberOfLines);
- }
-
+ LineStarts(int? numberOfBytesHint)
+ : array = _createInitialArray(numberOfBytesHint) {
// The first line starts at character offset 0.
add(/* value = */ 0);
}
@@ -2022,6 +2011,20 @@
newArray.setRange(/* start = */ 0, arrayLength, array);
array = newArray;
}
+
+ static List<int> _createInitialArray(int? numberOfBytesHint) {
+ // Let's assume the average Dart file is 300 bytes.
+ numberOfBytesHint ??= 300;
+
+ // Let's assume we have on average 22 bytes per line.
+ final int expectedNumberOfLines = 1 + (numberOfBytesHint ~/ 22);
+
+ if (numberOfBytesHint > 65535) {
+ return new Uint32List(expectedNumberOfLines);
+ } else {
+ return new Uint16List(expectedNumberOfLines);
+ }
+ }
}
/// [ScannerConfiguration] contains information for configuring which tokens
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart
index 4e073b7..74c76f7 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart
@@ -60,21 +60,20 @@
/**
* The number of characters in the string.
*/
- late int _stringLength;
+ int _stringLength;
/**
* The index, relative to the string, of the next character to be read.
*/
- late int _charOffset;
+ int _charOffset;
/**
* Initialize a newly created reader to read the characters in the given
* [_sequence].
*/
- CharSequenceReader(this._sequence) {
- this._stringLength = _sequence.length;
- this._charOffset = 0;
- }
+ CharSequenceReader(this._sequence)
+ : _stringLength = _sequence.length,
+ _charOffset = 0;
@override
int get offset => _charOffset - 1;
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
index 4b15b5f..7594362 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
@@ -22,10 +22,10 @@
*/
class StringScanner extends AbstractScanner {
/** The file content. */
- late String string;
+ final String string;
/** The current offset in [string]. */
- late int scanOffset = -1;
+ int scanOffset = -1;
StringScanner(String string,
{ScannerConfiguration? configuration,
@@ -35,10 +35,9 @@
super(configuration, includeComments, languageVersionChanged);
StringScanner.recoveryOptionScanner(StringScanner copyFrom)
- : super.recoveryOptionScanner(copyFrom) {
- string = copyFrom.string;
- scanOffset = copyFrom.scanOffset;
- }
+ : string = copyFrom.string,
+ scanOffset = copyFrom.scanOffset,
+ super.recoveryOptionScanner(copyFrom);
StringScanner createRecoveryOptionScanner() {
return new StringScanner.recoveryOptionScanner(this);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
index 9ae4026..6f92ebe 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
@@ -696,7 +696,7 @@
/**
* The lexeme represented by this token.
*/
- late String _value;
+ final String _value;
/**
* Initialize a newly created token to represent a token of the given [type]
@@ -704,9 +704,8 @@
*/
StringToken(TokenType type, String value, int offset,
[CommentToken? precedingComment])
- : super(type, offset, precedingComment) {
- this._value = StringUtilities.intern(value);
- }
+ : _value = StringUtilities.intern(value),
+ super(type, offset, precedingComment);
@override
bool get isIdentifier => identical(kind, IDENTIFIER_TOKEN);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
index 9ef6fd2..da22f90 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
@@ -28,7 +28,7 @@
*
* The content is zero-terminated.
*/
- late List<int> bytes;
+ final List<int> bytes;
/**
* Points to the offset of the last byte returned by [advance].
@@ -98,8 +98,8 @@
}
Utf8BytesScanner.createRecoveryOptionScanner(Utf8BytesScanner copyFrom)
- : super.recoveryOptionScanner(copyFrom) {
- this.bytes = copyFrom.bytes;
+ : bytes = copyFrom.bytes,
+ super.recoveryOptionScanner(copyFrom) {
this.byteOffset = copyFrom.byteOffset;
this.scanSlack = copyFrom.scanSlack;
this.scanSlackOffset = copyFrom.scanSlackOffset;
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index bce5281..8adc153 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -425,7 +425,7 @@
FixKind('dart.fix.remove.unusedField', 50, 'Remove unused field');
static const REMOVE_UNUSED_IMPORT = FixKind(
'dart.fix.remove.unusedImport', 50, 'Remove unused import',
- appliedTogetherMessage: 'Remove all unused imports in this file');
+ appliedTogetherMessage: 'Remove all unused imports in file');
static const REMOVE_UNUSED_LABEL =
FixKind('dart.fix.remove.unusedLabel', 50, 'Remove unused label');
static const REMOVE_UNUSED_LOCAL_VARIABLE = FixKind(
@@ -438,7 +438,7 @@
FixKind('dart.fix.rename.toCamelCase', 50, "Rename to '{0}'");
static const REPLACE_BOOLEAN_WITH_BOOL = FixKind(
'dart.fix.replace.booleanWithBool', 50, "Replace 'boolean' with 'bool'",
- appliedTogetherMessage: "Replace all 'boolean' with 'bool' in file");
+ appliedTogetherMessage: "Replace all 'boolean's with 'bool' in file");
static const REPLACE_CASCADE_WITH_DOT =
FixKind('dart.fix.replace.cascadeWithDot', 50, "Replace '..' with '.'");
static const REPLACE_COLON_WITH_EQUALS =
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 97be45b..55d892e 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -271,6 +271,117 @@
}
}
+/// Computer for Dart "fix all in file" fixes.
+class FixInFileProcessor {
+ final DartFixContext context;
+ FixInFileProcessor(this.context);
+
+ Future<List<Fix>> compute() async {
+ var error = context.error;
+ var errors = context.resolveResult.errors.toList();
+ // Remove any analysis errors that don't have the expected error code name
+ errors.removeWhere((e) => error.errorCode.name != e.errorCode.name);
+
+ if (errors.length < 2) {
+ return const <Fix>[];
+ }
+
+ var instrumentationService = context.instrumentationService;
+ var workspace = context.workspace;
+ var resolveResult = context.resolveResult;
+
+ var generators = _getGenerators(
+ error.errorCode,
+ CorrectionProducerContext(
+ dartFixContext: context,
+ diagnostic: error,
+ resolvedResult: resolveResult,
+ selectionOffset: context.error.offset,
+ selectionLength: context.error.length,
+ workspace: workspace,
+ ));
+
+ var fixes = <Fix>[];
+ for (var generator in generators) {
+ var builder = ChangeBuilder(workspace: workspace);
+ for (var error in errors) {
+ var fixContext = DartFixContextImpl(
+ instrumentationService,
+ workspace,
+ resolveResult,
+ error,
+ (name) => [],
+ );
+ builder = await _fixError(fixContext, builder, generator(), error);
+ }
+ var sourceChange = builder.sourceChange;
+ if (sourceChange.edits.isNotEmpty) {
+ var fixKind = generator().fixKind;
+ // todo (pq): with a table redesign we can bail earlier.
+ if (fixKind.canBeAppliedTogether()) {
+ sourceChange.message = fixKind.appliedTogetherMessage;
+ fixes.add(Fix(fixKind, sourceChange));
+ }
+ }
+ }
+ return fixes;
+ }
+
+ Future<ChangeBuilder> _fixError(
+ DartFixContext fixContext,
+ ChangeBuilder builder,
+ CorrectionProducer producer,
+ AnalysisError diagnostic) async {
+ var context = CorrectionProducerContext(
+ applyingBulkFixes: true,
+ dartFixContext: fixContext,
+ diagnostic: diagnostic,
+ resolvedResult: fixContext.resolveResult,
+ selectionOffset: diagnostic.offset,
+ selectionLength: diagnostic.length,
+ workspace: fixContext.workspace,
+ );
+
+ var setupSuccess = context.setupCompute();
+ if (!setupSuccess) {
+ return null;
+ }
+
+ producer.configure(context);
+
+ try {
+ var localBuilder = builder.copy();
+ await producer.compute(localBuilder);
+ builder = localBuilder;
+ } on ConflictingEditException {
+ // If a conflicting edit was added in [compute], then the [localBuilder]
+ // is discarded and we revert to the previous state of the builder.
+ }
+
+ return builder;
+ }
+
+ List<ProducerGenerator> _getGenerators(
+ ErrorCode errorCode, CorrectionProducerContext context) {
+ var producers = <ProducerGenerator>[];
+ if (errorCode is LintCode) {
+ var generators = FixProcessor.lintProducerMap[errorCode.name];
+ if (generators != null) {
+ producers.addAll(generators);
+ }
+ } else {
+ var generators = FixProcessor.nonLintProducerMap[errorCode];
+ if (generators != null) {
+ if (generators != null) {
+ producers.addAll(generators);
+ }
+ }
+ // todo (pq): consider support for multiGenerators
+ }
+ return producers;
+ }
+}
+
/// The computer for Dart fixes.
class FixProcessor extends BaseProcessor {
/// A map from the names of lint rules to a list of generators used to create
diff --git a/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart b/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
new file mode 100644
index 0000000..a73400b
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+void main() {
+ defineReflectiveSuite(() {
+ // defineReflectiveTests(MultiFixInFileTest);
+ defineReflectiveTests(SingleFixInFileTest);
+ });
+}
+
+//// todo (pq): update w/ a FixKind that we're sure we want to support as a file fix
+// @reflectiveTest
+// class MultiFixInFileTest extends FixInFileProcessorTest
+// with WithNullSafetyMixin {
+// Future<void> test_nullable() async {
+// await resolveTestCode('''
+// class C {
+// String? s;
+// String? s2;
+// C({String this.s, String this.s2});
+// }
+// ''');
+//
+// var fixes = await getFixes();
+// expect(fixes, hasLength(2));
+//
+// var addRequired =
+// fixes.where((f) => f.kind == DartFixKind.ADD_REQUIRED).first;
+// assertProduces(addRequired, '''
+// class C {
+// String? s;
+// String? s2;
+// C({required String this.s, required String this.s2});
+// }
+// ''');
+//
+// var makeNullable =
+// fixes.where((f) => f.kind == DartFixKind.MAKE_VARIABLE_NULLABLE).first;
+// assertProduces(makeNullable, '''
+// class C {
+// String? s;
+// String? s2;
+// C({String? this.s, String? this.s2});
+// }
+// ''');
+// }
+// }
+
+@reflectiveTest
+class SingleFixInFileTest extends FixInFileProcessorTest {
+ Future<void> test_isNull() async {
+ await resolveTestCode('''
+bool f(p, q) {
+ return p is Null && q is Null;
+}
+''');
+
+ var fixes = await getFixes();
+ expect(fixes, hasLength(1));
+ assertProduces(fixes.first, '''
+bool f(p, q) {
+ return p == null && q == null;
+}
+''');
+ }
+}
+
+/// todo (pq): add negative tests
diff --git a/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart b/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart
index 70b6a66..ac90224 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart
@@ -25,6 +25,131 @@
export 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
+abstract class BaseFixProcessorTest extends AbstractSingleUnitTest {
+ /// The errors in the file for which fixes are being computed.
+ List<AnalysisError> _errors;
+
+ /// The source change associated with the fix that was found, or `null` if
+ /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
+ SourceChange change;
+
+ /// The result of applying the [change] to the file content, or `null` if
+ /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
+ String resultCode;
+
+ /// The workspace in which fixes contributor operates.
+ ChangeWorkspace get workspace {
+ return DartChangeWorkspace([session]);
+ }
+
+ Future<List<AnalysisError>> _computeErrors() async {
+ if (_errors == null) {
+ if (testAnalysisResult != null) {
+ _errors = testAnalysisResult.errors;
+ }
+ if (_errors == null) {
+ var result = await session.getResolvedUnit(testFile);
+ _errors = result.errors;
+ }
+ }
+ return _errors;
+ }
+
+ /// Find the error that is to be fixed by computing the errors in the file,
+ /// using the [errorFilter] to filter out errors that should be ignored, and
+ /// expecting that there is a single remaining error. The error filter should
+ /// return `true` if the error should not be ignored.
+ Future<AnalysisError> _findErrorToFix(
+ bool Function(AnalysisError) errorFilter,
+ {int length}) async {
+ var errors = await _computeErrors();
+ if (errorFilter != null) {
+ if (errors.length == 1) {
+ fail('Unnecessary error filter');
+ }
+ errors = errors.where(errorFilter).toList();
+ }
+ if (errors.isEmpty) {
+ fail('Expected one error, found: none');
+ } else if (errors.length > 1) {
+ var buffer = StringBuffer();
+ buffer.writeln('Expected one error, found:');
+ for (var error in errors) {
+ buffer.writeln(' $error [${error.errorCode}]');
+ }
+ fail(buffer.toString());
+ }
+ return errors[0];
+ }
+
+ Future<AnalysisError> _findErrorToFixOfType(ErrorCode errorCode) async {
+ var errors = await _computeErrors();
+ for (var error in errors) {
+ if (error.errorCode == errorCode) {
+ return error;
+ }
+ }
+ return null;
+ }
+}
+
+/// A base class defining support for writing fix-in-file processor tests.
+abstract class FixInFileProcessorTest extends BaseFixProcessorTest {
+ void assertProduces(Fix fix, String expected) {
+ var fileEdits = fix.change.edits;
+ expect(fileEdits, hasLength(1));
+
+ var fileContent = testCode;
+ resultCode = SourceEdit.applySequence(fileContent, fileEdits[0].edits);
+ expect(resultCode, expected);
+ }
+
+ Future<List<Fix>> getFixes() async {
+ var errors = await _computeErrors();
+ expect(errors, isNotEmpty);
+ String errorCode;
+ for (var error in errors) {
+ errorCode ??= error.errorCode.name;
+ if (errorCode != error.errorCode.name) {
+ fail('Expected only errors of one type but found: $errors');
+ }
+ }
+
+ var fixes = await _computeFixes(errors.first);
+ return fixes;
+ }
+
+ @override
+ void setUp() {
+ super.setUp();
+ verifyNoTestUnitErrors = false;
+ useLineEndingsForPlatform = true;
+ }
+
+ /// Computes fixes for the given [error] in [testUnit].
+ Future<List<Fix>> _computeFixes(AnalysisError error) async {
+ var analysisContext = contextFor(testFile);
+
+ var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
+ tracker.addContext(analysisContext);
+
+ var context = DartFixContextImpl(
+ TestInstrumentationService(),
+ workspace,
+ testAnalysisResult,
+ error,
+ (name) {
+ var provider = TopLevelDeclarationsProvider(tracker);
+ provider.doTrackerWork();
+ return provider.get(analysisContext, testFile, name);
+ },
+ );
+
+ var fixes = await FixInFileProcessor(context).compute();
+ return fixes;
+ }
+}
+
/// A base class defining support for writing fix processor tests that are
/// specific to fixes associated with lints that use the FixKind.
abstract class FixProcessorLintTest extends FixProcessorTest {
@@ -60,26 +185,10 @@
}
/// A base class defining support for writing fix processor tests.
-abstract class FixProcessorTest extends AbstractSingleUnitTest {
- /// The errors in the file for which fixes are being computed.
- List<AnalysisError> _errors;
-
- /// The source change associated with the fix that was found, or `null` if
- /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
- SourceChange change;
-
- /// The result of applying the [change] to the file content, or `null` if
- /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
- String resultCode;
-
+abstract class FixProcessorTest extends BaseFixProcessorTest {
/// Return the kind of fixes being tested by this test class.
FixKind get kind;
- /// The workspace in which fixes contributor operates.
- ChangeWorkspace get workspace {
- return DartChangeWorkspace([session]);
- }
-
Future<void> assertHasFix(String expected,
{bool Function(AnalysisError) errorFilter,
int length,
@@ -266,19 +375,6 @@
}
}
- Future<List<AnalysisError>> _computeErrors() async {
- if (_errors == null) {
- if (testAnalysisResult != null) {
- _errors = testAnalysisResult.errors;
- }
- if (_errors == null) {
- var result = await session.getResolvedUnit(testFile);
- _errors = result.errors;
- }
- }
- return _errors;
- }
-
/// Computes fixes for the given [error] in [testUnit].
Future<List<Fix>> _computeFixes(AnalysisError error) async {
var analysisContext = contextFor(testFile);
@@ -300,43 +396,6 @@
return await DartFixContributor().computeFixes(context);
}
- /// Find the error that is to be fixed by computing the errors in the file,
- /// using the [errorFilter] to filter out errors that should be ignored, and
- /// expecting that there is a single remaining error. The error filter should
- /// return `true` if the error should not be ignored.
- Future<AnalysisError> _findErrorToFix(
- bool Function(AnalysisError) errorFilter,
- {int length}) async {
- var errors = await _computeErrors();
- if (errorFilter != null) {
- if (errors.length == 1) {
- fail('Unnecessary error filter');
- }
- errors = errors.where(errorFilter).toList();
- }
- if (errors.isEmpty) {
- fail('Expected one error, found: none');
- } else if (errors.length > 1) {
- var buffer = StringBuffer();
- buffer.writeln('Expected one error, found:');
- for (var error in errors) {
- buffer.writeln(' $error [${error.errorCode}]');
- }
- fail(buffer.toString());
- }
- return errors[0];
- }
-
- Future<AnalysisError> _findErrorToFixOfType(ErrorCode errorCode) async {
- var errors = await _computeErrors();
- for (var error in errors) {
- if (error.errorCode == errorCode) {
- return error;
- }
- }
- return null;
- }
-
List<Position> _findResultPositions(List<String> searchStrings) {
var positions = <Position>[];
for (var search in searchStrings) {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
index 62832b7..41b5cce 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
@@ -81,6 +81,7 @@
import 'create_setter_test.dart' as create_setter;
import 'data_driven/test_all.dart' as data_driven;
import 'extend_class_for_mixin_test.dart' as extend_class_for_mixin;
+import 'fix_in_file_test.dart' as fix_in_file;
import 'fix_test.dart' as fix;
import 'import_async_test.dart' as import_async;
import 'import_library_prefix_test.dart' as import_library_prefix;
@@ -245,6 +246,7 @@
data_driven.main();
extend_class_for_mixin.main();
fix.main();
+ fix_in_file.main();
import_async.main();
import_library_prefix.main();
import_library_project.main();
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index b1db9af..215b4da 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -2521,6 +2521,9 @@
// test the static type of the expression
DartType staticType = expression.staticType!;
if (_typeSystem.isAssignableTo(staticType, fieldType)) {
+ if (!fieldType.isVoid) {
+ _checkForUseOfVoidResult(expression);
+ }
return;
}
// report problem
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index bb83b55..d584afe 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -1281,10 +1281,7 @@
}
}
-class _InheritanceManager3Base extends PubPackageResolutionTest
- with WithoutNullSafetyMixin {
- // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
- // test cases.
+class _InheritanceManager3Base extends PubPackageResolutionTest {
late final InheritanceManager3 manager;
@override
diff --git a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
index f9664da..ab1f6c6 100644
--- a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
@@ -392,12 +392,7 @@
@reflectiveTest
class AstRewriteMethodInvocationWithNonFunctionTypeAliasesTest
extends PubPackageResolutionTest
- with
- WithoutNullSafetyMixin,
- WithNonFunctionTypeAliasesMixin,
- AstRewriteMethodInvocationTestCases {
- // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
- // test cases.
+ with WithNonFunctionTypeAliasesMixin, AstRewriteMethodInvocationTestCases {
test_targetNull_typeAlias_interfaceType() async {
await assertNoErrorsInCode(r'''
class A<T, U> {
diff --git a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
index 9429125..59e92f4 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
@@ -16,9 +16,7 @@
@reflectiveTest
class ClassAliasDriverResolutionTest extends PubPackageResolutionTest
- with WithoutNullSafetyMixin, ElementsTypesMixin {
- // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
- // test cases.
+ with ElementsTypesMixin {
test_defaultConstructor() async {
await assertNoErrorsInCode(r'''
class A {}
@@ -69,8 +67,8 @@
assertElementTypes(
x.interfaces,
[
- interfaceTypeStar(a),
- interfaceTypeStar(b),
+ interfaceTypeNone(a),
+ interfaceTypeNone(b),
],
);
}
@@ -87,8 +85,8 @@
assertElementTypes(
x.mixins,
[
- interfaceTypeStar(a),
- interfaceTypeStar(b),
+ interfaceTypeNone(a),
+ interfaceTypeNone(b),
],
);
}
@@ -179,8 +177,8 @@
await assertNoErrorsInCode(r'''
class A {
A.c1(int a);
- A.c2(int a, [int b, int c]);
- A.c3(int a, {int b, int c});
+ A.c2(int a, [int b = 0, int c = 0]);
+ A.c3(int a, {int b = 0, int c = 0});
}
class M {}
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index f2bff29..da64df0 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -18,9 +18,7 @@
@reflectiveTest
class ClassDriverResolutionTest extends PubPackageResolutionTest
- with WithoutNullSafetyMixin, ElementsTypesMixin {
- // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
- // test cases.
+ with ElementsTypesMixin {
test_element_allSupertypes() async {
await assertNoErrorsInCode(r'''
class A {}
@@ -42,11 +40,11 @@
var d = findElement.class_('D');
var e = findElement.class_('E');
- var typeA = interfaceTypeStar(a);
- var typeB = interfaceTypeStar(b);
- var typeC = interfaceTypeStar(c);
- var typeD = interfaceTypeStar(d);
- var typeE = interfaceTypeStar(e);
+ var typeA = interfaceTypeNone(a);
+ var typeB = interfaceTypeNone(b);
+ var typeC = interfaceTypeNone(c);
+ var typeD = interfaceTypeNone(d);
+ var typeE = interfaceTypeNone(e);
assertElementTypes(
findElement.class_('X1').allSupertypes,
@@ -87,16 +85,16 @@
assertElementTypes(
findElement.class_('X1').allSupertypes,
[
- interfaceTypeStar(a, typeArguments: [stringType]),
+ interfaceTypeNone(a, typeArguments: [stringType]),
objectType
],
);
assertElementTypes(
findElement.class_('X2').allSupertypes,
[
- interfaceTypeStar(b, typeArguments: [
+ interfaceTypeNone(b, typeArguments: [
stringType,
- interfaceTypeStar(listElement, typeArguments: [intType])
+ interfaceTypeNone(listElement, typeArguments: [intType])
]),
objectType
],
@@ -104,8 +102,8 @@
assertElementTypes(
findElement.class_('X3').allSupertypes,
[
- interfaceTypeStar(c, typeArguments: [doubleType]),
- interfaceTypeStar(b, typeArguments: [intType, doubleType]),
+ interfaceTypeNone(c, typeArguments: [doubleType]),
+ interfaceTypeNone(b, typeArguments: [intType, doubleType]),
objectType
],
);
@@ -129,7 +127,7 @@
var c = findElement.class_('C');
assertElementTypes(
findElement.class_('X').allSupertypes,
- [interfaceTypeStar(a), interfaceTypeStar(b), interfaceTypeStar(c)],
+ [interfaceTypeNone(a), interfaceTypeNone(b), interfaceTypeNone(c)],
);
}
@@ -155,8 +153,8 @@
assertElementTypes(
c.interfaces,
[
- interfaceTypeStar(a),
- interfaceTypeStar(b),
+ interfaceTypeNone(a),
+ interfaceTypeNone(b),
],
);
}
@@ -175,8 +173,8 @@
assertElementTypes(
c.mixins,
[
- interfaceTypeStar(a),
- interfaceTypeStar(b),
+ interfaceTypeNone(a),
+ interfaceTypeNone(b),
],
);
}
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index 9e23683..7c8bd6a 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -19,9 +19,7 @@
@reflectiveTest
class MixinDriverResolutionTest extends PubPackageResolutionTest
- with WithoutNullSafetyMixin, ElementsTypesMixin {
- // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
- // test cases.
+ with ElementsTypesMixin {
test_accessor_getter() async {
await assertNoErrorsInCode(r'''
mixin M {
@@ -96,7 +94,7 @@
var mElement = findElement.mixin('M');
var aElement = findElement.class_('A');
- assertElementTypes(aElement.mixins, [interfaceTypeStar(mElement)]);
+ assertElementTypes(aElement.mixins, [interfaceTypeNone(mElement)]);
var mRef = findNode.typeName('M {} // A');
assertTypeName(mRef, mElement, 'M');
@@ -111,7 +109,7 @@
var mElement = findElement.mixin('M');
var aElement = findElement.class_('A');
- assertElementTypes(aElement.mixins, [interfaceTypeStar(mElement)]);
+ assertElementTypes(aElement.mixins, [interfaceTypeNone(mElement)]);
var mRef = findNode.typeName('M;');
assertTypeName(mRef, mElement, 'M');
@@ -168,15 +166,15 @@
var c = findElement.class_('C');
assertElementTypes(
findElement.mixin('M1').allSupertypes,
- [interfaceTypeStar(a), interfaceTypeStar(b), objectType],
+ [interfaceTypeNone(a), interfaceTypeNone(b), objectType],
);
assertElementTypes(
findElement.mixin('M2').allSupertypes,
[
- interfaceTypeStar(a),
+ interfaceTypeNone(a),
objectType,
- interfaceTypeStar(b),
- interfaceTypeStar(c)
+ interfaceTypeNone(b),
+ interfaceTypeNone(c)
],
);
}
@@ -195,15 +193,15 @@
assertElementTypes(
findElement.mixin('M1').allSupertypes,
[
- interfaceTypeStar(a, typeArguments: [intType, doubleType]),
+ interfaceTypeNone(a, typeArguments: [intType, doubleType]),
objectType
],
);
assertElementTypes(
findElement.mixin('M2').allSupertypes,
[
- interfaceTypeStar(b, typeArguments: [stringType]),
- interfaceTypeStar(a, typeArguments: [intType, stringType]),
+ interfaceTypeNone(b, typeArguments: [stringType]),
+ interfaceTypeNone(a, typeArguments: [intType, stringType]),
objectType
],
);
@@ -325,7 +323,7 @@
var randomElement = mathImport.importedLibrary!.getType('Random')!;
var element = findElement.mixin('M');
- assertElementTypes(element.interfaces, [interfaceTypeStar(randomElement)]);
+ assertElementTypes(element.interfaces, [interfaceTypeNone(randomElement)]);
var typeRef = findNode.typeName('Random {}');
assertTypeName(typeRef, randomElement, 'Random',
@@ -413,15 +411,15 @@
test_error_mixinApplicationConcreteSuperInvokedMemberType_method() async {
await assertErrorsInCode(r'''
class I {
- void foo([int p]) {}
+ void foo([int? p]) {}
}
class A {
- void foo(int p) {}
+ void foo(int? p) {}
}
abstract class B extends A implements I {
- void foo([int p]);
+ void foo([int? p]);
}
mixin M on I {
@@ -435,7 +433,7 @@
error(
CompileTimeErrorCode
.MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE,
- 224,
+ 227,
1),
]);
}
@@ -447,7 +445,7 @@
}
mixin M<U> on A<U> {
- void remove(Object x) {
+ void remove(Object? x) {
super.remove(x as U);
}
}
@@ -858,7 +856,7 @@
var element = findElement.mixin('M');
assertElementTypes(element.superclassConstraints, [
- interfaceTypeStar(randomElement),
+ interfaceTypeNone(randomElement),
]);
var typeRef = findNode.typeName('Random {}');
@@ -937,7 +935,7 @@
var a = findElement.mixin('A');
var b = findElement.mixin('B');
assertElementTypes(b.superclassConstraints, [
- interfaceTypeStar(a),
+ interfaceTypeNone(a),
]);
}
@@ -972,7 +970,7 @@
test_field() async {
await assertNoErrorsInCode(r'''
mixin M<T> {
- T f;
+ late T f;
}
''');
@@ -992,7 +990,7 @@
expect(fields, hasLength(1));
var fElement = fields[0];
- assertElementName(fElement, 'f', offset: 17);
+ assertElementName(fElement, 'f', offset: 22);
assertEnclosingElement(fElement, element);
var fNode = findNode.variableDeclaration('f;');
@@ -1018,11 +1016,11 @@
assertElementTypes(element.interfaces, [
findElement.class_('A').instantiate(
typeArguments: const [],
- nullabilitySuffix: NullabilitySuffix.star,
+ nullabilitySuffix: NullabilitySuffix.none,
),
findElement.class_('B').instantiate(
typeArguments: const [],
- nullabilitySuffix: NullabilitySuffix.star,
+ nullabilitySuffix: NullabilitySuffix.none,
),
]);
@@ -1089,19 +1087,17 @@
test_methodCallTypeInference_mixinType() async {
await assertErrorsInCode('''
-main() {
+g(M<T> f<T>()) {
C<int> c = f();
}
class C<T> {}
mixin M<T> on C<T> {}
-
-M<T> f<T>() => null;
''', [
- error(HintCode.UNUSED_LOCAL_VARIABLE, 18, 1),
+ error(HintCode.UNUSED_LOCAL_VARIABLE, 26, 1),
]);
- var fInvocation = findNode.methodInvocation('f()');
+ var fInvocation = findNode.functionExpressionInvocation('f()');
assertInvokeType(fInvocation, 'M<int> Function()');
}
@@ -1117,11 +1113,11 @@
assertElementTypes(element.superclassConstraints, [
findElement.class_('A').instantiate(
typeArguments: const [],
- nullabilitySuffix: NullabilitySuffix.star,
+ nullabilitySuffix: NullabilitySuffix.none,
),
findElement.class_('B').instantiate(
typeArguments: const [],
- nullabilitySuffix: NullabilitySuffix.star,
+ nullabilitySuffix: NullabilitySuffix.none,
),
]);
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
index a893d8b..478f092 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
@@ -10,13 +10,12 @@
main() {
defineReflectiveSuite(() {
defineReflectiveTests(ConflictingGenericInterfacesTest);
- defineReflectiveTests(ConflictingGenericInterfacesWithNullSafetyTest);
});
}
@reflectiveTest
class ConflictingGenericInterfacesTest extends PubPackageResolutionTest
- with WithoutNullSafetyMixin {
+ with WithNonFunctionTypeAliasesMixin {
test_class_extends_implements() async {
await assertErrorsInCode('''
class I<T> {}
@@ -28,52 +27,6 @@
]);
}
- test_class_extends_with() async {
- await assertErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-class B implements I<String> {}
-class C extends A with B {}
-''', [
- error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 27),
- ]);
- }
-
- test_classTypeAlias_extends_with() async {
- await assertErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-mixin M implements I<String> {}
-class C = A with M;
-''', [
- error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 19),
- ]);
- }
-
- test_mixin_on_implements() async {
- await assertErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-class B implements I<String> {}
-mixin M on A implements B {}
-''', [
- error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 28),
- ]);
- }
-
- test_noConflict() async {
- await assertNoErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-class B implements I<int> {}
-class C extends A implements B {}
-''');
- }
-}
-
-@reflectiveTest
-class ConflictingGenericInterfacesWithNullSafetyTest
- extends ConflictingGenericInterfacesTest with WithNullSafetyMixin {
test_class_extends_implements_never() async {
await assertNoErrorsInCode('''
class I<T> {}
@@ -122,6 +75,17 @@
''');
}
+ test_class_extends_with() async {
+ await assertErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+class B implements I<String> {}
+class C extends A with B {}
+''', [
+ error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 27),
+ ]);
+ }
+
test_class_mixed_viaLegacy() async {
newFile('$testPackageLibPath/a.dart', content: r'''
class A<T> {}
@@ -181,4 +145,55 @@
error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 24, 8),
]);
}
+
+ test_classTypeAlias_extends_nonFunctionTypedef_with() async {
+ await assertErrorsInCode('''
+class I<T> {}
+typedef A = I<int>;
+mixin M implements I<String> {}
+class C = A with M;
+''', [
+ error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 66, 19),
+ ]);
+ }
+
+ test_classTypeAlias_extends_nonFunctionTypedef_with_ok() async {
+ await assertNoErrorsInCode('''
+class I<T> {}
+typedef A = I<String>;
+mixin M implements I<String> {}
+class C = A with M;
+''');
+ }
+
+ test_classTypeAlias_extends_with() async {
+ await assertErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+mixin M implements I<String> {}
+class C = A with M;
+''', [
+ error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 19),
+ ]);
+ }
+
+ test_mixin_on_implements() async {
+ await assertErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+class B implements I<String> {}
+mixin M on A implements B {}
+''', [
+ error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 28),
+ ]);
+ }
+
+ test_noConflict() async {
+ await assertNoErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+class B implements I<int> {}
+class C extends A implements B {}
+''');
+ }
}
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
index e25c163..061b5e3 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -729,6 +729,26 @@
@reflectiveTest
class UseOfVoidResultTest_NonNullable extends PubPackageResolutionTest
with WithNullSafetyMixin {
+ test_assignment_toDynamic() async {
+ await assertErrorsInCode('''
+void f(void x) {
+ // ignore:unused_local_variable
+ dynamic v = x;
+}
+''', [
+ error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 65, 1),
+ ]);
+ }
+
+ test_assignment_toVoid() async {
+ await assertNoErrorsInCode('''
+void f(void x) {
+ // ignore:unused_local_variable
+ void v = x;
+}
+''');
+ }
+
test_await() async {
await assertErrorsInCode('''
main(void x) async {
@@ -739,6 +759,26 @@
]);
}
+ test_constructorFieldInitializer_toDynamic() async {
+ await assertErrorsInCode('''
+class A {
+ dynamic f;
+ A(void x) : f = x;
+}
+''', [
+ error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 41, 1),
+ ]);
+ }
+
+ test_constructorFieldInitializer_toVoid() async {
+ await assertNoErrorsInCode('''
+class A {
+ void f;
+ A(void x) : f = x;
+}
+''');
+ }
+
test_nullCheck() async {
await assertErrorsInCode(r'''
f(void x) {
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 5fa624c..d7bc492 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -4495,27 +4495,17 @@
await assertErrorsInCode('''
class Base {
var x;
- Base() : x = print('Base.1') { print('Base.2'); }
+ Base() : x = 1;
}
class Derived extends Base {
var y, z;
- Derived()
- : y = print('Derived.1'),
- super(),
- z = print('Derived.2') {
- print('Derived.3');
- }
+ Derived() : y = 1, super(), z = 2;
}
class Valid extends Base {
var y, z;
- Valid()
- : y = print('Valid.1'),
- z = print('Valid.2'),
- super() {
- print('Valid.3');
- }
+ Valid(): y = 1, z = 2, super();
}
class AlsoValid extends Base {
@@ -4524,7 +4514,7 @@
main() => new Derived();
''', [
- error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 170, 5),
+ error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 105, 5),
]);
}
diff --git a/pkg/analyzer/tool/summary/check_test.dart b/pkg/analyzer/tool/summary/check_test.dart
index 24ca23e..a5d0473 100644
--- a/pkg/analyzer/tool/summary/check_test.dart
+++ b/pkg/analyzer/tool/summary/check_test.dart
@@ -1,4 +1,3 @@
-// @dart = 2.9
// Copyright (c) 2015, 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.
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index cb5beab..cc515a9 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -1,4 +1,3 @@
-// @dart = 2.9
// Copyright (c) 2015, 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.
@@ -74,7 +73,7 @@
///
/// If [builder] is `true`, the returned type should be appropriate for use in
/// a builder class.
- String defaultValue(idl_model.FieldType type, bool builder) {
+ String? defaultValue(idl_model.FieldType type, bool builder) {
if (type.isList) {
if (builder) {
idl_model.FieldType elementType =
@@ -83,9 +82,11 @@
} else {
return 'const <${idlPrefix(type.typeName)}>[]';
}
- } else if (_idl.enums.containsKey(type.typeName)) {
- return '${idlPrefix(type.typeName)}.'
- '${_idl.enums[type.typeName].values[0].name}';
+ }
+
+ var enum_ = _idl.enums[type.typeName];
+ if (enum_ != null) {
+ return '${idlPrefix(type.typeName)}.${enum_.values[0].name}';
} else if (type.typeName == 'double') {
return '0.0';
} else if (type.typeName == 'int') {
@@ -155,12 +156,19 @@
}
}
- void outDoc(String documentation) {
+ void outDoc(String? documentation) {
if (documentation != null) {
documentation.split('\n').forEach(out);
}
}
+ /// Execute [out] of [s] in [indent].
+ void outWithIndent(String s) {
+ indent(() {
+ out(s);
+ });
+ }
+
/// Enclose [s] in quotes, escaping as necessary.
String quoted(String s) {
return json.encode(s);
@@ -188,8 +196,8 @@
idl_model.LogicalProperty property,
) {
var assertCondition = property.variants
- ?.map((key) => '${class_.variantField} == idl.$key')
- ?.join(' || ');
+ .map((key) => '${class_.variantField} == idl.$key')
+ .join(' || ');
return 'assert($assertCondition);';
}
}
@@ -269,8 +277,9 @@
for (var field in sortedFields) {
var logicalProperties = field.logicalProperties;
if (logicalProperties != null) {
- for (var logicalName in logicalProperties.keys) {
- var logicalProperty = logicalProperties[logicalName];
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
if (logicalProperty.variants.contains(variant)) {
writeField(
logicalName,
@@ -303,9 +312,11 @@
out('$builderName.$constructorName({');
for (var field in cls.fields) {
- if (field.logicalProperties != null) {
- for (var logicalName in field.logicalProperties.keys) {
- var logicalProperty = field.logicalProperties[logicalName];
+ var logicalProperties = field.logicalProperties;
+ if (logicalProperties != null) {
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
if (logicalProperty.variants.contains(variant)) {
out('${encodedType2(field.type)} $logicalName,');
}
@@ -319,9 +330,11 @@
var separator = ',';
for (var field in cls.fields) {
- if (field.logicalProperties != null) {
- for (var logicalName in field.logicalProperties.keys) {
- var logicalProperty = field.logicalProperties[logicalName];
+ var logicalProperties = field.logicalProperties;
+ if (logicalProperties != null) {
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
if (logicalProperty.variants.contains(variant)) {
out('$separator _${field.name} = $logicalName');
separator = ', ';
@@ -373,8 +386,8 @@
idl_model.FieldType fieldType = field.type;
String valueName = '_' + field.name;
String offsetName = 'offset_' + field.name;
- String condition;
- String writeCode;
+ String? condition;
+ String? writeCode;
if (fieldType.isList) {
condition = ' || $valueName!.isEmpty';
if (_idl.classes.containsKey(fieldType.typeName)) {
@@ -409,9 +422,7 @@
} else {
out('if (!($valueName == null$condition)) {');
}
- indent(() {
- out(writeCode);
- });
+ outWithIndent(writeCode);
out('}');
}
}
@@ -423,7 +434,7 @@
idl_model.FieldType fieldType = field.type;
String valueName = '_' + field.name;
String condition = '$valueName != null';
- String writeCode;
+ String? writeCode;
if (fieldType.isList ||
fieldType.typeName == 'String' ||
_idl.classes.containsKey(fieldType.typeName)) {
@@ -447,9 +458,7 @@
throw UnimplementedError('Writing type ${fieldType.typeName}');
}
out('if ($condition) {');
- indent(() {
- out(writeCode);
- });
+ outWithIndent(writeCode);
out('}');
}
out('return fbBuilder.endTable();');
@@ -488,8 +497,9 @@
for (var field in cls.fields) {
var logicalProperties = field.logicalProperties;
if (logicalProperties != null) {
- for (var logicalName in logicalProperties.keys) {
- var logicalProperty = logicalProperties[logicalName];
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
if (logicalProperty.variants.contains(variant)) {
writeField(
logicalName,
@@ -519,16 +529,18 @@
String fieldName = field.name;
idl_model.FieldType fieldType = field.type;
String typeStr = encodedType(fieldType);
- String def = defaultValue(fieldType, true);
+ String? def = defaultValue(fieldType, true);
String defSuffix = def == null ? '' : ' ??= $def';
out();
if (field.isDeprecated) {
out('@override');
out('Null get $fieldName => ${_BaseGenerator._throwDeprecated};');
} else {
- if (field.logicalProperties != null) {
- for (var logicalName in field.logicalProperties.keys) {
- var logicalProperty = field.logicalProperties[logicalName];
+ var logicalProperties = field.logicalProperties;
+ if (logicalProperties != null) {
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
out('@override');
out('$typeStr get $logicalName {');
indent(() {
@@ -549,9 +561,10 @@
outDoc(field.documentation);
- if (field.logicalProperties != null) {
- for (var logicalName in field.logicalProperties.keys) {
- var logicalProperty = field.logicalProperties[logicalName];
+ if (logicalProperties != null) {
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
out('set $logicalName($typeStr value) {');
indent(() {
out(_variantAssertStatement(cls, logicalProperty));
@@ -640,8 +653,8 @@
out('List<int> toBuffer() {');
indent(() {
out('fb.Builder fbBuilder = fb.Builder();');
- String fileId =
- cls.fileIdentifier == null ? '' : ', ${quoted(cls.fileIdentifier)}';
+ var idOrNull = cls.fileIdentifier;
+ var fileId = idOrNull == null ? '' : ', ${quoted(idOrNull)}';
out('return fbBuilder.finish(finish(fbBuilder)$fileId);');
});
out('}');
@@ -654,7 +667,7 @@
final StringBuffer _outBuffer = StringBuffer();
/// Semantic model of the "IDL" input file.
- idl_model.Idl _idl;
+ final idl_model.Idl _idl = idl_model.Idl();
_CodeGenerator(String idlPath) {
// Parse the input "IDL" file.
@@ -674,12 +687,13 @@
/// [extractIdl]).
void checkIdl() {
_idl.classes.forEach((String name, idl_model.ClassDeclaration cls) {
- if (cls.fileIdentifier != null) {
- if (cls.fileIdentifier.length != 4) {
+ var fileIdentifier = cls.fileIdentifier;
+ if (fileIdentifier != null) {
+ if (fileIdentifier.length != 4) {
throw Exception('$name: file identifier must be 4 characters');
}
- for (int i = 0; i < cls.fileIdentifier.length; i++) {
- if (cls.fileIdentifier.codeUnitAt(i) >= 256) {
+ for (int i = 0; i < fileIdentifier.length; i++) {
+ if (fileIdentifier.codeUnitAt(i) >= 256) {
throw Exception(
'$name: file identifier must be encodable as Latin-1');
}
@@ -724,21 +738,21 @@
/// Process the AST in [idlParsed] and store the resulting semantic model in
/// [_idl]. Also perform some error checking.
void extractIdl(CompilationUnit idlParsed) {
- _idl = idl_model.Idl();
for (CompilationUnitMember decl in idlParsed.declarations) {
if (decl is ClassDeclaration) {
bool isTopLevel = false;
bool isDeprecated = false;
- String fileIdentifier;
+ String? fileIdentifier;
String clsName = decl.name;
- String variantField;
+ String? variantField;
for (Annotation annotation in decl.metadata) {
- if (annotation.arguments != null &&
+ var arguments = annotation.arguments;
+ if (arguments != null &&
annotation.name == 'TopLevel' &&
annotation.constructorName == null) {
isTopLevel = true;
- if (annotation.arguments.length == 1) {
- Expression arg = annotation.arguments[0];
+ if (arguments.length == 1) {
+ Expression arg = arguments[0];
if (arg is StringLiteral) {
fileIdentifier = arg.stringValue;
} else {
@@ -746,19 +760,19 @@
'Class `$clsName`: TopLevel argument must be a string'
' literal');
}
- } else if (annotation.arguments.isNotEmpty) {
+ } else if (arguments.isNotEmpty) {
throw Exception(
'Class `$clsName`: TopLevel requires 0 or 1 arguments');
}
- } else if (annotation.arguments == null &&
+ } else if (arguments == null &&
annotation.name == 'deprecated' &&
annotation.constructorName == null) {
isDeprecated = true;
- } else if (annotation.arguments != null &&
+ } else if (arguments != null &&
annotation.name == 'Variant' &&
annotation.constructorName == null) {
- if (annotation.arguments.length == 1) {
- Expression arg = annotation.arguments[0];
+ if (arguments.length == 1) {
+ Expression arg = arguments[0];
if (arg is StringLiteral) {
variantField = arg.stringValue;
} else {
@@ -766,7 +780,7 @@
'Class `$clsName`: @Variant argument must be a string literal',
);
}
- } else if (annotation.arguments.isNotEmpty) {
+ } else if (arguments.isNotEmpty) {
throw Exception(
'Class `$clsName`: @Variant requires 1 argument',
);
@@ -783,7 +797,8 @@
);
_idl.classes[clsName] = cls;
String expectedBase = 'base.SummaryClass';
- if (decl.superclass == null || decl.superclass.name != expectedBase) {
+ var superclass = decl.superclass;
+ if (superclass == null || superclass.name != expectedBase) {
throw Exception('Class `$clsName` needs to extend `$expectedBase`');
}
for (ClassMember classMember in decl.members) {
@@ -798,12 +813,12 @@
}
}
} else if (decl is EnumDeclaration) {
- String doc = _getNodeDoc(decl);
+ var doc = _getNodeDoc(decl);
idl_model.EnumDeclaration enm =
idl_model.EnumDeclaration(doc, decl.name);
_idl.enums[enm.name] = enm;
for (EnumConstantDeclaration constDecl in decl.constants) {
- String doc = _getNodeDoc(constDecl);
+ var doc = _getNodeDoc(constDecl);
enm.values.add(idl_model.EnumValueDeclaration(doc, constDecl.name));
}
} else {
@@ -879,41 +894,43 @@
MethodDeclaration getter,
) {
var desc = '${cls.name}.${getter.name}';
- if (getter.returnType == null) {
+
+ var type = getter.returnType;
+ if (type == null) {
throw Exception('Getter needs a type: $desc');
}
- var type = getter.returnType;
-
var isList = false;
- if (type.name == 'List' &&
- type.typeArguments != null &&
- type.typeArguments.length == 1) {
- isList = true;
- type = type.typeArguments[0];
+ if (type.name == 'List') {
+ var typeArguments = type.typeArguments;
+ if (typeArguments != null && typeArguments.length == 1) {
+ isList = true;
+ type = typeArguments[0];
+ }
}
if (type.typeArguments != null) {
throw Exception('Cannot handle type arguments in `$type`');
}
- int id;
- List<String> variants;
+ int? id;
+ List<String>? variants;
bool isDeprecated = false;
bool isInformative = false;
for (Annotation annotation in getter.metadata) {
+ var arguments = annotation.arguments;
if (annotation.name == 'Id') {
if (id != null) {
throw Exception('Duplicate @id annotation ($getter)');
}
- if (annotation.arguments == null) {
+ if (arguments == null) {
throw Exception('@Id must be passed an argument ($desc)');
}
- if (annotation.arguments.length != 1) {
+ if (arguments.length != 1) {
throw Exception('@Id must be passed exactly one argument ($desc)');
}
- var idExpression = annotation.arguments[0];
+ var idExpression = arguments[0];
if (idExpression is IntegerLiteral) {
id = idExpression.value;
} else {
@@ -922,7 +939,7 @@
);
}
} else if (annotation.name == 'deprecated') {
- if (annotation.arguments != null) {
+ if (arguments != null) {
throw Exception('@deprecated does not take args ($desc)');
}
isDeprecated = true;
@@ -936,16 +953,16 @@
throw Exception('Duplicate @VariantId annotation ($getter)');
}
- if (annotation.arguments == null) {
+ if (arguments == null) {
throw Exception('@VariantId must be given arguments ($desc)');
}
- if (annotation.arguments.length != 2) {
+ if (arguments.length != 2) {
throw Exception(
'@VariantId must be given exactly two arguments ($desc)',
);
}
- var idExpression = annotation.arguments[0];
+ var idExpression = arguments[0];
if (idExpression is IntegerLiteral) {
id = idExpression.value;
} else {
@@ -954,7 +971,7 @@
);
}
- var variantExpression = annotation.arguments[1];
+ var variantExpression = arguments[1];
if (variantExpression is NamedExpression) {
if (variantExpression.name == 'variant') {
variants = [variantExpression.expression.toCode()];
@@ -982,21 +999,22 @@
var fieldType = idl_model.FieldType(type.name, isList);
String name = getter.name;
- Map<String, idl_model.LogicalProperty> logicalProperties;
+ Map<String, idl_model.LogicalProperty>? logicalProperties;
if (variants != null) {
var fieldsWithSameId =
cls.allFields.where((field) => field.id == id).toList();
if (fieldsWithSameId.isNotEmpty) {
var existingField = fieldsWithSameId.single;
- if (existingField.logicalProperties == null) {
+ var logicalProperties = existingField.logicalProperties;
+ if (logicalProperties == null) {
throw Exception('$desc: id $id is already used as a non-variant '
'field: ${existingField.name}');
}
- var map = existingField.logicalProperties;
for (var variant in variants) {
- for (var logicalName in map.keys) {
- if (map[logicalName].variants.contains(variant)) {
+ for (var entry in logicalProperties.entries) {
+ if (entry.value.variants.contains(variant)) {
+ var logicalName = entry.key;
throw Exception('$desc: id $id is already used for $logicalName');
}
}
@@ -1008,13 +1026,13 @@
);
}
- if (map[getter.name] != null) {
+ if (logicalProperties[getter.name] != null) {
throw Exception(
'$desc: logical property ${getter.name} is already used',
);
}
- map[getter.name] = idl_model.LogicalProperty(
+ logicalProperties[getter.name] = idl_model.LogicalProperty(
isDeprecated: isDeprecated,
isInformative: isInformative,
variants: variants,
@@ -1047,8 +1065,8 @@
/// Return the documentation text of the given [node], or `null` if the [node]
/// does not have a comment. Each line is `\n` separated.
- String _getNodeDoc(AnnotatedNode node) {
- Comment comment = node.documentationComment;
+ String? _getNodeDoc(AnnotatedNode node) {
+ var comment = node.documentationComment;
if (comment != null && comment.isDocumentation) {
if (comment.tokens.length == 1 &&
comment.tokens.first.lexeme.startsWith('/*')) {
@@ -1146,11 +1164,12 @@
// Standard flatbuffers only support one root type. We support multiple
// root types. For now work around this by forcing PackageBundle to be the
// root type. TODO(paulberry): come up with a better solution.
- idl_model.ClassDeclaration rootType = _idl.classes['PackageBundle'];
+ idl_model.ClassDeclaration rootType = _idl.classes['PackageBundle']!;
out('root_type ${rootType.name};');
- if (rootType.fileIdentifier != null) {
+ var rootFileIdentifier = rootType.fileIdentifier;
+ if (rootFileIdentifier != null) {
out();
- out('file_identifier ${quoted(rootType.fileIdentifier)};');
+ out('file_identifier ${quoted(rootFileIdentifier)};');
}
}
@@ -1221,7 +1240,7 @@
String typeName = type.typeName;
// Prepare "readCode" + "def"
String readCode;
- String def = defaultValue(type, false);
+ String? def = defaultValue(type, false);
if (type.isList) {
if (typeName == 'bool') {
readCode = 'const fb.BoolListReader()';
@@ -1235,10 +1254,11 @@
} else if (_idl.classes.containsKey(typeName)) {
String itemCode = '_${typeName}Reader()';
readCode = 'const fb.ListReader<${idlPrefix(typeName)}>($itemCode)';
- } else {
- assert(_idl.enums.containsKey(typeName));
+ } else if (_idl.enums.containsKey(typeName)) {
String itemCode = '_${typeName}Reader()';
readCode = 'const fb.ListReader<${idlPrefix(typeName)}>($itemCode)';
+ } else {
+ throw Exception('$name.$fieldName: illegal type ($type)');
}
} else if (typeName == 'bool') {
readCode = 'const fb.BoolReader()';
@@ -1248,12 +1268,13 @@
readCode = 'const fb.Uint32Reader()';
} else if (typeName == 'String') {
readCode = 'const fb.StringReader()';
- } else if (_idl.enums.containsKey(typeName)) {
- readCode = 'const _${typeName}Reader()';
} else if (_idl.classes.containsKey(typeName)) {
readCode = 'const _${typeName}Reader()';
+ } else if (_idl.enums.containsKey(typeName)) {
+ readCode = 'const _${typeName}Reader()';
+ } else {
+ throw Exception('$name.$fieldName: illegal type ($type)');
}
- assert(readCode != null);
// Write the getter implementation.
out();
String returnType = _dartType(type);
@@ -1261,9 +1282,11 @@
out('@override');
out('Null get $fieldName => ${_BaseGenerator._throwDeprecated};');
} else {
- if (field.logicalProperties != null) {
- for (var logicalName in field.logicalProperties.keys) {
- var logicalProperty = field.logicalProperties[logicalName];
+ var logicalProperties = field.logicalProperties;
+ if (logicalProperties != null) {
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
out('@override');
out('$returnType get $logicalName {');
indent(() {
@@ -1332,7 +1355,7 @@
String jsonStore(
idl_model.FieldType type, String name, String localName) {
- _StringToString convertItem;
+ _StringToString? convertItem;
if (_idl.classes.containsKey(type.typeName)) {
convertItem = (String name) => '$name.toJson()';
} else if (_idl.enums.containsKey(type.typeName)) {
@@ -1384,8 +1407,9 @@
for (idl_model.FieldDeclaration field in cls.fields) {
var logicalProperties = field.logicalProperties;
if (logicalProperties != null) {
- for (var logicalName in logicalProperties.keys) {
- var logicalProperty = logicalProperties[logicalName];
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
if (logicalProperty.variants.contains(variant)) {
var localName = 'local_${field.name}';
out('var $localName = ${field.name};');
@@ -1427,9 +1451,11 @@
indent(() {
out('return {');
for (idl_model.FieldDeclaration field in cls.fields) {
- if (field.logicalProperties != null) {
- for (var logicalName in field.logicalProperties.keys) {
- var logicalProperty = field.logicalProperties[logicalName];
+ var logicalProperties = field.logicalProperties;
+ if (logicalProperties != null) {
+ for (var logicalEntry in logicalProperties.entries) {
+ var logicalName = logicalEntry.key;
+ var logicalProperty = logicalEntry.value;
if (logicalProperty.variants.contains(variant)) {
out('${quoted(logicalName)}: $logicalName,');
}
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index a81c33c..8523476 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -40,7 +40,7 @@
class ClassDeclaration extends CompilationUnitMember {
final String name;
- final TypeName superclass;
+ final TypeName? superclass;
final List<ClassMember> members;
@@ -106,7 +106,7 @@
final String name;
EnumConstantDeclaration(
- Comment? documentationComment, List<Annotation> metadata, this.name)
+ Comment? documentationComment, List<Annotation>? metadata, this.name)
: super(documentationComment, metadata);
}
@@ -155,7 +155,7 @@
final String name;
- final TypeName returnType;
+ final TypeName? returnType;
MethodDeclaration(Comment? documentationComment, List<Annotation>? metadata,
this.isGetter, this.name, this.returnType)
@@ -223,7 +223,7 @@
void endClassDeclaration(Token beginToken, Token endToken) {
debugEvent("ClassDeclaration");
var members = popTypedList<ClassMember>() ?? [];
- var superclass = pop() as TypeName;
+ var superclass = pop() as TypeName?;
pop(); // Type variables
var name = pop() as String;
var metadata = popTypedList<Annotation>();
@@ -253,7 +253,7 @@
pop(); // Formal parameters
pop(); // Type variables
var name = pop() as String;
- var returnType = pop() as TypeName;
+ var returnType = pop() as TypeName?;
var metadata = popTypedList<Annotation>();
var comment = pop() as Comment?;
push(MethodDeclaration(
@@ -359,7 +359,7 @@
debugEvent("Metadata");
inMetadata = false;
var arguments = pop() as List?;
- var constructorName = popIfNotNull(periodBeforeName) as String;
+ var constructorName = popIfNotNull(periodBeforeName) as String?;
pop(); // Type arguments
var name = pop() as String;
push(Annotation(name, constructorName,
@@ -434,7 +434,7 @@
@override
void handleIdentifier(Token token, IdentifierContext context) {
if (context == IdentifierContext.enumValueDeclaration) {
- var metadata = popTypedList() as List<Annotation>;
+ var metadata = popTypedList() as List<Annotation>?;
var comment = pop() as Comment?;
push(EnumConstantDeclaration(comment, metadata, token.lexeme));
} else {
diff --git a/pkg/compiler/lib/src/common_elements.dart b/pkg/compiler/lib/src/common_elements.dart
index 38e856c..0010e02 100644
--- a/pkg/compiler/lib/src/common_elements.dart
+++ b/pkg/compiler/lib/src/common_elements.dart
@@ -285,7 +285,7 @@
ClassEntity get jsIntClass;
- ClassEntity get jsDoubleClass;
+ ClassEntity get jsNumNotIntClass;
ClassEntity get jsNullClass;
@@ -1293,10 +1293,10 @@
@override
ClassEntity get jsIntClass => _jsIntClass ??= _findInterceptorsClass('JSInt');
- ClassEntity _jsDoubleClass;
+ ClassEntity _jsNumNotIntClass;
@override
- ClassEntity get jsDoubleClass =>
- _jsDoubleClass ??= _findInterceptorsClass('JSDouble');
+ ClassEntity get jsNumNotIntClass =>
+ _jsNumNotIntClass ??= _findInterceptorsClass('JSNumNotInt');
ClassEntity _jsNullClass;
@override
diff --git a/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart b/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
index 024f6a2..93a30d0 100644
--- a/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
+++ b/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
@@ -125,7 +125,7 @@
/// The [AbstractValue] that represents a non-null subtype of `double` at
/// runtime.
- AbstractValue get doubleType;
+ AbstractValue get numNotIntType;
/// The [AbstractValue] that represents a non-null subtype of `num` at
/// runtime.
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
index 15738f2..22a900b 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
@@ -611,9 +611,9 @@
int get numType =>
_numType ??= createNonNullSubclass(commonElements.jsNumberClass);
- int _doubleType;
- int get doubleType =>
- _doubleType ??= createNonNullExact(commonElements.jsDoubleClass);
+ int _numNotIntType;
+ int get numNotIntType =>
+ _numNotIntType ??= createNonNullExact(commonElements.jsNumNotIntClass);
int _intType;
int get intType =>
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
index 0931fee..fedb435 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
@@ -767,8 +767,8 @@
PowersetValue(_abstractValueDomain.numType, _powersetBitsDomain.numType);
@override
- AbstractValue get doubleType => PowersetValue(
- _abstractValueDomain.doubleType, _powersetBitsDomain.doubleType);
+ AbstractValue get numNotIntType => PowersetValue(
+ _abstractValueDomain.numNotIntType, _powersetBitsDomain.numNotIntType);
@override
AbstractValue get intType =>
diff --git a/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart b/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
index 46a60ad..d60a060 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
@@ -566,8 +566,8 @@
WrappedAbstractValue(_abstractValueDomain.numType);
@override
- AbstractValue get doubleType =>
- WrappedAbstractValue(_abstractValueDomain.doubleType);
+ AbstractValue get numNotIntType =>
+ WrappedAbstractValue(_abstractValueDomain.numNotIntType);
@override
AbstractValue get intType =>
diff --git a/pkg/compiler/lib/src/inferrer/trivial.dart b/pkg/compiler/lib/src/inferrer/trivial.dart
index 8e176be..27e4f12b 100644
--- a/pkg/compiler/lib/src/inferrer/trivial.dart
+++ b/pkg/compiler/lib/src/inferrer/trivial.dart
@@ -420,7 +420,7 @@
AbstractValue get numType => const TrivialAbstractValue();
@override
- AbstractValue get doubleType => const TrivialAbstractValue();
+ AbstractValue get numNotIntType => const TrivialAbstractValue();
@override
AbstractValue get intType => const TrivialAbstractValue();
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/constants.dart b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
index 7495c23..b562b3c 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
@@ -41,12 +41,11 @@
if (constant_system.isInt(constant)) {
if (constant.isMinusZero) {
return _abstractValueDomain.uint31Type;
- } else {
- assert(constant.isPositiveInfinity || constant.isNegativeInfinity);
- return _abstractValueDomain.intType;
}
+ assert(constant.isPositiveInfinity || constant.isNegativeInfinity);
+ return _abstractValueDomain.intType;
}
- return _abstractValueDomain.doubleType;
+ return _abstractValueDomain.numNotIntType;
}
@override
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
index 649bc88..451af33 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
@@ -235,7 +235,7 @@
bool containsOnlyNum(JClosedWorld closedWorld) {
return containsOnlyInt(closedWorld) ||
base == closedWorld.commonElements.doubleClass ||
- base == closedWorld.commonElements.jsDoubleClass ||
+ base == closedWorld.commonElements.jsNumNotIntClass ||
base == closedWorld.commonElements.numClass ||
base == closedWorld.commonElements.jsNumberClass;
}
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
index 50fa04f..2ac07ca 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
@@ -52,7 +52,7 @@
TypeMask _uint32Type;
TypeMask _uint31Type;
TypeMask _positiveIntType;
- TypeMask _doubleType;
+ TypeMask _numNotIntType;
TypeMask _numType;
TypeMask _boolType;
TypeMask _functionType;
@@ -114,8 +114,8 @@
commonElements.jsPositiveIntClass, _closedWorld);
@override
- TypeMask get doubleType => _doubleType ??=
- new TypeMask.nonNullExact(commonElements.jsDoubleClass, _closedWorld);
+ TypeMask get numNotIntType => _numNotIntType ??=
+ new TypeMask.nonNullExact(commonElements.jsNumNotIntClass, _closedWorld);
@override
TypeMask get numType => _numType ??=
@@ -500,14 +500,14 @@
AbstractBool.maybeOrFalse(_canBePrimitiveNumber(value));
bool _canBePrimitiveNumber(TypeMask value) {
- // TODO(sra): It should be possible to test only jsDoubleClass and
+ // TODO(sra): It should be possible to test only jsNumNotIntClass and
// jsUInt31Class, since all others are superclasses of these two.
return _containsType(value, commonElements.jsNumberClass) ||
_containsType(value, commonElements.jsIntClass) ||
_containsType(value, commonElements.jsPositiveIntClass) ||
_containsType(value, commonElements.jsUInt32Class) ||
_containsType(value, commonElements.jsUInt31Class) ||
- _containsType(value, commonElements.jsDoubleClass);
+ _containsType(value, commonElements.jsNumNotIntClass);
}
@override
diff --git a/pkg/compiler/lib/src/js_backend/backend_impact.dart b/pkg/compiler/lib/src/js_backend/backend_impact.dart
index 39c5e4f..327156c 100644
--- a/pkg/compiler/lib/src/js_backend/backend_impact.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_impact.dart
@@ -212,7 +212,7 @@
_commonElements.jsUInt32Class,
_commonElements.jsUInt31Class,
_commonElements.jsNumberClass,
- _commonElements.jsDoubleClass
+ _commonElements.jsNumNotIntClass,
]);
}
diff --git a/pkg/compiler/lib/src/js_backend/codegen_listener.dart b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
index c85c14c..bbac3ae 100644
--- a/pkg/compiler/lib/src/js_backend/codegen_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
@@ -271,8 +271,8 @@
registerInstantiation(_commonElements.jsUInt32Class);
registerInstantiation(_commonElements.jsUInt31Class);
registerInstantiation(_commonElements.jsNumberClass);
- } else if (cls == _commonElements.jsDoubleClass) {
- registerInstantiation(_commonElements.jsDoubleClass);
+ } else if (cls == _commonElements.jsNumNotIntClass) {
+ registerInstantiation(_commonElements.jsNumNotIntClass);
registerInstantiation(_commonElements.jsNumberClass);
} else if (cls == _commonElements.boolClass ||
cls == _commonElements.jsBoolClass) {
@@ -287,7 +287,7 @@
registerInstantiation(_commonElements.jsPositiveIntClass);
registerInstantiation(_commonElements.jsUInt32Class);
registerInstantiation(_commonElements.jsUInt31Class);
- registerInstantiation(_commonElements.jsDoubleClass);
+ registerInstantiation(_commonElements.jsNumNotIntClass);
registerInstantiation(_commonElements.jsNumberClass);
} else if (cls == _commonElements.jsJavaScriptObjectClass) {
registerInstantiation(_commonElements.jsJavaScriptObjectClass);
diff --git a/pkg/compiler/lib/src/js_backend/namer.dart b/pkg/compiler/lib/src/js_backend/namer.dart
index 132100f..559c51e 100644
--- a/pkg/compiler/lib/src/js_backend/namer.dart
+++ b/pkg/compiler/lib/src/js_backend/namer.dart
@@ -1647,7 +1647,7 @@
if (cls == commonElements.objectClass) return "o";
if (cls == commonElements.jsStringClass) return "s";
if (cls == commonElements.jsArrayClass) return "a";
- if (cls == commonElements.jsDoubleClass) return "d";
+ if (cls == commonElements.jsNumNotIntClass) return "d";
if (cls == commonElements.jsIntClass) return "i";
if (cls == commonElements.jsNumberClass) return "n";
if (cls == commonElements.jsNullClass) return "u";
diff --git a/pkg/compiler/lib/src/js_backend/resolution_listener.dart b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
index a889fc8..faff4b7 100644
--- a/pkg/compiler/lib/src/js_backend/resolution_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
@@ -373,8 +373,8 @@
_addInterceptors(_commonElements.jsUInt32Class, impactBuilder);
_addInterceptors(_commonElements.jsUInt31Class, impactBuilder);
_addInterceptors(_commonElements.jsNumberClass, impactBuilder);
- } else if (cls == _commonElements.jsDoubleClass) {
- _addInterceptors(_commonElements.jsDoubleClass, impactBuilder);
+ } else if (cls == _commonElements.jsNumNotIntClass) {
+ _addInterceptors(_commonElements.jsNumNotIntClass, impactBuilder);
_addInterceptors(_commonElements.jsNumberClass, impactBuilder);
} else if (cls == _commonElements.boolClass ||
cls == _commonElements.jsBoolClass) {
@@ -389,7 +389,7 @@
_addInterceptors(_commonElements.jsPositiveIntClass, impactBuilder);
_addInterceptors(_commonElements.jsUInt32Class, impactBuilder);
_addInterceptors(_commonElements.jsUInt31Class, impactBuilder);
- _addInterceptors(_commonElements.jsDoubleClass, impactBuilder);
+ _addInterceptors(_commonElements.jsNumNotIntClass, impactBuilder);
_addInterceptors(_commonElements.jsNumberClass, impactBuilder);
} else if (cls == _commonElements.jsJavaScriptObjectClass) {
_addInterceptors(_commonElements.jsJavaScriptObjectClass, impactBuilder);
diff --git a/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
index c0d9037..b325c92 100644
--- a/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
@@ -62,7 +62,7 @@
if (cls == _commonElements.jsBoolClass) {
condition = js('(typeof receiver) == "boolean"');
} else if (cls == _commonElements.jsIntClass ||
- cls == _commonElements.jsDoubleClass ||
+ cls == _commonElements.jsNumNotIntClass ||
cls == _commonElements.jsNumberClass) {
throw 'internal error';
} else if (cls == _commonElements.jsArrayClass ||
@@ -82,7 +82,7 @@
bool hasArray = false;
bool hasBool = false;
- bool hasDouble = false;
+ bool hasNumNotInt = false;
bool hasInt = false;
bool hasNull = false;
bool hasNumber = false;
@@ -98,8 +98,8 @@
hasArray = true;
else if (cls == _commonElements.jsBoolClass)
hasBool = true;
- else if (cls == _commonElements.jsDoubleClass)
- hasDouble = true;
+ else if (cls == _commonElements.jsNumNotIntClass)
+ hasNumNotInt = true;
else if (cls == _commonElements.jsIntClass)
hasInt = true;
else if (cls == _commonElements.jsNullClass)
@@ -123,7 +123,7 @@
}
}
}
- if (hasDouble) {
+ if (hasNumNotInt) {
hasNumber = true;
}
if (hasInt) hasNumber = true;
@@ -138,21 +138,22 @@
if (hasNumber) {
jsAst.Statement whenNumber;
- /// Note: there are two number classes in play: Dart's [num],
- /// and JavaScript's Number (typeof receiver == 'number'). This
- /// is the fallback used when we have determined that receiver
- /// is a JavaScript Number.
- jsAst.Expression interceptorForNumber = interceptorFor(hasDouble
- ? _commonElements.jsDoubleClass
- : _commonElements.jsNumberClass);
-
if (hasInt) {
whenNumber = js.statement('''{
if (Math.floor(receiver) == receiver) return #;
return #;
- }''',
- [interceptorFor(_commonElements.jsIntClass), interceptorForNumber]);
+ }''', [
+ interceptorFor(_commonElements.jsIntClass),
+ interceptorFor(_commonElements.jsNumNotIntClass)
+ ]);
} else {
+ // If we don't have methods defined on the JSInt interceptor, use the
+ // JSNumber interceptor, unless we have a method defined only for
+ // non-integral values.
+ jsAst.Expression interceptorForNumber = interceptorFor(hasNumNotInt
+ ? _commonElements.jsNumNotIntClass
+ : _commonElements.jsNumberClass);
+
whenNumber = js.statement('return #', interceptorForNumber);
}
statements
@@ -242,7 +243,7 @@
}
if (!classes.contains(_commonElements.jsIntClass) &&
!classes.contains(_commonElements.jsNumberClass) &&
- !classes.contains(_commonElements.jsDoubleClass)) {
+ !classes.contains(_commonElements.jsNumNotIntClass)) {
return null;
}
if (selector.argumentCount == 1) {
diff --git a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
index d54784a..c7ffca6 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -141,7 +141,7 @@
return _commonElements.jsArrayClass;
} else if (_abstractValueDomain.isNumberOrNull(type).isDefinitelyTrue &&
!interceptedClasses.contains(_commonElements.jsIntClass) &&
- !interceptedClasses.contains(_commonElements.jsDoubleClass)) {
+ !interceptedClasses.contains(_commonElements.jsNumNotIntClass)) {
// If the method being intercepted is not defined in [int] or [double] we
// can safely use the number interceptor. This is because none of the
// [int] or [double] methods are called from a method defined on [num].
@@ -259,7 +259,7 @@
// If we found that we need number, we must still go through all
// uses to check if they require int, or double.
if (interceptedClasses.contains(_commonElements.jsNumberClass) &&
- !(interceptedClasses.contains(_commonElements.jsDoubleClass) ||
+ !(interceptedClasses.contains(_commonElements.jsNumNotIntClass) ||
interceptedClasses.contains(_commonElements.jsIntClass))) {
Set<ClassEntity> required;
for (HInstruction user in node.usedBy) {
@@ -270,9 +270,9 @@
required ??= {};
required.add(_commonElements.jsIntClass);
}
- if (intercepted.contains(_commonElements.jsDoubleClass)) {
+ if (intercepted.contains(_commonElements.jsNumNotIntClass)) {
required ??= {};
- required.add(_commonElements.jsDoubleClass);
+ required.add(_commonElements.jsNumNotIntClass);
}
}
}
diff --git a/pkg/compiler/test/impact/data/classes.dart b/pkg/compiler/test/impact/data/classes.dart
index 729755b..bbd8d76 100644
--- a/pkg/compiler/test/impact/data/classes.dart
+++ b/pkg/compiler/test/impact/data/classes.dart
@@ -268,8 +268,8 @@
Enum.index=IntConstant(0)],
type=[
const:Enum,
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSString,
diff --git a/pkg/compiler/test/impact/data/constants/main.dart b/pkg/compiler/test/impact/data/constants/main.dart
index 0b1bf8d..a29bd63 100644
--- a/pkg/compiler/test/impact/data/constants/main.dart
+++ b/pkg/compiler/test/impact/data/constants/main.dart
@@ -70,13 +70,25 @@
return local;
}
-/*member: intLiteral:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: intLiteral:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
intLiteral() {
const dynamic local = 42;
return local;
}
-/*member: doubleLiteral:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: doubleLiteral:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
doubleLiteral() {
const dynamic local = 0.5;
return local;
@@ -149,10 +161,22 @@
/*member: boolLiteralRef:type=[inst:JSBool]*/
boolLiteralRef() => boolLiteralField;
-/*member: intLiteralRef:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: intLiteralRef:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
intLiteralRef() => intLiteralField;
-/*member: doubleLiteralRef:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: doubleLiteralRef:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
doubleLiteralRef() => doubleLiteralField;
/*member: stringLiteralRef:type=[inst:JSString]*/
@@ -207,10 +231,22 @@
/*member: boolLiteralDeferred:type=[inst:JSBool]*/
boolLiteralDeferred() => defer.boolLiteralField;
-/*member: intLiteralDeferred:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: intLiteralDeferred:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
intLiteralDeferred() => defer.intLiteralField;
-/*member: doubleLiteralDeferred:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: doubleLiteralDeferred:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
doubleLiteralDeferred() => defer.doubleLiteralField;
/*member: stringLiteralDeferred:type=[inst:JSString]*/
diff --git a/pkg/compiler/test/impact/data/effectively_final.dart b/pkg/compiler/test/impact/data/effectively_final.dart
index 5fb31a4..cc54f75 100644
--- a/pkg/compiler/test/impact/data/effectively_final.dart
+++ b/pkg/compiler/test/impact/data/effectively_final.dart
@@ -25,9 +25,9 @@
List.length=,
int.+],
type=[
- inst:JSDouble,
inst:JSInt,
inst:JSNull,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -49,9 +49,9 @@
length,
length=],
type=[
- inst:JSDouble,
inst:JSInt,
inst:JSNull,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -113,8 +113,8 @@
type=[
inst:Closure,
inst:JSBool,
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -176,8 +176,8 @@
type=[
inst:Closure,
inst:JSBool,
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSString,
diff --git a/pkg/compiler/test/impact/data/expressions.dart b/pkg/compiler/test/impact/data/expressions.dart
index 5161a7a..6b4b041 100644
--- a/pkg/compiler/test/impact/data/expressions.dart
+++ b/pkg/compiler/test/impact/data/expressions.dart
@@ -74,8 +74,8 @@
testNot() => !false;
/*member: testUnaryMinus:type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -88,25 +88,49 @@
/*member: testPostInc:
dynamic=[+],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testPostInc(o) => o++;
/*member: testPostDec:
dynamic=[-],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testPostDec(o) => o--;
/*member: testPreInc:
dynamic=[+],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testPreInc(o) => ++o;
/*member: testPreDec:
dynamic=[-],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testPreDec(o) => --o;
diff --git a/pkg/compiler/test/impact/data/future_or.dart b/pkg/compiler/test/impact/data/future_or.dart
index 1a13b89..4738bf6 100644
--- a/pkg/compiler/test/impact/data/future_or.dart
+++ b/pkg/compiler/test/impact/data/future_or.dart
@@ -14,8 +14,8 @@
checkTypeBound(4),
print(1)],
type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
diff --git a/pkg/compiler/test/impact/data/initializers.dart b/pkg/compiler/test/impact/data/initializers.dart
index 5c6b4b5..bb2066f 100644
--- a/pkg/compiler/test/impact/data/initializers.dart
+++ b/pkg/compiler/test/impact/data/initializers.dart
@@ -128,7 +128,13 @@
/*member: testFieldInitializer1:
static=[ClassFieldInitializer1.(1)],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testFieldInitializer1() => new ClassFieldInitializer1(42);
@@ -142,7 +148,13 @@
/*member: testFieldInitializer2:
static=[ClassFieldInitializer2.(1)],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testFieldInitializer2() => new ClassFieldInitializer2(42);
@@ -158,8 +170,16 @@
}
/*member: testFieldInitializer3:
- static=[ClassFieldInitializer3.a(0),ClassFieldInitializer3.b(1)],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ static=[
+ ClassFieldInitializer3.a(0),
+ ClassFieldInitializer3.b(1)],
+ type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]
*/
testFieldInitializer3() {
new ClassFieldInitializer3.a();
@@ -344,8 +364,8 @@
ClassGeneric.(1),
checkTypeBound(4)],
type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
diff --git a/pkg/compiler/test/impact/data/invokes.dart b/pkg/compiler/test/impact/data/invokes.dart
index cb1acfc..6702f0c 100644
--- a/pkg/compiler/test/impact/data/invokes.dart
+++ b/pkg/compiler/test/impact/data/invokes.dart
@@ -98,8 +98,8 @@
topLevelFunction3(1,b,c),
topLevelFunction3(1,c)],
type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -276,9 +276,9 @@
topLevelFunction3Typed(1,c)],
type=[
inst:JSBool,
- inst:JSDouble,
inst:JSInt,
inst:JSNull,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSString,
@@ -845,8 +845,8 @@
f8(1,b,c),
f9(1,b,c)],
type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -870,8 +870,8 @@
/*member: testDynamicSet:
dynamic=[foo=],
type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -886,29 +886,25 @@
var l;
}
-/*member: testLocalWithInitializer:
- type=[
- inst:JSDouble,
+/*member: testLocalWithInitializer:type=[
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
- inst:JSUInt32]
-*/
+ inst:JSUInt32]*/
testLocalWithInitializer() {
// ignore: UNUSED_LOCAL_VARIABLE
var l = 42;
}
-/*member: testLocalWithInitializerTyped:
- type=[
- inst:JSDouble,
+/*member: testLocalWithInitializerTyped:type=[
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
- inst:JSUInt32]
-*/
+ inst:JSUInt32]*/
testLocalWithInitializerTyped() {
// ignore: UNUSED_LOCAL_VARIABLE
int l = 42;
@@ -1058,8 +1054,9 @@
/*member: testInvokeIndex:
dynamic=[[]],
- type=[inst:JSDouble,
+ type=[
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
@@ -1069,9 +1066,10 @@
/*member: testInvokeIndexSet:
dynamic=[[]=],
- type=[inst:JSDouble,
+ type=[
inst:JSInt,
inst:JSNull,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
diff --git a/pkg/compiler/test/impact/data/literals.dart b/pkg/compiler/test/impact/data/literals.dart
index 4956865..05b7c0c 100644
--- a/pkg/compiler/test/impact/data/literals.dart
+++ b/pkg/compiler/test/impact/data/literals.dart
@@ -73,10 +73,22 @@
/*member: testFalse:type=[inst:JSBool]*/
testFalse() => false;
-/*member: testInt:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: testInt:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
testInt() => 42;
-/*member: testDouble:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: testDouble:type=[
+ inst:JSInt,
+ inst:JSNumNotInt,
+ inst:JSNumber,
+ inst:JSPositiveInt,
+ inst:JSUInt31,
+ inst:JSUInt32]*/
testDouble() => 37.5;
/*member: testString:type=[inst:JSString]*/
diff --git a/pkg/compiler/test/impact/data/statements.dart b/pkg/compiler/test/impact/data/statements.dart
index d3505dc..0685c84 100644
--- a/pkg/compiler/test/impact/data/statements.dart
+++ b/pkg/compiler/test/impact/data/statements.dart
@@ -33,32 +33,28 @@
testAssertWithMessage();
}
-/*member: testIfThen:
- type=[
+/*member: testIfThen:type=[
inst:JSBool,
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
- inst:JSUInt32]
-*/
+ inst:JSUInt32]*/
testIfThen() {
// ignore: DEAD_CODE
if (false) return 42;
return 1;
}
-/*member: testIfThenElse:
- type=[
+/*member: testIfThenElse:type=[
inst:JSBool,
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
- inst:JSUInt32]
-*/
+ inst:JSUInt32]*/
testIfThenElse() {
if (true)
return 42;
@@ -260,8 +256,8 @@
throwExpression(1),
wrapException(1)],
type=[
- inst:JSDouble,
inst:JSInt,
+ inst:JSNumNotInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSString,
diff --git a/pkg/compiler/test/inference/data/call_site.dart b/pkg/compiler/test/inference/data/call_site.dart
index ac2b579..90356a6 100644
--- a/pkg/compiler/test/inference/data/call_site.dart
+++ b/pkg/compiler/test/inference/data/call_site.dart
@@ -77,9 +77,9 @@
/*member: A5.:[exact=A5]*/
class A5 {
- /*member: A5.x5:Union([exact=JSDouble], [exact=JSUInt31])*/
+ /*member: A5.x5:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
x5(
- /*Union([exact=JSDouble], [exact=JSUInt31])*/ p) =>
+ /*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ p) =>
p;
}
@@ -91,9 +91,9 @@
/*member: A6.:[exact=A6]*/
class A6 {
- /*member: A6.x6:Union([exact=JSDouble], [exact=JSUInt31])*/
+ /*member: A6.x6:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
x6(
- /*Union([exact=JSDouble], [exact=JSUInt31])*/ p) =>
+ /*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ p) =>
p;
}
@@ -206,7 +206,7 @@
class A14 {
/*member: A14.x14:[exact=JSUInt31]*/
x14(
- /*Union([exact=JSDouble], [exact=JSUInt31])*/ p) =>
+ /*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ p) =>
1;
}
@@ -280,7 +280,7 @@
class A18 {
/*member: A18.x18:[exact=JSUInt31]*/
x18(/*[exact=JSUInt31]*/ p1,
- [/*[exact=JSBool]*/ p2 = 1, /*[exact=JSDouble]*/ p3 = "s"]) =>
+ [/*[exact=JSBool]*/ p2 = 1, /*[exact=JSNumNotInt]*/ p3 = "s"]) =>
1;
}
diff --git a/pkg/compiler/test/inference/data/closure2.dart b/pkg/compiler/test/inference/data/closure2.dart
index 0e6335d..793c24c 100644
--- a/pkg/compiler/test/inference/data/closure2.dart
+++ b/pkg/compiler/test/inference/data/closure2.dart
@@ -82,7 +82,7 @@
return g();
}
-/*member: returnNum1:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: returnNum1:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
returnNum1() {
dynamic a = 42.5;
try {
diff --git a/pkg/compiler/test/inference/data/closure_tracer.dart b/pkg/compiler/test/inference/data/closure_tracer.dart
index edccdb3..e689520 100644
--- a/pkg/compiler/test/inference/data/closure_tracer.dart
+++ b/pkg/compiler/test/inference/data/closure_tracer.dart
@@ -154,13 +154,13 @@
return topLevel1;
}
-/*member: topLevel2:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: topLevel2:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
var topLevel2;
-/*member: bar:Union([exact=JSDouble], [exact=JSUInt31])*/
-bar(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) => topLevel2 = a;
+/*member: bar:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
+bar(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) => topLevel2 = a;
-/*member: testStaticClosure2:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: testStaticClosure2:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
testStaticClosure2() {
var a = bar;
a(42);
@@ -178,14 +178,14 @@
return topLevel3;
}
-/*member: topLevel4:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: topLevel4:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
var topLevel4;
-/*member: testStaticClosure4Helper:Union([exact=JSDouble], [exact=JSUInt31])*/
-testStaticClosure4Helper(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) =>
+/*member: testStaticClosure4Helper:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
+testStaticClosure4Helper(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) =>
topLevel4 = a;
-/*member: testStaticClosure4:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: testStaticClosure4:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
testStaticClosure4() {
var a = testStaticClosure4Helper;
// Test calling the static after tearing it off.
diff --git a/pkg/compiler/test/inference/data/const_closure2.dart b/pkg/compiler/test/inference/data/const_closure2.dart
index d647115..79d65d81 100644
--- a/pkg/compiler/test/inference/data/const_closure2.dart
+++ b/pkg/compiler/test/inference/data/const_closure2.dart
@@ -4,16 +4,16 @@
// @dart = 2.7
-/*member: method:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: method:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
// Called via [foo] with integer then double.
-method(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) {
+method(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) {
return a;
}
const foo = method;
/*member: returnNum:[null|subclass=Object]*/
-returnNum(/*Union([exact=JSDouble], [exact=JSUInt31])*/ x) {
+returnNum(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ x) {
return foo(x);
}
diff --git a/pkg/compiler/test/inference/data/const_closure4.dart b/pkg/compiler/test/inference/data/const_closure4.dart
index d647115..79d65d81 100644
--- a/pkg/compiler/test/inference/data/const_closure4.dart
+++ b/pkg/compiler/test/inference/data/const_closure4.dart
@@ -4,16 +4,16 @@
// @dart = 2.7
-/*member: method:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: method:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
// Called via [foo] with integer then double.
-method(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) {
+method(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) {
return a;
}
const foo = method;
/*member: returnNum:[null|subclass=Object]*/
-returnNum(/*Union([exact=JSDouble], [exact=JSUInt31])*/ x) {
+returnNum(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ x) {
return foo(x);
}
diff --git a/pkg/compiler/test/inference/data/const_closure5.dart b/pkg/compiler/test/inference/data/const_closure5.dart
index 76887e5..eb45e87 100644
--- a/pkg/compiler/test/inference/data/const_closure5.dart
+++ b/pkg/compiler/test/inference/data/const_closure5.dart
@@ -4,9 +4,9 @@
// @dart = 2.7
-/*member: method:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: method:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
// Called only via [foo2] with a small integer.
-method(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) {
+method(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) {
return a;
}
diff --git a/pkg/compiler/test/inference/data/dictionary_types.dart b/pkg/compiler/test/inference/data/dictionary_types.dart
index b2c5aa1..d87eb2c 100644
--- a/pkg/compiler/test/inference/data/dictionary_types.dart
+++ b/pkg/compiler/test/inference/data/dictionary_types.dart
@@ -21,7 +21,7 @@
'list': []
};
-/*member: dictionaryB1:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+/*member: dictionaryB1:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
dynamic dictionaryB1 = {
'string': "aString",
'int': 42,
@@ -50,10 +50,10 @@
. /*invoke: Map([subclass=JsLinkedHashMap], key: [null|subclass=Object], value: [null|subclass=Object])*/
addAll(otherDict1);
dictionaryB1
- . /*invoke: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+ . /*invoke: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
addAll({'stringTwo': "anotherString", 'intTwo': 84});
int1 = dictionaryB1
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
['int'];
anotherInt1 = otherDict1
/*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSString], [exact=JSUInt31]), map: {stringTwo: Value([exact=JSString], value: "anotherString"), intTwo: [exact=JSUInt31]})*/
@@ -62,11 +62,11 @@
/*Map([subclass=JsLinkedHashMap], key: [null|subclass=Object], value: [null|subclass=Object])*/ [
'int'];
nullOrInt1 = dictionaryB1
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
['intTwo'];
}
-/*member: dictionaryA2:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+/*member: dictionaryA2:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
dynamic dictionaryA2 = {
'string': "aString",
'int': 42,
@@ -83,28 +83,28 @@
/*member: aString2:[exact=JSString]*/
dynamic aString2 = "";
-/*member: doubleOrNull2:[null|exact=JSDouble]*/
+/*member: doubleOrNull2:[null|exact=JSNumNotInt]*/
dynamic doubleOrNull2 = 22.2;
/*member: test2:[null]*/
test2() {
var union = dictionaryA2
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
['foo']
? dictionaryA2
: dictionaryB2;
nullOrInt2 = union
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSDouble], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSNumNotInt], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
['intTwo'];
aString2 = union
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSDouble], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSNumNotInt], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
['string'];
doubleOrNull2 = union
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSDouble], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSNumNotInt], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
['double'];
}
-/*member: dictionary3:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+/*member: dictionary3:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
dynamic dictionary3 = {
'string': "aString",
'int': 42,
@@ -120,23 +120,23 @@
/*member: keyN3:Value([exact=JSString], value: "notFoundInMap")*/
dynamic keyN3 = 'notFoundInMap';
-/*member: knownDouble3:[exact=JSDouble]*/
+/*member: knownDouble3:[exact=JSNumNotInt]*/
dynamic knownDouble3 = 42.2;
/*member: intOrNull3:[null|exact=JSUInt31]*/
dynamic intOrNull3 = dictionary3
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
[keyI3];
/*member: justNull3:[null]*/
dynamic justNull3 = dictionary3
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
[keyN3];
/*member: test3:[null]*/
test3() {
knownDouble3 = dictionary3
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
[keyD3];
// ignore: unused_local_variable
var x = [intOrNull3, justNull3];
diff --git a/pkg/compiler/test/inference/data/field_type.dart b/pkg/compiler/test/inference/data/field_type.dart
index e74c6e5..82f4994 100644
--- a/pkg/compiler/test/inference/data/field_type.dart
+++ b/pkg/compiler/test/inference/data/field_type.dart
@@ -640,7 +640,7 @@
/*member: A24.f24d:[exact=JSUInt31]*/
final f24d;
- /*member: A24.f24e:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+ /*member: A24.f24e:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
var f24e;
/*member: A24.f24f:Value([null|exact=JSString], value: "foo")*/
@@ -667,7 +667,7 @@
/*member: A24.+:Value([exact=JSString], value: "foo")*/
operator +(/*[empty]*/ other) => 'foo';
- /*member: A24.bar24:[exact=JSDouble]*/
+ /*member: A24.bar24:[exact=JSNumNotInt]*/
bar24() => 42.5;
}
diff --git a/pkg/compiler/test/inference/data/general.dart b/pkg/compiler/test/inference/data/general.dart
index 275cd19..67d2c33 100644
--- a/pkg/compiler/test/inference/data/general.dart
+++ b/pkg/compiler/test/inference/data/general.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*member: returnNum1:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: returnNum1:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
returnNum1(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1;
@@ -12,7 +12,7 @@
return 2.5;
}
-/*member: returnNum2:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: returnNum2:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
returnNum2(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1.4;
@@ -28,7 +28,7 @@
return 2;
}
-/*member: returnDouble:[exact=JSDouble]*/
+/*member: returnDouble:[exact=JSNumNotInt]*/
returnDouble(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1.5;
@@ -396,7 +396,7 @@
return c;
}
-/*member: testSwitch1:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: testSwitch1:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
testSwitch1() {
var a = null;
switch (topLevelGetter) {
@@ -572,7 +572,7 @@
return a;
}
-/*member: testDoWhile4:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: testDoWhile4:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
testDoWhile4() {
dynamic a = 'foo';
do {
diff --git a/pkg/compiler/test/inference/data/map_tracer_const.dart b/pkg/compiler/test/inference/data/map_tracer_const.dart
index 45f09c1..ee73c68 100644
--- a/pkg/compiler/test/inference/data/map_tracer_const.dart
+++ b/pkg/compiler/test/inference/data/map_tracer_const.dart
@@ -7,7 +7,7 @@
/*member: closure:[exact=JSUInt31]*/
int closure(
int
- /*spec.Union([exact=JSDouble], [exact=JSUInt31])*/
+ /*spec.Union([exact=JSNumNotInt], [exact=JSUInt31])*/
/*prod.[exact=JSUInt31]*/
x) {
return x;
diff --git a/pkg/compiler/test/inference/data/map_tracer_keys.dart b/pkg/compiler/test/inference/data/map_tracer_keys.dart
index 3f183a6..beedfbf 100644
--- a/pkg/compiler/test/inference/data/map_tracer_keys.dart
+++ b/pkg/compiler/test/inference/data/map_tracer_keys.dart
@@ -14,7 +14,7 @@
test6();
}
-/*member: aDouble1:[null|exact=JSDouble]*/
+/*member: aDouble1:[null|exact=JSNumNotInt]*/
dynamic aDouble1 = 42.5;
/*member: aList1:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
@@ -29,23 +29,23 @@
test1() {
var theMap = {'a': 2.2, 'b': 3.3, 'c': 4.4};
theMap
- /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [null|exact=JSDouble]})*/
+ /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [null|exact=JSNumNotInt]})*/
['d'] = 5.5;
/*iterator: [exact=LinkedHashMapKeyIterable]*/
/*current: [exact=LinkedHashMapKeyIterator]*/
/*moveNext: [exact=LinkedHashMapKeyIterator]*/
for (var key in theMap.
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [null|exact=JSDouble]})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [null|exact=JSNumNotInt]})*/
keys) {
aDouble1 = theMap
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [null|exact=JSDouble]})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [null|exact=JSNumNotInt]})*/
[key];
}
// We have to reference it somewhere, so that it always gets resolved.
consume1(aList1);
}
-/*member: aDouble2:[null|exact=JSDouble]*/
+/*member: aDouble2:[null|exact=JSNumNotInt]*/
dynamic aDouble2 = 42.5;
/*member: aList2:Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)*/
@@ -60,23 +60,23 @@
test2() {
dynamic theMap = {'a': 2.2, 'b': 3.3, 'c': 4.4};
theMap
- /*update: Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble])*/
+ /*update: Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt])*/
[aList2] = 5.5;
/*iterator: [exact=LinkedHashMapKeyIterable]*/
/*current: [exact=LinkedHashMapKeyIterator]*/
/*moveNext: [exact=LinkedHashMapKeyIterator]*/
for (var key in theMap.
- /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble])*/
+ /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt])*/
keys) {
aDouble2 = theMap
- /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble])*/
+ /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt])*/
[key];
}
// We have to reference it somewhere, so that it always gets resolved.
consume2(aList2);
}
-/*member: aDouble3:Union(null, [exact=JSDouble], [exact=JSExtendableArray])*/
+/*member: aDouble3:Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt])*/
dynamic aDouble3 = 42.5;
/*member: aList3:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
@@ -91,23 +91,23 @@
test3() {
dynamic theMap = <dynamic, dynamic>{'a': 2.2, 'b': 3.3, 'c': 4.4};
theMap
- /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+ /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
['d'] = aList3;
/*iterator: [exact=LinkedHashMapKeyIterable]*/
/*current: [exact=LinkedHashMapKeyIterator]*/
/*moveNext: [exact=LinkedHashMapKeyIterator]*/
for (var key in theMap.
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
keys) {
aDouble3 = theMap
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
[key];
}
// We have to reference it somewhere, so that it always gets resolved.
consume3(aList3);
}
-/*member: aDouble4:[null|exact=JSDouble]*/
+/*member: aDouble4:[null|exact=JSNumNotInt]*/
dynamic aDouble4 = 42.5;
/*member: aList4:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
@@ -125,17 +125,17 @@
/*current: [exact=LinkedHashMapKeyIterator]*/
/*moveNext: [exact=LinkedHashMapKeyIterator]*/
for (var key in theMap.
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [exact=JSDouble]})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [exact=JSNumNotInt]})*/
keys) {
aDouble4 = theMap
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [exact=JSDouble]})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [exact=JSNumNotInt]})*/
[key];
}
// We have to reference it somewhere, so that it always gets resolved.
consume4(aList4);
}
-/*member: aDouble5:[null|exact=JSDouble]*/
+/*member: aDouble5:[null|exact=JSNumNotInt]*/
dynamic aDouble5 = 42.5;
/*member: aList5:Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)*/
@@ -153,17 +153,17 @@
/*current: [exact=LinkedHashMapKeyIterator]*/
/*moveNext: [exact=LinkedHashMapKeyIterator]*/
for (var key in theMap.
- /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSDouble])*/
+ /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSNumNotInt])*/
keys) {
aDouble5 = theMap
- /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSDouble])*/
+ /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSNumNotInt])*/
[key];
}
// We have to reference it somewhere, so that it always gets resolved.
consume5(aList5);
}
-/*member: aDouble6:Union(null, [exact=JSDouble], [exact=JSExtendableArray])*/
+/*member: aDouble6:Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt])*/
dynamic aDouble6 = 42.5;
/*member: aList6:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
dynamic aList6 = [42];
@@ -180,10 +180,10 @@
/*current: [exact=LinkedHashMapKeyIterator]*/
/*moveNext: [exact=LinkedHashMapKeyIterator]*/
for (var key in theMap.
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
keys) {
aDouble6 = theMap
- /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+ /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
[key];
}
// We have to reference it somewhere, so that it always gets resolved.
diff --git a/pkg/compiler/test/inference/data/no_such_method2.dart b/pkg/compiler/test/inference/data/no_such_method2.dart
index e9fe527..e322ede 100644
--- a/pkg/compiler/test/inference/data/no_such_method2.dart
+++ b/pkg/compiler/test/inference/data/no_such_method2.dart
@@ -31,7 +31,7 @@
/*member: D.foo:Dictionary([subclass=JsLinkedHashMap], key: [empty], value: [null], map: {})*/
foo() => {};
- /*member: D.noSuchMethod:[exact=JSDouble]*/
+ /*member: D.noSuchMethod:[exact=JSNumNotInt]*/
noSuchMethod(
/*prod.[null|exact=JSInvocationMirror]*/
/*spec.[null|subclass=Object]*/
@@ -63,7 +63,7 @@
}
// Can hit A.noSuchMethod, D.noSuchMethod and Object.noSuchMethod.
-/*member: test6:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: test6:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
test6() => a. /*invoke: Union(null, [exact=D], [subclass=B])*/ bar();
// Can hit A.noSuchMethod.
@@ -86,14 +86,14 @@
}
// Can hit A.noSuchMethod and D.noSuchMethod.
-/*member: test10:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: test10:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
test10() {
dynamic e = (a ? new B() : new D());
return e. /*invoke: Union([exact=B], [exact=D])*/ bar();
}
// Can hit D.noSuchMethod.
-/*member: test11:[exact=JSDouble]*/
+/*member: test11:[exact=JSNumNotInt]*/
test11() {
dynamic e = new D();
return e. /*invoke: [exact=D]*/ bar();
diff --git a/pkg/compiler/test/inference/data/simple.dart b/pkg/compiler/test/inference/data/simple.dart
index 7709e28..47f688c 100644
--- a/pkg/compiler/test/inference/data/simple.dart
+++ b/pkg/compiler/test/inference/data/simple.dart
@@ -44,7 +44,7 @@
/// Return a double literal.
////////////////////////////////////////////////////////////////////////////////
-/*member: half:[exact=JSDouble]*/
+/*member: half:[exact=JSNumNotInt]*/
half() => 0.5;
////////////////////////////////////////////////////////////////////////////////
@@ -86,7 +86,7 @@
/// Return a negative double literal.
////////////////////////////////////////////////////////////////////////////////
-/*member: minusHalf:[exact=JSDouble]*/
+/*member: minusHalf:[exact=JSNumNotInt]*/
minusHalf() => -0.5;
////////////////////////////////////////////////////////////////////////////////
diff --git a/pkg/compiler/test/inference/data/static.dart b/pkg/compiler/test/inference/data/static.dart
index d34d4fc..c9e4c24 100644
--- a/pkg/compiler/test/inference/data/static.dart
+++ b/pkg/compiler/test/inference/data/static.dart
@@ -56,18 +56,18 @@
staticCallWithPositionalArguments1() => _returnFirst(0, 0.5);
/*member: _returnFirst:[exact=JSUInt31]*/
-_returnFirst(/*[exact=JSUInt31]*/ a, /*[exact=JSDouble]*/ b) => a;
+_returnFirst(/*[exact=JSUInt31]*/ a, /*[exact=JSNumNotInt]*/ b) => a;
////////////////////////////////////////////////////////////////////////////////
/// Call a static method that has two positional parameters, the second argument
/// is returned.
////////////////////////////////////////////////////////////////////////////////
-/*member: staticCallWithPositionalArguments2:[exact=JSDouble]*/
+/*member: staticCallWithPositionalArguments2:[exact=JSNumNotInt]*/
staticCallWithPositionalArguments2() => _returnSecond(0, 0.5);
-/*member: _returnSecond:[exact=JSDouble]*/
-_returnSecond(/*[exact=JSUInt31]*/ a, /*[exact=JSDouble]*/ b) => b;
+/*member: _returnSecond:[exact=JSNumNotInt]*/
+_returnSecond(/*[exact=JSUInt31]*/ a, /*[exact=JSNumNotInt]*/ b) => b;
////////////////////////////////////////////////////////////////////////////////
/// A static method that has an optional parameter with no explicit default
@@ -132,11 +132,11 @@
/// Only one call site with an argument of a different type.
////////////////////////////////////////////////////////////////////////////////
-/*member: staticCallWithOptionalArguments6:[exact=JSDouble]*/
+/*member: staticCallWithOptionalArguments6:[exact=JSNumNotInt]*/
staticCallWithOptionalArguments6() => _returnDefaultZeroCalled(0.5);
-/*member: _returnDefaultZeroCalled:[exact=JSDouble]*/
-_returnDefaultZeroCalled([/*[exact=JSDouble]*/ a = 0]) => a;
+/*member: _returnDefaultZeroCalled:[exact=JSNumNotInt]*/
+_returnDefaultZeroCalled([/*[exact=JSNumNotInt]*/ a = 0]) => a;
////////////////////////////////////////////////////////////////////////////////
/// A static method that has a named parameter with a default value of `0`.
@@ -154,25 +154,25 @@
/// Only one call site with an argument of a different type.
////////////////////////////////////////////////////////////////////////////////
-/*member: staticCallWithNamedArguments2:[exact=JSDouble]*/
+/*member: staticCallWithNamedArguments2:[exact=JSNumNotInt]*/
staticCallWithNamedArguments2() => _returnNamedDefaultZeroCalled(a: 0.5);
-/*member: _returnNamedDefaultZeroCalled:[exact=JSDouble]*/
-_returnNamedDefaultZeroCalled({/*[exact=JSDouble]*/ a: 0}) => a;
+/*member: _returnNamedDefaultZeroCalled:[exact=JSNumNotInt]*/
+_returnNamedDefaultZeroCalled({/*[exact=JSNumNotInt]*/ a: 0}) => a;
////////////////////////////////////////////////////////////////////////////////
/// A static method that has a named parameter. Two call sites, one with an
/// explicit argument and one with no arguments.
////////////////////////////////////////////////////////////////////////////////
-/*member: staticCallWithNamedArguments3a:[null|exact=JSDouble]*/
+/*member: staticCallWithNamedArguments3a:[null|exact=JSNumNotInt]*/
staticCallWithNamedArguments3a() => _returnNamedNullCalledTwice();
-/*member: staticCallWithNamedArguments3b:[null|exact=JSDouble]*/
+/*member: staticCallWithNamedArguments3b:[null|exact=JSNumNotInt]*/
staticCallWithNamedArguments3b() => _returnNamedNullCalledTwice(a: 0.5);
-/*member: _returnNamedNullCalledTwice:[null|exact=JSDouble]*/
-_returnNamedNullCalledTwice({/*[null|exact=JSDouble]*/ a}) => a;
+/*member: _returnNamedNullCalledTwice:[null|exact=JSNumNotInt]*/
+_returnNamedNullCalledTwice({/*[null|exact=JSNumNotInt]*/ a}) => a;
////////////////////////////////////////////////////////////////////////////////
/// Call an uninitialized top level field.
diff --git a/pkg/compiler/test/inference/type_combination_test.dart b/pkg/compiler/test/inference/type_combination_test.dart
index b949eba..517ac76 100644
--- a/pkg/compiler/test/inference/type_combination_test.dart
+++ b/pkg/compiler/test/inference/type_combination_test.dart
@@ -20,11 +20,11 @@
TypeMask jsBoolean;
TypeMask jsNumber;
TypeMask jsInteger;
-TypeMask jsDouble;
+TypeMask jsNumNotInt;
TypeMask jsBooleanOrNull;
TypeMask jsNumberOrNull;
TypeMask jsIntegerOrNull;
-TypeMask jsDoubleOrNull;
+TypeMask jsNumNotIntOrNull;
TypeMask emptyType;
TypeMask dynamicType;
@@ -121,7 +121,7 @@
rule(emptyType, jsBoolean, jsBoolean);
rule(emptyType, jsNumber, jsNumber);
rule(emptyType, jsInteger, jsInteger);
- rule(emptyType, jsDouble, jsDouble);
+ rule(emptyType, jsNumNotInt, jsNumNotInt);
rule(emptyType, jsIndexable, jsIndexable);
rule(emptyType, jsString, jsString);
rule(emptyType, jsReadableArray, jsReadableArray);
@@ -135,7 +135,7 @@
rule(emptyType, jsBooleanOrNull, jsBooleanOrNull);
rule(emptyType, jsNumberOrNull, jsNumberOrNull);
rule(emptyType, jsIntegerOrNull, jsIntegerOrNull);
- rule(emptyType, jsDoubleOrNull, jsDoubleOrNull);
+ rule(emptyType, jsNumNotIntOrNull, jsNumNotIntOrNull);
rule(emptyType, jsStringOrNull, jsStringOrNull);
rule(emptyType, nullType, nullType);
rule(emptyType, jsFixedArray, jsFixedArray);
@@ -144,7 +144,7 @@
rule(dynamicType, jsBoolean, dynamicType);
rule(dynamicType, jsNumber, dynamicType);
rule(dynamicType, jsInteger, dynamicType);
- rule(dynamicType, jsDouble, dynamicType);
+ rule(dynamicType, jsNumNotInt, dynamicType);
rule(dynamicType, jsIndexable, dynamicType);
rule(dynamicType, jsString, dynamicType);
rule(dynamicType, jsReadableArray, dynamicType);
@@ -158,7 +158,7 @@
rule(dynamicType, jsBooleanOrNull, dynamicType);
rule(dynamicType, jsNumberOrNull, dynamicType);
rule(dynamicType, jsIntegerOrNull, dynamicType);
- rule(dynamicType, jsDoubleOrNull, dynamicType);
+ rule(dynamicType, jsNumNotIntOrNull, dynamicType);
rule(dynamicType, jsStringOrNull, dynamicType);
rule(dynamicType, nullType, dynamicType);
rule(dynamicType, jsFixedArray, dynamicType);
@@ -166,7 +166,7 @@
rule(jsBoolean, jsBoolean, jsBoolean);
rule(jsBoolean, jsNumber, jsInterceptor);
rule(jsBoolean, jsInteger, jsInterceptor);
- rule(jsBoolean, jsDouble, jsInterceptor);
+ rule(jsBoolean, jsNumNotInt, jsInterceptor);
rule(jsBoolean, jsIndexable, objectType);
rule(jsBoolean, jsString, jsInterceptor);
rule(jsBoolean, jsReadableArray, jsInterceptor);
@@ -180,14 +180,14 @@
rule(jsBoolean, jsBooleanOrNull, jsBooleanOrNull);
rule(jsBoolean, jsNumberOrNull, jsInterceptorOrNull);
rule(jsBoolean, jsIntegerOrNull, jsInterceptorOrNull);
- rule(jsBoolean, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsBoolean, jsNumNotIntOrNull, jsInterceptorOrNull);
rule(jsBoolean, jsStringOrNull, jsInterceptorOrNull);
rule(jsBoolean, nullType, jsBooleanOrNull);
rule(jsBoolean, jsFixedArray, jsInterceptor);
rule(jsNumber, jsNumber, jsNumber);
rule(jsNumber, jsInteger, jsNumber);
- rule(jsNumber, jsDouble, jsNumber);
+ rule(jsNumber, jsNumNotInt, jsNumber);
rule(jsNumber, jsIndexable, objectType);
rule(jsNumber, jsString, jsInterceptorOrComparable);
rule(jsNumber, jsReadableArray, jsInterceptor);
@@ -201,13 +201,13 @@
rule(jsNumber, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsNumber, jsNumberOrNull, jsNumberOrNull);
rule(jsNumber, jsIntegerOrNull, jsNumberOrNull);
- rule(jsNumber, jsDoubleOrNull, jsNumberOrNull);
+ rule(jsNumber, jsNumNotIntOrNull, jsNumberOrNull);
rule(jsNumber, jsStringOrNull, jsInterceptorOrComparableOrNull);
rule(jsNumber, nullType, jsNumberOrNull);
rule(jsNumber, jsFixedArray, jsInterceptor);
rule(jsInteger, jsInteger, jsInteger);
- rule(jsInteger, jsDouble, jsNumber);
+ rule(jsInteger, jsNumNotInt, jsNumber);
rule(jsInteger, jsIndexable, objectType);
rule(jsInteger, jsString, jsInterceptorOrComparable);
rule(jsInteger, jsReadableArray, jsInterceptor);
@@ -221,29 +221,29 @@
rule(jsInteger, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsInteger, jsNumberOrNull, jsNumberOrNull);
rule(jsInteger, jsIntegerOrNull, jsIntegerOrNull);
- rule(jsInteger, jsDoubleOrNull, jsNumberOrNull);
+ rule(jsInteger, jsNumNotIntOrNull, jsNumberOrNull);
rule(jsInteger, jsStringOrNull, jsInterceptorOrComparableOrNull);
rule(jsInteger, nullType, jsIntegerOrNull);
rule(jsInteger, jsFixedArray, jsInterceptor);
- rule(jsDouble, jsDouble, jsDouble);
- rule(jsDouble, jsIndexable, objectType);
- rule(jsDouble, jsString, jsInterceptorOrComparable);
- rule(jsDouble, jsReadableArray, jsInterceptor);
- rule(jsDouble, jsMutableArray, jsInterceptor);
- rule(jsDouble, jsExtendableArray, jsInterceptor);
- rule(jsDouble, jsUnmodifiableArray, jsInterceptor);
- rule(jsDouble, nonPrimitive1, objectType);
- rule(jsDouble, nonPrimitive2, objectType);
- rule(jsDouble, potentialArray, dynamicType);
- rule(jsDouble, potentialString, dynamicType);
- rule(jsDouble, jsBooleanOrNull, jsInterceptorOrNull);
- rule(jsDouble, jsNumberOrNull, jsNumberOrNull);
- rule(jsDouble, jsIntegerOrNull, jsNumberOrNull);
- rule(jsDouble, jsDoubleOrNull, jsDoubleOrNull);
- rule(jsDouble, jsStringOrNull, jsInterceptorOrComparableOrNull);
- rule(jsDouble, nullType, jsDoubleOrNull);
- rule(jsDouble, jsFixedArray, jsInterceptor);
+ rule(jsNumNotInt, jsNumNotInt, jsNumNotInt);
+ rule(jsNumNotInt, jsIndexable, objectType);
+ rule(jsNumNotInt, jsString, jsInterceptorOrComparable);
+ rule(jsNumNotInt, jsReadableArray, jsInterceptor);
+ rule(jsNumNotInt, jsMutableArray, jsInterceptor);
+ rule(jsNumNotInt, jsExtendableArray, jsInterceptor);
+ rule(jsNumNotInt, jsUnmodifiableArray, jsInterceptor);
+ rule(jsNumNotInt, nonPrimitive1, objectType);
+ rule(jsNumNotInt, nonPrimitive2, objectType);
+ rule(jsNumNotInt, potentialArray, dynamicType);
+ rule(jsNumNotInt, potentialString, dynamicType);
+ rule(jsNumNotInt, jsBooleanOrNull, jsInterceptorOrNull);
+ rule(jsNumNotInt, jsNumberOrNull, jsNumberOrNull);
+ rule(jsNumNotInt, jsIntegerOrNull, jsNumberOrNull);
+ rule(jsNumNotInt, jsNumNotIntOrNull, jsNumNotIntOrNull);
+ rule(jsNumNotInt, jsStringOrNull, jsInterceptorOrComparableOrNull);
+ rule(jsNumNotInt, nullType, jsNumNotIntOrNull);
+ rule(jsNumNotInt, jsFixedArray, jsInterceptor);
rule(jsIndexable, jsIndexable, jsIndexable);
rule(jsIndexable, jsString, jsIndexable);
@@ -258,7 +258,7 @@
rule(jsIndexable, jsBooleanOrNull, dynamicType);
rule(jsIndexable, jsNumberOrNull, dynamicType);
rule(jsIndexable, jsIntegerOrNull, dynamicType);
- rule(jsIndexable, jsDoubleOrNull, dynamicType);
+ rule(jsIndexable, jsNumNotIntOrNull, dynamicType);
rule(jsIndexable, jsStringOrNull, jsIndexableOrNull);
rule(jsIndexable, nullType, jsIndexableOrNull);
rule(jsIndexable, jsFixedArray, jsIndexable);
@@ -275,7 +275,7 @@
rule(jsString, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsString, jsNumberOrNull, jsInterceptorOrComparableOrNull);
rule(jsString, jsIntegerOrNull, jsInterceptorOrComparableOrNull);
- rule(jsString, jsDoubleOrNull, jsInterceptorOrComparableOrNull);
+ rule(jsString, jsNumNotIntOrNull, jsInterceptorOrComparableOrNull);
rule(jsString, jsStringOrNull, jsStringOrNull);
rule(jsString, nullType, jsStringOrNull);
rule(jsString, jsFixedArray, jsIndexable);
@@ -291,7 +291,7 @@
rule(jsReadableArray, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsReadableArray, jsNumberOrNull, jsInterceptorOrNull);
rule(jsReadableArray, jsIntegerOrNull, jsInterceptorOrNull);
- rule(jsReadableArray, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsReadableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
rule(jsReadableArray, jsStringOrNull, jsIndexableOrNull);
rule(jsReadableArray, nullType, jsArrayOrNull);
rule(jsReadableArray, jsFixedArray, jsReadableArray);
@@ -306,7 +306,7 @@
rule(jsMutableArray, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsMutableArray, jsNumberOrNull, jsInterceptorOrNull);
rule(jsMutableArray, jsIntegerOrNull, jsInterceptorOrNull);
- rule(jsMutableArray, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsMutableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
rule(jsMutableArray, jsStringOrNull, jsIndexableOrNull);
rule(jsMutableArray, nullType, jsMutableArrayOrNull);
rule(jsMutableArray, jsFixedArray, jsMutableArray);
@@ -320,7 +320,7 @@
rule(jsExtendableArray, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsExtendableArray, jsNumberOrNull, jsInterceptorOrNull);
rule(jsExtendableArray, jsIntegerOrNull, jsInterceptorOrNull);
- rule(jsExtendableArray, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsExtendableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
rule(jsExtendableArray, jsStringOrNull, jsIndexableOrNull);
rule(jsExtendableArray, nullType, jsExtendableArrayOrNull);
rule(jsExtendableArray, jsFixedArray, jsMutableArray);
@@ -333,7 +333,7 @@
rule(jsUnmodifiableArray, jsBooleanOrNull, jsInterceptorOrNull);
rule(jsUnmodifiableArray, jsNumberOrNull, jsInterceptorOrNull);
rule(jsUnmodifiableArray, jsIntegerOrNull, jsInterceptorOrNull);
- rule(jsUnmodifiableArray, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsUnmodifiableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
rule(jsUnmodifiableArray, jsStringOrNull, jsIndexableOrNull);
rule(jsUnmodifiableArray, nullType, jsUnmodifiableArrayOrNull);
rule(jsUnmodifiableArray, jsFixedArray, jsReadableArray);
@@ -345,7 +345,7 @@
rule(nonPrimitive1, jsBooleanOrNull, dynamicType);
rule(nonPrimitive1, jsNumberOrNull, dynamicType);
rule(nonPrimitive1, jsIntegerOrNull, dynamicType);
- rule(nonPrimitive1, jsDoubleOrNull, dynamicType);
+ rule(nonPrimitive1, jsNumNotIntOrNull, dynamicType);
rule(nonPrimitive1, jsStringOrNull, dynamicType);
rule(nonPrimitive1, jsFixedArray, objectType);
@@ -355,7 +355,7 @@
rule(nonPrimitive2, jsBooleanOrNull, dynamicType);
rule(nonPrimitive2, jsNumberOrNull, dynamicType);
rule(nonPrimitive2, jsIntegerOrNull, dynamicType);
- rule(nonPrimitive2, jsDoubleOrNull, dynamicType);
+ rule(nonPrimitive2, jsNumNotIntOrNull, dynamicType);
rule(nonPrimitive2, jsStringOrNull, dynamicType);
rule(nonPrimitive2, jsFixedArray, objectType);
@@ -364,7 +364,7 @@
rule(potentialArray, jsBooleanOrNull, dynamicType);
rule(potentialArray, jsNumberOrNull, dynamicType);
rule(potentialArray, jsIntegerOrNull, dynamicType);
- rule(potentialArray, jsDoubleOrNull, dynamicType);
+ rule(potentialArray, jsNumNotIntOrNull, dynamicType);
rule(potentialArray, jsStringOrNull, dynamicType);
rule(potentialArray, nullType, potentialArray);
rule(potentialArray, jsFixedArray, potentialArray);
@@ -373,7 +373,7 @@
rule(potentialString, jsBooleanOrNull, dynamicType);
rule(potentialString, jsNumberOrNull, dynamicType);
rule(potentialString, jsIntegerOrNull, dynamicType);
- rule(potentialString, jsDoubleOrNull, dynamicType);
+ rule(potentialString, jsNumNotIntOrNull, dynamicType);
rule(potentialString, jsStringOrNull, potentialString);
rule(potentialString, nullType, potentialString);
rule(potentialString, jsFixedArray, dynamicType);
@@ -381,28 +381,28 @@
rule(jsBooleanOrNull, jsBooleanOrNull, jsBooleanOrNull);
rule(jsBooleanOrNull, jsNumberOrNull, jsInterceptorOrNull);
rule(jsBooleanOrNull, jsIntegerOrNull, jsInterceptorOrNull);
- rule(jsBooleanOrNull, jsDoubleOrNull, jsInterceptorOrNull);
+ rule(jsBooleanOrNull, jsNumNotIntOrNull, jsInterceptorOrNull);
rule(jsBooleanOrNull, jsStringOrNull, jsInterceptorOrNull);
rule(jsBooleanOrNull, nullType, jsBooleanOrNull);
rule(jsBooleanOrNull, jsFixedArray, jsInterceptorOrNull);
rule(jsNumberOrNull, jsNumberOrNull, jsNumberOrNull);
rule(jsNumberOrNull, jsIntegerOrNull, jsNumberOrNull);
- rule(jsNumberOrNull, jsDoubleOrNull, jsNumberOrNull);
+ rule(jsNumberOrNull, jsNumNotIntOrNull, jsNumberOrNull);
rule(jsNumberOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
rule(jsNumberOrNull, nullType, jsNumberOrNull);
rule(jsNumberOrNull, jsFixedArray, jsInterceptorOrNull);
rule(jsIntegerOrNull, jsIntegerOrNull, jsIntegerOrNull);
- rule(jsIntegerOrNull, jsDoubleOrNull, jsNumberOrNull);
+ rule(jsIntegerOrNull, jsNumNotIntOrNull, jsNumberOrNull);
rule(jsIntegerOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
rule(jsIntegerOrNull, nullType, jsIntegerOrNull);
rule(jsIntegerOrNull, jsFixedArray, jsInterceptorOrNull);
- rule(jsDoubleOrNull, jsDoubleOrNull, jsDoubleOrNull);
- rule(jsDoubleOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
- rule(jsDoubleOrNull, nullType, jsDoubleOrNull);
- rule(jsDoubleOrNull, jsFixedArray, jsInterceptorOrNull);
+ rule(jsNumNotIntOrNull, jsNumNotIntOrNull, jsNumNotIntOrNull);
+ rule(jsNumNotIntOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
+ rule(jsNumNotIntOrNull, nullType, jsNumNotIntOrNull);
+ rule(jsNumNotIntOrNull, jsFixedArray, jsInterceptorOrNull);
rule(jsStringOrNull, jsStringOrNull, jsStringOrNull);
rule(jsStringOrNull, nullType, jsStringOrNull);
@@ -431,7 +431,7 @@
rule(emptyType, jsBoolean, emptyType);
rule(emptyType, jsNumber, emptyType);
rule(emptyType, jsInteger, emptyType);
- rule(emptyType, jsDouble, emptyType);
+ rule(emptyType, jsNumNotInt, emptyType);
rule(emptyType, jsIndexable, emptyType);
rule(emptyType, jsString, emptyType);
rule(emptyType, jsReadableArray, emptyType);
@@ -445,7 +445,7 @@
rule(emptyType, jsBooleanOrNull, emptyType);
rule(emptyType, jsNumberOrNull, emptyType);
rule(emptyType, jsIntegerOrNull, emptyType);
- rule(emptyType, jsDoubleOrNull, emptyType);
+ rule(emptyType, jsNumNotIntOrNull, emptyType);
rule(emptyType, jsStringOrNull, emptyType);
rule(emptyType, nullType, emptyType);
rule(emptyType, jsFixedArray, emptyType);
@@ -454,7 +454,7 @@
rule(dynamicType, jsBoolean, jsBoolean);
rule(dynamicType, jsNumber, jsNumber);
rule(dynamicType, jsInteger, jsInteger);
- rule(dynamicType, jsDouble, jsDouble);
+ rule(dynamicType, jsNumNotInt, jsNumNotInt);
rule(dynamicType, jsIndexable, jsIndexable);
rule(dynamicType, jsString, jsString);
rule(dynamicType, jsReadableArray, jsReadableArray);
@@ -468,7 +468,7 @@
rule(dynamicType, jsBooleanOrNull, jsBooleanOrNull);
rule(dynamicType, jsNumberOrNull, jsNumberOrNull);
rule(dynamicType, jsIntegerOrNull, jsIntegerOrNull);
- rule(dynamicType, jsDoubleOrNull, jsDoubleOrNull);
+ rule(dynamicType, jsNumNotIntOrNull, jsNumNotIntOrNull);
rule(dynamicType, jsStringOrNull, jsStringOrNull);
rule(dynamicType, nullType, nullType);
rule(dynamicType, jsFixedArray, jsFixedArray);
@@ -476,7 +476,7 @@
rule(jsBoolean, jsBoolean, jsBoolean);
rule(jsBoolean, jsNumber, emptyType);
rule(jsBoolean, jsInteger, emptyType);
- rule(jsBoolean, jsDouble, emptyType);
+ rule(jsBoolean, jsNumNotInt, emptyType);
rule(jsBoolean, jsIndexable, emptyType);
rule(jsBoolean, jsString, emptyType);
rule(jsBoolean, jsReadableArray, emptyType);
@@ -490,14 +490,14 @@
rule(jsBoolean, jsBooleanOrNull, jsBoolean);
rule(jsBoolean, jsNumberOrNull, emptyType);
rule(jsBoolean, jsIntegerOrNull, emptyType);
- rule(jsBoolean, jsDoubleOrNull, emptyType);
+ rule(jsBoolean, jsNumNotIntOrNull, emptyType);
rule(jsBoolean, jsStringOrNull, emptyType);
rule(jsBoolean, nullType, emptyType);
rule(jsBoolean, jsFixedArray, emptyType);
rule(jsNumber, jsNumber, jsNumber);
rule(jsNumber, jsInteger, jsInteger);
- rule(jsNumber, jsDouble, jsDouble);
+ rule(jsNumber, jsNumNotInt, jsNumNotInt);
rule(jsNumber, jsIndexable, emptyType);
rule(jsNumber, jsString, emptyType);
rule(jsNumber, jsReadableArray, emptyType);
@@ -511,13 +511,13 @@
rule(jsNumber, jsBooleanOrNull, emptyType);
rule(jsNumber, jsNumberOrNull, jsNumber);
rule(jsNumber, jsIntegerOrNull, jsInteger);
- rule(jsNumber, jsDoubleOrNull, jsDouble);
+ rule(jsNumber, jsNumNotIntOrNull, jsNumNotInt);
rule(jsNumber, jsStringOrNull, emptyType);
rule(jsNumber, nullType, emptyType);
rule(jsNumber, jsFixedArray, emptyType);
rule(jsInteger, jsInteger, jsInteger);
- rule(jsInteger, jsDouble, emptyType);
+ rule(jsInteger, jsNumNotInt, emptyType);
rule(jsInteger, jsIndexable, emptyType);
rule(jsInteger, jsString, emptyType);
rule(jsInteger, jsReadableArray, emptyType);
@@ -531,29 +531,29 @@
rule(jsInteger, jsBooleanOrNull, emptyType);
rule(jsInteger, jsNumberOrNull, jsInteger);
rule(jsInteger, jsIntegerOrNull, jsInteger);
- rule(jsInteger, jsDoubleOrNull, emptyType);
+ rule(jsInteger, jsNumNotIntOrNull, emptyType);
rule(jsInteger, jsStringOrNull, emptyType);
rule(jsInteger, nullType, emptyType);
rule(jsInteger, jsFixedArray, emptyType);
- rule(jsDouble, jsDouble, jsDouble);
- rule(jsDouble, jsIndexable, emptyType);
- rule(jsDouble, jsString, emptyType);
- rule(jsDouble, jsReadableArray, emptyType);
- rule(jsDouble, jsMutableArray, emptyType);
- rule(jsDouble, jsExtendableArray, emptyType);
- rule(jsDouble, jsUnmodifiableArray, emptyType);
- rule(jsDouble, nonPrimitive1, emptyType);
- rule(jsDouble, nonPrimitive2, emptyType);
- rule(jsDouble, potentialArray, emptyType);
- rule(jsDouble, potentialString, emptyType);
- rule(jsDouble, jsBooleanOrNull, emptyType);
- rule(jsDouble, jsNumberOrNull, jsDouble);
- rule(jsDouble, jsIntegerOrNull, emptyType);
- rule(jsDouble, jsDoubleOrNull, jsDouble);
- rule(jsDouble, jsStringOrNull, emptyType);
- rule(jsDouble, nullType, emptyType);
- rule(jsDouble, jsFixedArray, emptyType);
+ rule(jsNumNotInt, jsNumNotInt, jsNumNotInt);
+ rule(jsNumNotInt, jsIndexable, emptyType);
+ rule(jsNumNotInt, jsString, emptyType);
+ rule(jsNumNotInt, jsReadableArray, emptyType);
+ rule(jsNumNotInt, jsMutableArray, emptyType);
+ rule(jsNumNotInt, jsExtendableArray, emptyType);
+ rule(jsNumNotInt, jsUnmodifiableArray, emptyType);
+ rule(jsNumNotInt, nonPrimitive1, emptyType);
+ rule(jsNumNotInt, nonPrimitive2, emptyType);
+ rule(jsNumNotInt, potentialArray, emptyType);
+ rule(jsNumNotInt, potentialString, emptyType);
+ rule(jsNumNotInt, jsBooleanOrNull, emptyType);
+ rule(jsNumNotInt, jsNumberOrNull, jsNumNotInt);
+ rule(jsNumNotInt, jsIntegerOrNull, emptyType);
+ rule(jsNumNotInt, jsNumNotIntOrNull, jsNumNotInt);
+ rule(jsNumNotInt, jsStringOrNull, emptyType);
+ rule(jsNumNotInt, nullType, emptyType);
+ rule(jsNumNotInt, jsFixedArray, emptyType);
rule(jsIndexable, jsIndexable, jsIndexable);
rule(jsIndexable, jsString, jsString);
@@ -576,7 +576,7 @@
rule(jsIndexable, jsBooleanOrNull, emptyType);
rule(jsIndexable, jsNumberOrNull, emptyType);
rule(jsIndexable, jsIntegerOrNull, emptyType);
- rule(jsIndexable, jsDoubleOrNull, emptyType);
+ rule(jsIndexable, jsNumNotIntOrNull, emptyType);
rule(jsIndexable, jsStringOrNull, jsString);
rule(jsIndexable, nullType, emptyType);
rule(jsIndexable, jsFixedArray, jsFixedArray);
@@ -593,7 +593,7 @@
rule(jsString, jsBooleanOrNull, emptyType);
rule(jsString, jsNumberOrNull, emptyType);
rule(jsString, jsIntegerOrNull, emptyType);
- rule(jsString, jsDoubleOrNull, emptyType);
+ rule(jsString, jsNumNotIntOrNull, emptyType);
rule(jsString, jsStringOrNull, jsString);
rule(jsString, nullType, emptyType);
rule(jsString, jsFixedArray, emptyType);
@@ -609,7 +609,7 @@
rule(jsReadableArray, jsBooleanOrNull, emptyType);
rule(jsReadableArray, jsNumberOrNull, emptyType);
rule(jsReadableArray, jsIntegerOrNull, emptyType);
- rule(jsReadableArray, jsDoubleOrNull, emptyType);
+ rule(jsReadableArray, jsNumNotIntOrNull, emptyType);
rule(jsReadableArray, jsStringOrNull, emptyType);
rule(jsReadableArray, nullType, emptyType);
rule(jsReadableArray, jsFixedArray, jsFixedArray);
@@ -624,7 +624,7 @@
rule(jsMutableArray, jsBooleanOrNull, emptyType);
rule(jsMutableArray, jsNumberOrNull, emptyType);
rule(jsMutableArray, jsIntegerOrNull, emptyType);
- rule(jsMutableArray, jsDoubleOrNull, emptyType);
+ rule(jsMutableArray, jsNumNotIntOrNull, emptyType);
rule(jsMutableArray, jsStringOrNull, emptyType);
rule(jsMutableArray, nullType, emptyType);
rule(jsMutableArray, jsFixedArray, jsFixedArray);
@@ -638,7 +638,7 @@
rule(jsExtendableArray, jsBooleanOrNull, emptyType);
rule(jsExtendableArray, jsNumberOrNull, emptyType);
rule(jsExtendableArray, jsIntegerOrNull, emptyType);
- rule(jsExtendableArray, jsDoubleOrNull, emptyType);
+ rule(jsExtendableArray, jsNumNotIntOrNull, emptyType);
rule(jsExtendableArray, jsStringOrNull, emptyType);
rule(jsExtendableArray, nullType, emptyType);
rule(jsExtendableArray, jsFixedArray, emptyType);
@@ -651,7 +651,7 @@
rule(jsUnmodifiableArray, jsBooleanOrNull, emptyType);
rule(jsUnmodifiableArray, jsNumberOrNull, emptyType);
rule(jsUnmodifiableArray, jsIntegerOrNull, emptyType);
- rule(jsUnmodifiableArray, jsDoubleOrNull, emptyType);
+ rule(jsUnmodifiableArray, jsNumNotIntOrNull, emptyType);
rule(jsUnmodifiableArray, jsStringOrNull, emptyType);
rule(jsUnmodifiableArray, nullType, emptyType);
rule(jsUnmodifiableArray, jsFixedArray, emptyType);
@@ -663,7 +663,7 @@
rule(nonPrimitive1, jsBooleanOrNull, emptyType);
rule(nonPrimitive1, jsNumberOrNull, emptyType);
rule(nonPrimitive1, jsIntegerOrNull, emptyType);
- rule(nonPrimitive1, jsDoubleOrNull, emptyType);
+ rule(nonPrimitive1, jsNumNotIntOrNull, emptyType);
rule(nonPrimitive1, jsStringOrNull, emptyType);
rule(nonPrimitive1, nullType, emptyType);
rule(nonPrimitive1, jsFixedArray, emptyType);
@@ -674,7 +674,7 @@
rule(nonPrimitive2, jsBooleanOrNull, emptyType);
rule(nonPrimitive2, jsNumberOrNull, emptyType);
rule(nonPrimitive2, jsIntegerOrNull, emptyType);
- rule(nonPrimitive2, jsDoubleOrNull, emptyType);
+ rule(nonPrimitive2, jsNumNotIntOrNull, emptyType);
rule(nonPrimitive2, jsStringOrNull, emptyType);
rule(nonPrimitive2, nullType, emptyType);
rule(nonPrimitive2, jsFixedArray, emptyType);
@@ -684,7 +684,7 @@
rule(potentialArray, jsBooleanOrNull, nullType);
rule(potentialArray, jsNumberOrNull, nullType);
rule(potentialArray, jsIntegerOrNull, nullType);
- rule(potentialArray, jsDoubleOrNull, nullType);
+ rule(potentialArray, jsNumNotIntOrNull, nullType);
rule(potentialArray, jsStringOrNull, nullType);
rule(potentialArray, nullType, nullType);
rule(potentialArray, jsFixedArray, jsFixedArray);
@@ -693,7 +693,7 @@
rule(potentialString, jsBooleanOrNull, nullType);
rule(potentialString, jsNumberOrNull, nullType);
rule(potentialString, jsIntegerOrNull, nullType);
- rule(potentialString, jsDoubleOrNull, nullType);
+ rule(potentialString, jsNumNotIntOrNull, nullType);
rule(potentialString, jsStringOrNull, jsStringOrNull);
rule(potentialString, nullType, nullType);
rule(potentialString, jsFixedArray, emptyType);
@@ -701,28 +701,28 @@
rule(jsBooleanOrNull, jsBooleanOrNull, jsBooleanOrNull);
rule(jsBooleanOrNull, jsNumberOrNull, nullType);
rule(jsBooleanOrNull, jsIntegerOrNull, nullType);
- rule(jsBooleanOrNull, jsDoubleOrNull, nullType);
+ rule(jsBooleanOrNull, jsNumNotIntOrNull, nullType);
rule(jsBooleanOrNull, jsStringOrNull, nullType);
rule(jsBooleanOrNull, nullType, nullType);
rule(jsBooleanOrNull, jsFixedArray, emptyType);
rule(jsNumberOrNull, jsNumberOrNull, jsNumberOrNull);
rule(jsNumberOrNull, jsIntegerOrNull, jsIntegerOrNull);
- rule(jsNumberOrNull, jsDoubleOrNull, jsDoubleOrNull);
+ rule(jsNumberOrNull, jsNumNotIntOrNull, jsNumNotIntOrNull);
rule(jsNumberOrNull, jsStringOrNull, nullType);
rule(jsNumberOrNull, nullType, nullType);
rule(jsNumberOrNull, jsFixedArray, emptyType);
rule(jsIntegerOrNull, jsIntegerOrNull, jsIntegerOrNull);
- rule(jsIntegerOrNull, jsDoubleOrNull, nullType);
+ rule(jsIntegerOrNull, jsNumNotIntOrNull, nullType);
rule(jsIntegerOrNull, jsStringOrNull, nullType);
rule(jsIntegerOrNull, nullType, nullType);
rule(jsIntegerOrNull, jsFixedArray, emptyType);
- rule(jsDoubleOrNull, jsDoubleOrNull, jsDoubleOrNull);
- rule(jsDoubleOrNull, jsStringOrNull, nullType);
- rule(jsDoubleOrNull, nullType, nullType);
- rule(jsDoubleOrNull, jsFixedArray, emptyType);
+ rule(jsNumNotIntOrNull, jsNumNotIntOrNull, jsNumNotIntOrNull);
+ rule(jsNumNotIntOrNull, jsStringOrNull, nullType);
+ rule(jsNumNotIntOrNull, nullType, nullType);
+ rule(jsNumNotIntOrNull, jsFixedArray, emptyType);
rule(jsStringOrNull, jsStringOrNull, jsStringOrNull);
rule(jsStringOrNull, nullType, nullType);
@@ -821,16 +821,16 @@
closedWorld.commonElements.jsNumberClass, closedWorld);
jsInteger = new TypeMask.nonNullExact(
closedWorld.commonElements.jsIntClass, closedWorld);
- jsDouble = new TypeMask.nonNullExact(
- closedWorld.commonElements.jsDoubleClass, closedWorld);
+ jsNumNotInt = new TypeMask.nonNullExact(
+ closedWorld.commonElements.jsNumNotIntClass, closedWorld);
jsBooleanOrNull =
new TypeMask.exact(closedWorld.commonElements.jsBoolClass, closedWorld);
jsNumberOrNull = new TypeMask.subclass(
closedWorld.commonElements.jsNumberClass, closedWorld);
jsIntegerOrNull =
new TypeMask.exact(closedWorld.commonElements.jsIntClass, closedWorld);
- jsDoubleOrNull =
- new TypeMask.exact(closedWorld.commonElements.jsDoubleClass, closedWorld);
+ jsNumNotIntOrNull = new TypeMask.exact(
+ closedWorld.commonElements.jsNumNotIntClass, closedWorld);
nullType = const TypeMask.empty();
objectType = new TypeMask.nonNullSubclass(
closedWorld.commonElements.objectClass, closedWorld);
diff --git a/pkg/compiler/test/rti/data/map_literal.dart b/pkg/compiler/test/rti/data/map_literal.dart
index 033f6f5..5776790 100644
--- a/pkg/compiler/test/rti/data/map_literal.dart
+++ b/pkg/compiler/test/rti/data/map_literal.dart
@@ -16,7 +16,7 @@
/*prod.class: global#double:*/
/*spec.class: global#double:implicit=[double]*/
-/*class: global#JSDouble:*/
+/*class: global#JSNumNotInt:*/
main() {
<int, double>{}[0] = 0.5;
diff --git a/pkg/compiler/test/rti/data/map_to_set.dart b/pkg/compiler/test/rti/data/map_to_set.dart
index 0476721..90e9586 100644
--- a/pkg/compiler/test/rti/data/map_to_set.dart
+++ b/pkg/compiler/test/rti/data/map_to_set.dart
@@ -16,7 +16,7 @@
/*prod.class: global#double:*/
/*spec.class: global#double:implicit=[double]*/
-/*class: global#JSDouble:*/
+/*class: global#JSNumNotInt:*/
main() {
var c = new Class<double, int>();
diff --git a/pkg/compiler/test/rti/emission/map_literal.dart b/pkg/compiler/test/rti/emission/map_literal.dart
index c2b86d0..884ba8a 100644
--- a/pkg/compiler/test/rti/emission/map_literal.dart
+++ b/pkg/compiler/test/rti/emission/map_literal.dart
@@ -11,7 +11,7 @@
/*spec.class: global#double:checkedInstance,instance,typeArgument*/
-/*class: global#JSDouble:checks=[],instance*/
+/*class: global#JSNumNotInt:checks=[],instance*/
main() {
<int, double>{}[0] = 0.5;
diff --git a/pkg/dev_compiler/analysis_options.yaml b/pkg/dev_compiler/analysis_options.yaml
index 649b03d..6a33ce2 100644
--- a/pkg/dev_compiler/analysis_options.yaml
+++ b/pkg/dev_compiler/analysis_options.yaml
@@ -1,4 +1,4 @@
-include: package:pedantic/analysis_options.1.8.0.yaml
+include: package:pedantic/analysis_options.1.9.0.yaml
analyzer:
strong-mode:
@@ -15,23 +15,6 @@
linter:
rules:
- # Enforced by pedantic v1.9.0.
- - always_declare_return_types
- - always_require_non_null_named_parameters
- - annotate_overrides
- - avoid_null_checks_in_equality_operators
- - camel_case_extensions
- - omit_local_variable_types
- - prefer_adjacent_string_concatenation
- - prefer_collection_literals
- - prefer_conditional_assignment
- - prefer_final_fields
- - prefer_for_elements_to_map_fromIterable
- - prefer_generic_function_type_aliases
- - prefer_if_null_operators
- - prefer_single_quotes
- - prefer_spread_collections
- - use_function_type_syntax_for_parameters
# Not enforced by pedantic at any version.
- directives_ordering
- prefer_null_aware_operators
diff --git a/pkg/dev_compiler/lib/src/compiler/module_containers.dart b/pkg/dev_compiler/lib/src/compiler/module_containers.dart
index 8bda34d..2e03a63 100644
--- a/pkg/dev_compiler/lib/src/compiler/module_containers.dart
+++ b/pkg/dev_compiler/lib/src/compiler/module_containers.dart
@@ -66,7 +66,7 @@
/// containerId is safe to use during eval.
ModuleItemContainer._(
this.name, this.containerId, js_ast.Identifier aggregatedId)
- : this.aggregatedContainerId = aggregatedId ?? containerId;
+ : aggregatedContainerId = aggregatedId ?? containerId;
/// Creates an automatically sharding container backed by JS Objects.
factory ModuleItemContainer.asObject(String name,
@@ -147,7 +147,7 @@
@override
void operator []=(K key, js_ast.Expression value) {
- if (this.contains(key)) {
+ if (contains(key)) {
moduleItems[key].jsValue = value;
return;
}
diff --git a/pkg/dev_compiler/lib/src/js_ast/nodes.dart b/pkg/dev_compiler/lib/src/js_ast/nodes.dart
index bdfb6c9..d721e6e 100644
--- a/pkg/dev_compiler/lib/src/js_ast/nodes.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/nodes.dart
@@ -7,7 +7,7 @@
// ignore_for_file: slash_for_doc_comments, prefer_single_quotes
// ignore_for_file: always_declare_return_types, prefer_final_fields
// ignore_for_file: always_require_non_null_named_parameters
-// ignore_for_file: omit_local_variable_types
+// ignore_for_file: omit_local_variable_types, unnecessary_this
part of js_ast;
diff --git a/pkg/dev_compiler/lib/src/js_ast/template.dart b/pkg/dev_compiler/lib/src/js_ast/template.dart
index 4cdad6d..d421d6a 100644
--- a/pkg/dev_compiler/lib/src/js_ast/template.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/template.dart
@@ -7,6 +7,7 @@
// ignore_for_file: slash_for_doc_comments, omit_local_variable_types
// ignore_for_file: always_declare_return_types, prefer_collection_literals
// ignore_for_file: prefer_single_quotes, prefer_generic_function_type_aliases
+// ignore_for_file: unnecessary_this
part of js_ast;
diff --git a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart
index cf27263..e1cd050 100644
--- a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart
+++ b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart
@@ -22,14 +22,14 @@
int x, y, z;
Foo(int a, int b)
- : this.x = a,
- this.y = b {
+ : x = a,
+ y = b {
z = a + b;
}
Foo.named()
- : this.x = 42,
- this.y = 88 {
+ : x = 42,
+ y = 88 {
z = 28;
}
}
diff --git a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart
index 1508da9..ab8d8a3 100644
--- a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart
+++ b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart
@@ -17,8 +17,8 @@
int x, y, z;
Foo(int a, int b)
- : this. /*sl:2*/ x = a, // `s:2` fails, DDK is missing hover info
- this. /*sl:3*/ y = b {
+ : /*sl:2*/ x = a, // `s:2` fails, DDK is missing hover info
+ /*sl:3*/ y = b {
// `s:3` fails, DDK is missing hover info
z = a /*sl:4*/ + b;
}
diff --git a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
index b0bc5db..84205dc 100644
--- a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
@@ -36,6 +36,11 @@
/// If [setter] is `true` the sought member is a setter or assignable field.
/// If [required] is `true` and no member is found an internal problem is
/// reported.
+ ///
+ /// If the extension member is a duplicate, `null` is returned.
+ // TODO(johnniwinther): Support [AmbiguousBuilder] here and in instance
+ // member lookup to avoid reporting that the member doesn't exist when it is
+ // duplicate.
Builder lookupLocalMemberByName(Name name,
{bool setter: false, bool required: false});
@@ -122,8 +127,18 @@
{bool setter: false, bool required: false}) {
Builder builder =
lookupLocalMember(name.text, setter: setter, required: required);
- if (builder != null && name.isPrivate && library.library != name.library) {
- builder = null;
+ if (builder != null) {
+ if (name.isPrivate && library.library != name.library) {
+ builder = null;
+ } else if (builder.isDuplicate) {
+ // Duplicates are not visible in the instance scope.
+ builder = null;
+ } else if (builder is MemberBuilder && builder.isConflictingSetter) {
+ // Conflicting setters are not visible in the instance scope.
+ // TODO(johnniwinther): Should we return an [AmbiguousBuilder] here and
+ // above?
+ builder = null;
+ }
}
return builder;
}
diff --git a/pkg/front_end/lib/src/fasta/builder/member_builder.dart b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
index b41a5a4..f496386 100644
--- a/pkg/front_end/lib/src/fasta/builder/member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
@@ -70,6 +70,10 @@
bool get isAbstract;
+ /// Returns `true` if this member is a setter that conflicts with the implicit
+ /// setter of a field.
+ bool get isConflictingSetter;
+
void buildOutlineExpressions(LibraryBuilder library, CoreTypes coreTypes);
/// Returns the [ClassMember]s for the non-setter members created for this
@@ -137,6 +141,19 @@
@override
bool get isAbstract => (modifiers & abstractMask) != 0;
+ bool _isConflictingSetter;
+
+ @override
+ bool get isConflictingSetter {
+ return _isConflictingSetter ??= false;
+ }
+
+ void set isConflictingSetter(bool value) {
+ assert(_isConflictingSetter == null,
+ '$this.isConflictingSetter has already been fixed.');
+ _isConflictingSetter = value;
+ }
+
@override
LibraryBuilder get library {
if (parent is LibraryBuilder) {
diff --git a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
index 388ba1d..cecc308 100644
--- a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
@@ -592,9 +592,10 @@
: <ClassMember>[new SourceProcedureMember(this)];
@override
- List<ClassMember> get localSetters => _localSetters ??= isSetter
- ? <ClassMember>[new SourceProcedureMember(this)]
- : const <ClassMember>[];
+ List<ClassMember> get localSetters =>
+ _localSetters ??= isSetter && !isConflictingSetter
+ ? <ClassMember>[new SourceProcedureMember(this)]
+ : const <ClassMember>[];
}
class SourceProcedureMember extends BuilderClassMember {
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index 369ec37..b97967d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -116,100 +116,182 @@
class Tuple {
final Name name;
- ClassMember declaredMember;
- ClassMember declaredSetter;
- ClassMember mixedInMember;
- ClassMember mixedInSetter;
- ClassMember extendedMember;
- ClassMember extendedSetter;
- List<ClassMember> implementedMembers;
- List<ClassMember> implementedSetters;
+ ClassMember _declaredMember;
+ ClassMember _declaredSetter;
+ ClassMember _mixedInMember;
+ ClassMember _mixedInSetter;
+ ClassMember _extendedMember;
+ ClassMember _extendedSetter;
+ List<ClassMember> _implementedMembers;
+ List<ClassMember> _implementedSetters;
- Tuple.declareMember(this.declaredMember)
- : assert(!declaredMember.forSetter),
- this.name = declaredMember.name;
+ Tuple.declareMember(this._declaredMember)
+ : assert(!_declaredMember.forSetter),
+ this.name = _declaredMember.name;
- Tuple.mixInMember(this.mixedInMember)
- : assert(!mixedInMember.forSetter),
- this.name = mixedInMember.name;
+ Tuple.mixInMember(this._mixedInMember)
+ : assert(!_mixedInMember.forSetter),
+ this.name = _mixedInMember.name;
- Tuple.extendMember(this.extendedMember)
- : assert(!extendedMember.forSetter),
- this.name = extendedMember.name;
+ Tuple.extendMember(this._extendedMember)
+ : assert(!_extendedMember.forSetter),
+ this.name = _extendedMember.name;
Tuple.implementMember(ClassMember implementedMember)
: assert(!implementedMember.forSetter),
this.name = implementedMember.name,
- implementedMembers = <ClassMember>[implementedMember];
+ _implementedMembers = <ClassMember>[implementedMember];
- Tuple.declareSetter(this.declaredSetter)
- : assert(declaredSetter.forSetter),
- this.name = declaredSetter.name;
+ Tuple.declareSetter(this._declaredSetter)
+ : assert(_declaredSetter.forSetter),
+ this.name = _declaredSetter.name;
- Tuple.mixInSetter(this.mixedInSetter)
- : assert(mixedInSetter.forSetter),
- this.name = mixedInSetter.name;
+ Tuple.mixInSetter(this._mixedInSetter)
+ : assert(_mixedInSetter.forSetter),
+ this.name = _mixedInSetter.name;
- Tuple.extendSetter(this.extendedSetter)
- : assert(extendedSetter.forSetter),
- this.name = extendedSetter.name;
+ Tuple.extendSetter(this._extendedSetter)
+ : assert(_extendedSetter.forSetter),
+ this.name = _extendedSetter.name;
Tuple.implementSetter(ClassMember implementedSetter)
: assert(implementedSetter.forSetter),
this.name = implementedSetter.name,
- implementedSetters = <ClassMember>[implementedSetter];
+ _implementedSetters = <ClassMember>[implementedSetter];
+
+ ClassMember get declaredMember => _declaredMember;
+
+ void set declaredMember(ClassMember value) {
+ assert(!value.forSetter);
+ assert(
+ _declaredMember == null,
+ "Declared member already set to $_declaredMember, "
+ "trying to set it to $value.");
+ _declaredMember = value;
+ }
+
+ ClassMember get declaredSetter => _declaredSetter;
+
+ void set declaredSetter(ClassMember value) {
+ assert(value.forSetter);
+ assert(
+ _declaredSetter == null,
+ "Declared setter already set to $_declaredSetter, "
+ "trying to set it to $value.");
+ _declaredSetter = value;
+ }
+
+ ClassMember get extendedMember => _extendedMember;
+
+ void set extendedMember(ClassMember value) {
+ assert(!value.forSetter);
+ assert(
+ _extendedMember == null,
+ "Extended member already set to $_extendedMember, "
+ "trying to set it to $value.");
+ _extendedMember = value;
+ }
+
+ ClassMember get extendedSetter => _extendedSetter;
+
+ void set extendedSetter(ClassMember value) {
+ assert(value.forSetter);
+ assert(
+ _extendedSetter == null,
+ "Extended setter already set to $_extendedSetter, "
+ "trying to set it to $value.");
+ _extendedSetter = value;
+ }
+
+ ClassMember get mixedInMember => _mixedInMember;
+
+ void set mixedInMember(ClassMember value) {
+ assert(!value.forSetter);
+ assert(
+ _mixedInMember == null,
+ "Mixed in member already set to $_mixedInMember, "
+ "trying to set it to $value.");
+ _mixedInMember = value;
+ }
+
+ ClassMember get mixedInSetter => _mixedInSetter;
+
+ void set mixedInSetter(ClassMember value) {
+ assert(value.forSetter);
+ assert(
+ _mixedInSetter == null,
+ "Mixed in setter already set to $_mixedInSetter, "
+ "trying to set it to $value.");
+ _mixedInSetter = value;
+ }
+
+ List<ClassMember> get implementedMembers => _implementedMembers;
+
+ void addImplementedMember(ClassMember value) {
+ assert(!value.forSetter);
+ _implementedMembers ??= <ClassMember>[];
+ _implementedMembers.add(value);
+ }
+
+ List<ClassMember> get implementedSetters => _implementedSetters;
+
+ void addImplementedSetter(ClassMember value) {
+ assert(value.forSetter);
+ _implementedSetters ??= <ClassMember>[];
+ _implementedSetters.add(value);
+ }
@override
String toString() {
StringBuffer sb = new StringBuffer();
String comma = '';
sb.write('Tuple(');
- if (declaredMember != null) {
+ if (_declaredMember != null) {
sb.write(comma);
sb.write('declaredMember=');
- sb.write(declaredMember);
+ sb.write(_declaredMember);
comma = ',';
}
- if (declaredSetter != null) {
+ if (_declaredSetter != null) {
sb.write(comma);
sb.write('declaredSetter=');
- sb.write(declaredSetter);
+ sb.write(_declaredSetter);
comma = ',';
}
- if (mixedInMember != null) {
+ if (_mixedInMember != null) {
sb.write(comma);
sb.write('mixedInMember=');
- sb.write(mixedInMember);
+ sb.write(_mixedInMember);
comma = ',';
}
- if (mixedInSetter != null) {
+ if (_mixedInSetter != null) {
sb.write(comma);
sb.write('mixedInSetter=');
- sb.write(mixedInSetter);
+ sb.write(_mixedInSetter);
comma = ',';
}
- if (extendedMember != null) {
+ if (_extendedMember != null) {
sb.write(comma);
sb.write('extendedMember=');
- sb.write(extendedMember);
+ sb.write(_extendedMember);
comma = ',';
}
- if (extendedSetter != null) {
+ if (_extendedSetter != null) {
sb.write(comma);
sb.write('extendedSetter=');
- sb.write(extendedSetter);
+ sb.write(_extendedSetter);
comma = ',';
}
- if (implementedMembers != null) {
+ if (_implementedMembers != null) {
sb.write(comma);
sb.write('implementedMembers=');
- sb.write(implementedMembers);
+ sb.write(_implementedMembers);
comma = ',';
}
- if (implementedSetters != null) {
+ if (_implementedSetters != null) {
sb.write(comma);
sb.write('implementedSetters=');
- sb.write(implementedSetters);
+ sb.write(_implementedSetters);
comma = ',';
}
sb.write(')');
@@ -1383,11 +1465,9 @@
Tuple tuple = memberMap[name];
if (tuple != null) {
if (superInterfaceMember.forSetter) {
- (tuple.implementedSetters ??= <ClassMember>[])
- .add(superInterfaceMember);
+ tuple.addImplementedSetter(superInterfaceMember);
} else {
- (tuple.implementedMembers ??= <ClassMember>[])
- .add(superInterfaceMember);
+ tuple.addImplementedMember(superInterfaceMember);
}
} else {
if (superInterfaceMember.forSetter) {
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart
index 5fa0edf..4f8e52b 100644
--- a/pkg/front_end/lib/src/fasta/scope.dart
+++ b/pkg/front_end/lib/src/fasta/scope.dart
@@ -355,6 +355,9 @@
builder, charOffset, fileUri);
} else if (!isInstanceScope && builder.isDeclarationInstanceMember) {
return null;
+ } else if (builder is MemberBuilder && builder.isConflictingSetter) {
+ // TODO(johnniwinther): Use a variant of [AmbiguousBuilder] for this case.
+ return null;
} else {
return builder;
}
@@ -779,6 +782,9 @@
bool get isAbstract => false;
@override
+ bool get isConflictingSetter => false;
+
+ @override
void set parent(Builder value) {
throw new UnsupportedError('AmbiguousMemberBuilder.parent=');
}
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index f944fe9..6d6dca8 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -133,6 +133,12 @@
SourceLibraryBuilder get library => super.library;
Class build(SourceLibraryBuilder library, LibraryBuilder coreLibrary) {
+ SourceLibraryBuilder.checkMemberConflicts(library, scope,
+ // These checks are performed as part of the class hierarchy
+ // computation.
+ checkForInstanceVsStaticConflict: false,
+ checkForMethodVsSetterConflict: false);
+
void buildBuilders(String name, Builder declaration) {
do {
if (declaration.parent != this) {
@@ -148,7 +154,9 @@
memberBuilder.buildMembers(library,
(Member member, BuiltMemberKind memberKind) {
member.parent = cls;
- if (!memberBuilder.isPatch && !memberBuilder.isDuplicate) {
+ if (!memberBuilder.isPatch &&
+ !memberBuilder.isDuplicate &&
+ !memberBuilder.isConflictingSetter) {
if (member is Procedure) {
cls.addProcedure(member);
} else if (member is Field) {
@@ -270,20 +278,6 @@
});
scope.forEachLocalSetter((String name, Builder setter) {
- Builder member = scopeBuilder[name];
- if (member == null ||
- !(member.isField && !member.isFinal && !member.isConst ||
- member.isRegularMethod && member.isStatic && setter.isStatic)) {
- return;
- }
- addProblem(templateConflictsWithMember.withArguments(name),
- setter.charOffset, noLength);
- // TODO(ahe): Context argument to previous message?
- addProblem(templateConflictsWithSetter.withArguments(name),
- member.charOffset, noLength);
- });
-
- scope.forEachLocalSetter((String name, Builder setter) {
Builder constructor = constructorScopeBuilder[name];
if (constructor == null || !setter.isStatic) return;
addProblem(templateConflictsWithConstructor.withArguments(name),
diff --git a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
index 744ce07..1538023 100644
--- a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
@@ -27,8 +27,6 @@
messagePatchDeclarationMismatch,
messagePatchDeclarationOrigin,
noLength,
- templateConflictsWithMember,
- templateConflictsWithSetter,
templateExtensionMemberConflictsWithObjectMember;
import '../problems.dart';
@@ -86,6 +84,10 @@
Extension build(
SourceLibraryBuilder libraryBuilder, LibraryBuilder coreLibrary,
{bool addMembersToLibrary}) {
+ SourceLibraryBuilder.checkMemberConflicts(library, scope,
+ checkForInstanceVsStaticConflict: true,
+ checkForMethodVsSetterConflict: true);
+
ClassBuilder objectClassBuilder =
coreLibrary.lookupLocalMember('Object', required: true);
void buildBuilders(String name, Builder declaration) {
@@ -114,8 +116,10 @@
(Member member, BuiltMemberKind memberKind) {
if (addMembersToLibrary &&
!memberBuilder.isPatch &&
- !memberBuilder.isDuplicate) {
+ !memberBuilder.isDuplicate &&
+ !memberBuilder.isConflictingSetter) {
ExtensionMemberKind kind;
+ String name = memberBuilder.name;
switch (memberKind) {
case BuiltMemberKind.Constructor:
case BuiltMemberKind.RedirectingFactory:
@@ -162,7 +166,7 @@
member.fileOffset, member.fileUri);
}
extension.members.add(new ExtensionMemberDescriptor(
- name: new Name(memberBuilder.name, libraryBuilder.library),
+ name: new Name(name, libraryBuilder.library),
member: memberReference,
isStatic: declaration.isStatic,
kind: kind));
@@ -178,32 +182,6 @@
scope.forEach(buildBuilders);
- scope.forEachLocalSetter((String name, MemberBuilder setter) {
- Builder member = scopeBuilder[name];
- if (member == null) {
- // Setter without getter.
- return;
- }
- bool conflict = member.isDeclarationInstanceMember !=
- setter.isDeclarationInstanceMember;
- if (member.isField) {
- if (!member.isConst && !member.isFinal) {
- // Setter with writable field.
- conflict = true;
- }
- } else if (member.isRegularMethod) {
- // Setter with method.
- conflict = true;
- }
- if (conflict) {
- addProblem(templateConflictsWithMember.withArguments(name),
- setter.charOffset, noLength);
- // TODO(ahe): Context argument to previous message?
- addProblem(templateConflictsWithSetter.withArguments(name),
- member.charOffset, noLength);
- }
- });
-
_extension.onType = onType?.build(libraryBuilder);
return _extension;
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 59b38d9..2597332 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -161,9 +161,6 @@
Uri get packageUriForTesting => _packageUri;
- final List<ImplementationInfo> implementationBuilders =
- <ImplementationInfo>[];
-
final List<Object> accessors = <Object>[];
String name;
@@ -180,8 +177,6 @@
/// for example, [addClass] is called.
TypeParameterScopeBuilder currentTypeParameterScopeBuilder;
- bool canAddImplementationBuilders = false;
-
/// Non-null if this library causes an error upon access, that is, there was
/// an error reading its source.
Message accessProblem;
@@ -881,37 +876,84 @@
return true;
}
+ /// Checks [scope] for conflicts between setters and non-setters and reports
+ /// them in [sourceLibraryBuilder].
+ ///
+ /// If [checkForInstanceVsStaticConflict] is `true`, conflicts between
+ /// instance and static members of the same name are reported.
+ ///
+ /// If [checkForMethodVsSetterConflict] is `true`, conflicts between
+ /// methods and setters of the same name are reported.
+ static void checkMemberConflicts(
+ SourceLibraryBuilder sourceLibraryBuilder, Scope scope,
+ {bool checkForInstanceVsStaticConflict,
+ bool checkForMethodVsSetterConflict}) {
+ assert(checkForInstanceVsStaticConflict != null);
+ assert(checkForMethodVsSetterConflict != null);
+
+ scope.forEachLocalSetter((String name, MemberBuilder setter) {
+ Builder member = scope.lookupLocalMember(name, setter: false);
+ if (member == null) {
+ // Setter without getter.
+ return;
+ }
+ MemberBuilderImpl setterBuilder = setter;
+ do {
+ bool conflict = checkForInstanceVsStaticConflict &&
+ member.isDeclarationInstanceMember !=
+ setterBuilder.isDeclarationInstanceMember;
+ if (member is FieldBuilder) {
+ if (member.isAssignable) {
+ // Setter with writable field.
+ setterBuilder.isConflictingSetter = true;
+ conflict = true;
+ }
+ } else if (checkForMethodVsSetterConflict && !member.isGetter) {
+ // Setter with method.
+ conflict = true;
+ }
+ if (conflict) {
+ if (setterBuilder.isConflictingSetter) {
+ sourceLibraryBuilder.addProblem(
+ templateConflictsWithImplicitSetter.withArguments(name),
+ setterBuilder.charOffset,
+ noLength,
+ setterBuilder.fileUri);
+ // TODO(ahe): Context argument to previous message?
+ sourceLibraryBuilder.addProblem(
+ templateConflictsWithSetter.withArguments(name),
+ member.charOffset,
+ noLength,
+ member.fileUri);
+ } else {
+ sourceLibraryBuilder.addProblem(
+ templateConflictsWithMember.withArguments(name),
+ setterBuilder.charOffset,
+ noLength,
+ setterBuilder.fileUri);
+ // TODO(ahe): Context argument to previous message?
+ sourceLibraryBuilder.addProblem(
+ templateConflictsWithSetter.withArguments(name),
+ member.charOffset,
+ noLength,
+ member.fileUri);
+ }
+ }
+ setterBuilder = setterBuilder.next;
+ } while (setterBuilder != null);
+ });
+ }
+
/// Builds the core AST structure of this library as needed for the outline.
Library build(LibraryBuilder coreLibrary, {bool modifyTarget}) {
- assert(implementationBuilders.isEmpty);
- canAddImplementationBuilders = true;
+ checkMemberConflicts(this, scope,
+ checkForInstanceVsStaticConflict: false,
+ checkForMethodVsSetterConflict: true);
+
Iterator<Builder> iterator = this.iterator;
while (iterator.moveNext()) {
buildBuilder(iterator.current, coreLibrary);
}
- for (ImplementationInfo info in implementationBuilders) {
- String name = info.name;
- Builder declaration = info.declaration;
- int charOffset = info.charOffset;
- addBuilder(name, declaration, charOffset);
- buildBuilder(declaration, coreLibrary);
- }
- canAddImplementationBuilders = false;
-
- scope.forEachLocalSetter((String name, Builder setter) {
- Builder member = scopeBuilder[name];
- if (member == null ||
- !member.isField ||
- member.isFinal ||
- member.isConst) {
- return;
- }
- addProblem(templateConflictsWithMember.withArguments(name),
- setter.charOffset, noLength, fileUri);
- // TODO(ahe): Context to previous message?
- addProblem(templateConflictsWithSetter.withArguments(name),
- member.charOffset, noLength, fileUri);
- });
if (modifyTarget == false) return library;
@@ -935,17 +977,6 @@
return library;
}
- /// Used to add implementation builder during the call to [build] above.
- /// Currently, only anonymous mixins are using implementation builders (see
- /// [MixinApplicationBuilder]
- /// (../kernel/kernel_mixin_application_builder.dart)).
- void addImplementationBuilder(
- String name, Builder declaration, int charOffset) {
- assert(canAddImplementationBuilders, "$importUri");
- implementationBuilders
- .add(new ImplementationInfo(name, declaration, charOffset));
- }
-
void validatePart(SourceLibraryBuilder library, Set<Uri> usedParts) {
if (library != null && parts.isNotEmpty) {
// If [library] is null, we have already reported a problem that this
@@ -2548,7 +2579,9 @@
}
} else if (member is Procedure) {
member.isStatic = true;
- if (!declaration.isPatch && !declaration.isDuplicate) {
+ if (!declaration.isPatch &&
+ !declaration.isDuplicate &&
+ !declaration.isConflictingSetter) {
library.addProcedure(member);
}
} else {
@@ -3961,14 +3994,6 @@
this.beforeLast, this.charEndOffset);
}
-class ImplementationInfo {
- final String name;
- final Builder declaration;
- final int charOffset;
-
- const ImplementationInfo(this.name, this.declaration, this.charOffset);
-}
-
Uri computeLibraryUri(Builder declaration) {
Builder current = declaration;
do {
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 2eeae7a..e07a53f 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -76,10 +76,10 @@
ConflictsWithConstructor/example: Fail
ConflictsWithFactory/analyzerCode: Fail
ConflictsWithFactory/example: Fail
+ConflictsWithImplicitSetter/example: Fail
ConflictsWithMember/example: Fail
ConflictsWithMemberWarning/example: Fail
ConflictsWithSetter/example: Fail
-ConflictsWithSetterWarning/example: Fail
ConflictsWithTypeVariable/example: Fail
ConstAndFinal/declaration3: Fail
ConstAndFinal/declaration4: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 6556e70..44544f2 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -2116,6 +2116,10 @@
template: "Conflicts with member '#name'."
analyzerCode: CONFLICTS_WITH_MEMBER
+ConflictsWithImplicitSetter:
+ template: "Conflicts with the implicit setter of the field '#name'."
+ analyzerCode: CONFLICTS_WITH_MEMBER
+
ConflictsWithSetter:
template: "Conflicts with setter '#name'."
analyzerCode: CONFLICTS_WITH_MEMBER
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect b/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect
index ca41f17..6cfc008 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect
@@ -2,7 +2,7 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
+// 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) {}
// ^
//
@@ -24,12 +24,9 @@
extension C on core::int* {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
- static set property2 = set self::C|property2;
static set property3 = set self::C|property3;
}
static field core::int* C|property2;
-static set C|property2(core::int* x) → void
- ;
static set C|property3(core::int* x) → void
;
static method C|get#property3(lowered final core::int* #this) → core::int*
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect b/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect
index 9108ed9..8dbe072 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect
@@ -2,7 +2,7 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
+// 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) {}
// ^
//
@@ -24,11 +24,9 @@
extension C on core::int* {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
- static set property2 = set self::C|property2;
static set property3 = set self::C|property3;
}
static field core::int* C|property2;
-static set C|property2(core::int* x) → void {}
static set C|property3(core::int* x) → void {}
static method C|get#property3(lowered final core::int* #this) → core::int*
return 1;
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect
index 9108ed9..8dbe072 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
+// 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) {}
// ^
//
@@ -24,11 +24,9 @@
extension C on core::int* {
static field property2 = self::C|property2;
get property3 = self::C|get#property3;
- static set property2 = set self::C|property2;
static set property3 = set self::C|property3;
}
static field core::int* C|property2;
-static set C|property2(core::int* x) → void {}
static set C|property3(core::int* x) → void {}
static method C|get#property3(lowered final core::int* #this) → core::int*
return 1;
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart b/pkg/front_end/testcases/extensions/issue44003.dart
new file mode 100644
index 0000000..a7a25ed
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart
@@ -0,0 +1,19 @@
+// 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.
+
+void test(List<String> args) {
+ args.foo('1', 2);
+}
+
+extension on List<String> {
+ void foo(String bar) {
+ print(1);
+ }
+
+ void foo(String baz, int a) {
+ print(2);
+ }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.outline.expect b/pkg/front_end/testcases/extensions/issue44003.dart.outline.expect
new file mode 100644
index 0000000..59eaf76
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.outline.expect
@@ -0,0 +1,26 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:14:8: Error: 'foo' is already declared in this scope.
+// void foo(String baz, int a) {
+// ^^^
+// pkg/front_end/testcases/extensions/issue44003.dart:10:8: Context: Previous declaration of 'foo'.
+// void foo(String bar) {
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+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 _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 main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.strong.expect b/pkg/front_end/testcases/extensions/issue44003.dart.strong.expect
new file mode 100644
index 0000000..00f8324
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.strong.expect
@@ -0,0 +1,37 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:14:8: Error: 'foo' is already declared in this scope.
+// void foo(String baz, int a) {
+// ^^^
+// pkg/front_end/testcases/extensions/issue44003.dart:10:8: Context: Previous declaration of 'foo'.
+// void foo(String bar) {
+// ^^^
+//
+// 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);
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+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 {
+ 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);
+ ^^^";
+}
+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 main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue44003.dart.strong.transformed.expect
new file mode 100644
index 0000000..00f8324
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.strong.transformed.expect
@@ -0,0 +1,37 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:14:8: Error: 'foo' is already declared in this scope.
+// void foo(String baz, int a) {
+// ^^^
+// pkg/front_end/testcases/extensions/issue44003.dart:10:8: Context: Previous declaration of 'foo'.
+// void foo(String bar) {
+// ^^^
+//
+// 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);
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+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 {
+ 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);
+ ^^^";
+}
+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 main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
new file mode 100644
index 0000000..c57b097
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
@@ -0,0 +1,8 @@
+void test(List<String> args) {}
+
+extension on List<String> {
+ void foo(String bar) {}
+ void foo(String baz, int a) {}
+}
+
+main() {}
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
new file mode 100644
index 0000000..47d69a0
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+extension on List<String> {
+ void foo(String bar) {}
+ void foo(String baz, int a) {}
+}
+
+main() {}
+void test(List<String> args) {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart b/pkg/front_end/testcases/extensions/issue44844.dart
new file mode 100644
index 0000000..14f590b
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart
@@ -0,0 +1,14 @@
+// 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.
+
+extension on int {
+ static int foo = 2;
+ void foo() {}
+}
+
+void test() {
+ 3.foo();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.outline.expect b/pkg/front_end/testcases/extensions/issue44844.dart.outline.expect
new file mode 100644
index 0000000..33b1925
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.outline.expect
@@ -0,0 +1,22 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:7:8: Error: 'foo' is already declared in this scope.
+// void foo() {}
+// ^^^
+// pkg/front_end/testcases/extensions/issue44844.dart:6:14: Context: Previous declaration of 'foo'.
+// static int foo = 2;
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::int* {
+ static field foo = self::_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.strong.expect b/pkg/front_end/testcases/extensions/issue44844.dart.strong.expect
new file mode 100644
index 0000000..b967f55
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.strong.expect
@@ -0,0 +1,30 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:7:8: Error: 'foo' is already declared in this scope.
+// void foo() {}
+// ^^^
+// pkg/front_end/testcases/extensions/issue44844.dart:6:14: Context: Previous declaration of 'foo'.
+// static int foo = 2;
+// ^^^
+//
+// 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'.
+// 3.foo();
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::int* {
+ static field foo = self::_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'.
+ 3.foo();
+ ^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue44844.dart.strong.transformed.expect
new file mode 100644
index 0000000..b967f55
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.strong.transformed.expect
@@ -0,0 +1,30 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:7:8: Error: 'foo' is already declared in this scope.
+// void foo() {}
+// ^^^
+// pkg/front_end/testcases/extensions/issue44844.dart:6:14: Context: Previous declaration of 'foo'.
+// static int foo = 2;
+// ^^^
+//
+// 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'.
+// 3.foo();
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::int* {
+ static field foo = self::_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'.
+ 3.foo();
+ ^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
new file mode 100644
index 0000000..53fe40b
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+extension on int {
+ static int foo = 2;
+ void foo() {}
+}
+
+void test() {}
+main() {}
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
new file mode 100644
index 0000000..401a830
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+extension on int {
+ static int foo = 2;
+ void foo() {}
+}
+
+main() {}
+void test() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
index 9e770ac..c1106cd 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
@@ -237,7 +237,7 @@
// int Foo;
// ^^^
//
-// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with member 'Foo'.
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with the implicit setter of the field 'Foo'.
// set Foo {
// ^
//
@@ -245,6 +245,10 @@
// int A, Foo, B;
// ^
//
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:7: Error: Conflicts with the implicit setter of the field 'Foo'.
+// set Foo => 0;
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -261,8 +265,6 @@
;
get Foo() → dynamic
;
- set Foo(dynamic #synthetic) → 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
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
index b1866d9..e9229ec 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
@@ -237,7 +237,7 @@
// int Foo;
// ^^^
//
-// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with member 'Foo'.
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with the implicit setter of the field 'Foo'.
// set Foo {
// ^
//
@@ -245,6 +245,10 @@
// int A, Foo, B;
// ^
//
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:7: Error: Conflicts with the implicit setter of the field 'Foo'.
+// set Foo => 0;
+// ^
+//
// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:5:13: Error: 'initializer' isn't an instance field of this class.
// foo.x() : initializer = true {
// ^^^^^^^^^^^
@@ -354,12 +358,6 @@
^";
get Foo() → dynamic
return 0;
- set Foo(dynamic #synthetic) → void {
- invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:11: Error: A setter should have exactly one formal parameter.
- set Foo => 0;
- ^";
- return 0;
- }
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
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
index b1866d9..e9229ec 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
@@ -237,7 +237,7 @@
// int Foo;
// ^^^
//
-// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with member 'Foo'.
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with the implicit setter of the field 'Foo'.
// set Foo {
// ^
//
@@ -245,6 +245,10 @@
// int A, Foo, B;
// ^
//
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:7: Error: Conflicts with the implicit setter of the field 'Foo'.
+// set Foo => 0;
+// ^
+//
// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:5:13: Error: 'initializer' isn't an instance field of this class.
// foo.x() : initializer = true {
// ^^^^^^^^^^^
@@ -354,12 +358,6 @@
^";
get Foo() → dynamic
return 0;
- set Foo(dynamic #synthetic) → void {
- invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:11: Error: A setter should have exactly one formal parameter.
- set Foo => 0;
- ^";
- return 0;
- }
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
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart b/pkg/front_end/testcases/general/final_field_setter.dart
new file mode 100644
index 0000000..9dcaad1
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart
@@ -0,0 +1,17 @@
+// 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.
+
+final int field = 42;
+void set field(int value) {}
+
+class Class {
+ final int field = 42;
+ void set field(int value) {}
+}
+
+main() {
+ field = field;
+ var c = new Class();
+ c.field = field;
+}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.outline.expect b/pkg/front_end/testcases/general/final_field_setter.dart.outline.expect
new file mode 100644
index 0000000..e26476e
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.outline.expect
@@ -0,0 +1,26 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ final field core::int* field;
+ synthetic constructor •() → self::Class*
+ ;
+ set field(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
+}
+static final field core::int* field;
+static set field(core::int* value) → void
+ ;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.strong.expect b/pkg/front_end/testcases/general/final_field_setter.dart.strong.expect
new file mode 100644
index 0000000..b2023bc
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.strong.expect
@@ -0,0 +1,28 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ final field core::int* field = 42;
+ synthetic constructor •() → self::Class*
+ : super core::Object::•()
+ ;
+ set field(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
+}
+static final field core::int* field = 42;
+static set field(core::int* value) → void {}
+static method main() → dynamic {
+ self::field = self::field;
+ self::Class* c = new self::Class::•();
+ c.{self::Class::field} = self::field;
+}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general/final_field_setter.dart.strong.transformed.expect
new file mode 100644
index 0000000..b2023bc
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.strong.transformed.expect
@@ -0,0 +1,28 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+ final field core::int* field = 42;
+ synthetic constructor •() → self::Class*
+ : super core::Object::•()
+ ;
+ set field(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
+}
+static final field core::int* field = 42;
+static set field(core::int* value) → void {}
+static method main() → dynamic {
+ self::field = self::field;
+ self::Class* c = new self::Class::•();
+ c.{self::Class::field} = self::field;
+}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline.expect b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline.expect
new file mode 100644
index 0000000..08e9a6b
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline.expect
@@ -0,0 +1,9 @@
+final int field = 42;
+void set field(int value) {}
+
+class Class {
+ final int field = 42;
+ void set field(int value) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..41e7dd1
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline_modelled.expect
@@ -0,0 +1,8 @@
+class Class {
+ final int field = 42;
+ void set field(int value) {}
+}
+
+final int field = 42;
+main() {}
+void set field(int value) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart b/pkg/front_end/testcases/nnbd/duplicates_instance.dart
index 274496d..7a47ac6 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart
@@ -100,8 +100,8 @@
main() {
Class c = new Class();
c.instanceFieldAndSetter1 = 0;
- expect(2, result);
- expect(1, c.instanceFieldAndSetter1);
+ expect(null, result);
+ expect(0, c.instanceFieldAndSetter1);
result = null;
c.instanceFieldAndSetter2 = 0;
@@ -110,8 +110,8 @@
result = null;
c.instanceLateFinalFieldAndSetter1 = 0;
- expect(2, result);
- throws(() => c.instanceLateFinalFieldAndSetter1);
+ expect(null, result);
+ expect(0, c.instanceLateFinalFieldAndSetter1);
result = null;
c.instanceLateFinalFieldAndSetter2 = 0;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
index 4894f32..87fab42 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
@@ -58,7 +58,7 @@
// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
// void set instanceFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// int instanceFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
// void set instanceFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// int instanceFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
// void set instanceMethodAndSetter1(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -108,14 +124,6 @@
;
set instanceSetter(dynamic value) → void
;
- set instanceFieldAndSetter1(core::int value) → void
- ;
- set instanceFieldAndSetter2(core::int value) → void
- ;
- set instanceLateFinalFieldAndSetter1(core::int value) → void
- ;
- set instanceLateFinalFieldAndSetter2(core::int value) → void
- ;
set instanceDuplicateFieldAndSetter(core::int value) → void
;
set instanceFieldAndDuplicateSetter(core::int value) → void
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
@@ -58,7 +58,7 @@
// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
// void set instanceFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// int instanceFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
// void set instanceFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// int instanceFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
// void set instanceMethodAndSetter1(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
set instanceSetter(dynamic value) → void {
self::result = 1;
}
- set instanceFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
set instanceDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -301,16 +305,16 @@
static method main() → dynamic {
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceFieldAndSetter1});
self::result = null;
c.{self::Class::instanceFieldAndSetter2} = 0;
self::expect(null, self::result);
self::expect(0, c.{self::Class::instanceFieldAndSetter2});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
@@ -58,7 +58,7 @@
// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
// void set instanceFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// int instanceFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
// void set instanceFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// int instanceFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
// void set instanceMethodAndSetter1(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
set instanceSetter(dynamic value) → void {
self::result = 1;
}
- set instanceFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
set instanceDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -301,16 +305,16 @@
static method main() → dynamic {
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceFieldAndSetter1});
self::result = null;
c.{self::Class::instanceFieldAndSetter2} = 0;
self::expect(null, self::result);
self::expect(0, c.{self::Class::instanceFieldAndSetter2});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
@@ -58,7 +58,7 @@
// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
// void set instanceFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// int instanceFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
// void set instanceFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// int instanceFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
// void set instanceMethodAndSetter1(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
set instanceSetter(dynamic value) → void {
self::result = 1;
}
- set instanceFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
set instanceDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -301,16 +305,16 @@
static method main() → dynamic {
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceFieldAndSetter1});
self::result = null;
c.{self::Class::instanceFieldAndSetter2} = 0;
self::expect(null, self::result);
self::expect(0, c.{self::Class::instanceFieldAndSetter2});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
@@ -58,7 +58,7 @@
// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
// void set instanceFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// int instanceFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
// void set instanceFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// int instanceFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
// void set instanceMethodAndSetter1(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
set instanceSetter(dynamic value) → void {
self::result = 1;
}
- set instanceFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- set instanceLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
set instanceDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -301,16 +305,16 @@
static method main() → dynamic {
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceFieldAndSetter1});
self::result = null;
c.{self::Class::instanceFieldAndSetter2} = 0;
self::expect(null, self::result);
self::expect(0, c.{self::Class::instanceFieldAndSetter2});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+ self::expect(null, self::result);
+ self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
self::result = null;
c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
index 41ba326..007705d 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
@@ -80,52 +80,33 @@
test() {
int c = 0;
+ c.instanceMethod();
+ (c.instanceMethod)();
+ c.instanceGetter;
+ c.instanceSetter = 0;
c.instanceField;
c.instanceField = 0;
c.instanceFieldAndSetter1;
+ c.instanceFieldAndSetter1 = 0;
c.instanceFieldAndSetter2;
+ c.instanceFieldAndSetter2 = 0;
c.instanceLateFinalFieldAndSetter1;
+ c.instanceLateFinalFieldAndSetter1 = 0;
c.instanceLateFinalFieldAndSetter2;
+ c.instanceLateFinalFieldAndSetter2 = 0;
c.instanceDuplicateFieldAndSetter;
c.instanceFieldAndDuplicateSetter;
+ c.instanceFieldAndDuplicateSetter = 0;
c.instanceDuplicateFieldAndDuplicateSetter;
+ c.instanceDuplicateFieldAndDuplicateSetter = 0;
}
main() {
int c = 0;
- expect(1, c.instanceMethod());
-
- expect(1, (c.instanceMethod)());
-
- result = null;
- expect(1, c.instanceGetter);
- c.instanceSetter = 0;
- expect(1, result);
-
- result = null;
- c.instanceFieldAndSetter1 = 0;
- expect(2, result);
-
- result = null;
- c.instanceFieldAndSetter2 = 0;
- expect(null, result);
-
- result = null;
- c.instanceLateFinalFieldAndSetter1 = 0;
- expect(2, result);
-
- result = null;
- c.instanceLateFinalFieldAndSetter2 = 0;
- expect(2, result);
-
result = null;
c.instanceDuplicateFieldAndSetter = 0;
- expect(2, result);
-
- result = null;
- c.instanceDuplicateFieldAndDuplicateSetter = 0;
- expect(2, result);
+ expect(3, result);
result = null;
expect(1, c.instanceMethodAndSetter1());
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
index bd4f3ab..1337a95 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
@@ -113,7 +113,7 @@
// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
// void set instanceFieldAndSetter1(int value) {
// ^
//
@@ -121,7 +121,7 @@
// int instanceFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
// void set instanceFieldAndSetter2(int value) {
// ^
//
@@ -129,6 +129,22 @@
// int instanceFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
// void set instanceMethodAndSetter1(int value) {
// ^
@@ -165,10 +181,6 @@
method instanceMethodAndSetter2 = self::Extension|instanceMethodAndSetter2;
tearoff instanceMethodAndSetter2 = self::Extension|get#instanceMethodAndSetter2;
set instanceSetter = self::Extension|set#instanceSetter;
- set instanceFieldAndSetter1 = self::Extension|set#instanceFieldAndSetter1;
- set instanceFieldAndSetter2 = self::Extension|set#instanceFieldAndSetter2;
- set instanceLateFinalFieldAndSetter1 = self::Extension|set#instanceLateFinalFieldAndSetter1;
- set instanceLateFinalFieldAndSetter2 = self::Extension|set#instanceLateFinalFieldAndSetter2;
set instanceDuplicateFieldAndSetter = self::Extension|set#instanceDuplicateFieldAndSetter;
set instanceFieldAndDuplicateSetter = self::Extension|set#instanceFieldAndDuplicateSetter;
set instanceDuplicateFieldAndDuplicateSetter = self::Extension|set#instanceDuplicateFieldAndDuplicateSetter;
@@ -192,14 +204,6 @@
;
static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void
;
-static method Extension|set#instanceFieldAndSetter1(lowered final core::int #this, core::int value) → void
- ;
-static method Extension|set#instanceFieldAndSetter2(lowered final core::int #this, core::int value) → void
- ;
-static method Extension|set#instanceLateFinalFieldAndSetter1(lowered final core::int #this, core::int value) → void
- ;
-static method Extension|set#instanceLateFinalFieldAndSetter2(lowered final core::int #this, core::int value) → void
- ;
static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void
;
static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
@@ -0,0 +1,432 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+// int instanceMethod() => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+// int instanceMethod() => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+// int get instanceGetter => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+// int get instanceGetter => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: 'instanceField' is already declared in this scope.
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Context: Previous declaration of 'instanceField'.
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter1 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter2 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:51:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:56:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:52:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:66:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:62:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
+// void set instanceFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+// int instanceFieldAndSetter1 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
+// void set instanceFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+// int instanceFieldAndSetter2 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
+// void set instanceMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:70:7: Error: Conflicts with setter 'instanceMethodAndSetter1'.
+// int instanceMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:75:12: Error: Conflicts with member 'instanceMethodAndSetter2'.
+// void set instanceMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:78:7: Error: Conflicts with setter 'instanceMethodAndSetter2'.
+// int instanceMethodAndSetter2() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+// c.instanceMethod();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+// (c.instanceMethod)();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+// c.instanceGetter;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+// c.instanceSetter = 0;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+// c.instanceField;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+// c.instanceField = 0;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+// c.instanceDuplicateFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+ method instanceMethod = self::Extension|instanceMethod;
+ tearoff instanceMethod = self::Extension|get#instanceMethod;
+ get instanceGetter = self::Extension|get#instanceGetter;
+ field instanceField = self::Extension|instanceField;
+ field instanceFieldAndSetter1 = self::Extension|instanceFieldAndSetter1;
+ field instanceFieldAndSetter2 = self::Extension|instanceFieldAndSetter2;
+ field instanceLateFinalFieldAndSetter1 = self::Extension|instanceLateFinalFieldAndSetter1;
+ field instanceLateFinalFieldAndSetter2 = self::Extension|instanceLateFinalFieldAndSetter2;
+ field instanceDuplicateFieldAndSetter = self::Extension|instanceDuplicateFieldAndSetter;
+ field instanceFieldAndDuplicateSetter = self::Extension|instanceFieldAndDuplicateSetter;
+ field instanceDuplicateFieldAndDuplicateSetter = self::Extension|instanceDuplicateFieldAndDuplicateSetter;
+ method instanceMethodAndSetter1 = self::Extension|instanceMethodAndSetter1;
+ tearoff instanceMethodAndSetter1 = self::Extension|get#instanceMethodAndSetter1;
+ method instanceMethodAndSetter2 = self::Extension|instanceMethodAndSetter2;
+ tearoff instanceMethodAndSetter2 = self::Extension|get#instanceMethodAndSetter2;
+ set instanceSetter = self::Extension|set#instanceSetter;
+ set instanceDuplicateFieldAndSetter = self::Extension|set#instanceDuplicateFieldAndSetter;
+ set instanceFieldAndDuplicateSetter = self::Extension|set#instanceFieldAndDuplicateSetter;
+ set instanceDuplicateFieldAndDuplicateSetter = self::Extension|set#instanceDuplicateFieldAndDuplicateSetter;
+ set instanceMethodAndSetter1 = self::Extension|set#instanceMethodAndSetter1;
+ set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|instanceField;
+static field core::int Extension|instanceFieldAndSetter1 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
+static final field core::int Extension|instanceDuplicateFieldAndSetter;
+static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethod(#this);
+static method Extension|get#instanceGetter(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+ self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter1(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter1(#this);
+static method Extension|set#instanceMethodAndSetter1(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+ core::int c = 0;
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+ c.instanceMethod();
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+ (c.instanceMethod)();
+ ^^^^^^^^^^^^^^".call();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+ c.instanceGetter;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+ c.instanceSetter = 0;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+ c.instanceField;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+ c.instanceField = 0;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+ c.instanceDuplicateFieldAndSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+ core::int c = 0;
+ self::result = null;
+ self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+ self::expect(3, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+ self::Extension|set#instanceMethodAndSetter1(c, 0);
+ self::expect(2, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+ self::Extension|set#instanceMethodAndSetter2(c, 0);
+ self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!expected.{core::Object::==}(actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+ try {
+ f.call();
+ }
+ on core::Object catch(final core::Object e) {
+ core::print(e);
+ return;
+ }
+ throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
@@ -0,0 +1,432 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+// int instanceMethod() => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+// int instanceMethod() => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+// int get instanceGetter => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+// int get instanceGetter => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: 'instanceField' is already declared in this scope.
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Context: Previous declaration of 'instanceField'.
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter1 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter2 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:51:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:56:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:52:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:66:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:62:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
+// void set instanceFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+// int instanceFieldAndSetter1 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
+// void set instanceFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+// int instanceFieldAndSetter2 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
+// void set instanceMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:70:7: Error: Conflicts with setter 'instanceMethodAndSetter1'.
+// int instanceMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:75:12: Error: Conflicts with member 'instanceMethodAndSetter2'.
+// void set instanceMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:78:7: Error: Conflicts with setter 'instanceMethodAndSetter2'.
+// int instanceMethodAndSetter2() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+// c.instanceMethod();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+// (c.instanceMethod)();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+// c.instanceGetter;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+// c.instanceSetter = 0;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+// c.instanceField;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+// c.instanceField = 0;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+// c.instanceDuplicateFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+ method instanceMethod = self::Extension|instanceMethod;
+ tearoff instanceMethod = self::Extension|get#instanceMethod;
+ get instanceGetter = self::Extension|get#instanceGetter;
+ field instanceField = self::Extension|instanceField;
+ field instanceFieldAndSetter1 = self::Extension|instanceFieldAndSetter1;
+ field instanceFieldAndSetter2 = self::Extension|instanceFieldAndSetter2;
+ field instanceLateFinalFieldAndSetter1 = self::Extension|instanceLateFinalFieldAndSetter1;
+ field instanceLateFinalFieldAndSetter2 = self::Extension|instanceLateFinalFieldAndSetter2;
+ field instanceDuplicateFieldAndSetter = self::Extension|instanceDuplicateFieldAndSetter;
+ field instanceFieldAndDuplicateSetter = self::Extension|instanceFieldAndDuplicateSetter;
+ field instanceDuplicateFieldAndDuplicateSetter = self::Extension|instanceDuplicateFieldAndDuplicateSetter;
+ method instanceMethodAndSetter1 = self::Extension|instanceMethodAndSetter1;
+ tearoff instanceMethodAndSetter1 = self::Extension|get#instanceMethodAndSetter1;
+ method instanceMethodAndSetter2 = self::Extension|instanceMethodAndSetter2;
+ tearoff instanceMethodAndSetter2 = self::Extension|get#instanceMethodAndSetter2;
+ set instanceSetter = self::Extension|set#instanceSetter;
+ set instanceDuplicateFieldAndSetter = self::Extension|set#instanceDuplicateFieldAndSetter;
+ set instanceFieldAndDuplicateSetter = self::Extension|set#instanceFieldAndDuplicateSetter;
+ set instanceDuplicateFieldAndDuplicateSetter = self::Extension|set#instanceDuplicateFieldAndDuplicateSetter;
+ set instanceMethodAndSetter1 = self::Extension|set#instanceMethodAndSetter1;
+ set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|instanceField;
+static field core::int Extension|instanceFieldAndSetter1 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
+static final field core::int Extension|instanceDuplicateFieldAndSetter;
+static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethod(#this);
+static method Extension|get#instanceGetter(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+ self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter1(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter1(#this);
+static method Extension|set#instanceMethodAndSetter1(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+ core::int c = 0;
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+ c.instanceMethod();
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+ (c.instanceMethod)();
+ ^^^^^^^^^^^^^^".call();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+ c.instanceGetter;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+ c.instanceSetter = 0;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+ c.instanceField;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+ c.instanceField = 0;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+ c.instanceDuplicateFieldAndSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+ core::int c = 0;
+ self::result = null;
+ self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+ self::expect(3, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+ self::Extension|set#instanceMethodAndSetter1(c, 0);
+ self::expect(2, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+ self::Extension|set#instanceMethodAndSetter2(c, 0);
+ self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!expected.{core::Object::==}(actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+ try {
+ f.call();
+ }
+ on core::Object catch(final core::Object e) {
+ core::print(e);
+ return;
+ }
+ throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
@@ -0,0 +1,432 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+// int instanceMethod() => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+// int instanceMethod() => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+// int get instanceGetter => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+// int get instanceGetter => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: 'instanceField' is already declared in this scope.
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Context: Previous declaration of 'instanceField'.
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter1 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter2 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:51:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:56:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:52:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:66:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:62:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
+// void set instanceFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+// int instanceFieldAndSetter1 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
+// void set instanceFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+// int instanceFieldAndSetter2 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
+// void set instanceMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:70:7: Error: Conflicts with setter 'instanceMethodAndSetter1'.
+// int instanceMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:75:12: Error: Conflicts with member 'instanceMethodAndSetter2'.
+// void set instanceMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:78:7: Error: Conflicts with setter 'instanceMethodAndSetter2'.
+// int instanceMethodAndSetter2() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+// c.instanceMethod();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+// (c.instanceMethod)();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+// c.instanceGetter;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+// c.instanceSetter = 0;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+// c.instanceField;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+// c.instanceField = 0;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+// c.instanceDuplicateFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+ method instanceMethod = self::Extension|instanceMethod;
+ tearoff instanceMethod = self::Extension|get#instanceMethod;
+ get instanceGetter = self::Extension|get#instanceGetter;
+ field instanceField = self::Extension|instanceField;
+ field instanceFieldAndSetter1 = self::Extension|instanceFieldAndSetter1;
+ field instanceFieldAndSetter2 = self::Extension|instanceFieldAndSetter2;
+ field instanceLateFinalFieldAndSetter1 = self::Extension|instanceLateFinalFieldAndSetter1;
+ field instanceLateFinalFieldAndSetter2 = self::Extension|instanceLateFinalFieldAndSetter2;
+ field instanceDuplicateFieldAndSetter = self::Extension|instanceDuplicateFieldAndSetter;
+ field instanceFieldAndDuplicateSetter = self::Extension|instanceFieldAndDuplicateSetter;
+ field instanceDuplicateFieldAndDuplicateSetter = self::Extension|instanceDuplicateFieldAndDuplicateSetter;
+ method instanceMethodAndSetter1 = self::Extension|instanceMethodAndSetter1;
+ tearoff instanceMethodAndSetter1 = self::Extension|get#instanceMethodAndSetter1;
+ method instanceMethodAndSetter2 = self::Extension|instanceMethodAndSetter2;
+ tearoff instanceMethodAndSetter2 = self::Extension|get#instanceMethodAndSetter2;
+ set instanceSetter = self::Extension|set#instanceSetter;
+ set instanceDuplicateFieldAndSetter = self::Extension|set#instanceDuplicateFieldAndSetter;
+ set instanceFieldAndDuplicateSetter = self::Extension|set#instanceFieldAndDuplicateSetter;
+ set instanceDuplicateFieldAndDuplicateSetter = self::Extension|set#instanceDuplicateFieldAndDuplicateSetter;
+ set instanceMethodAndSetter1 = self::Extension|set#instanceMethodAndSetter1;
+ set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|instanceField;
+static field core::int Extension|instanceFieldAndSetter1 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
+static final field core::int Extension|instanceDuplicateFieldAndSetter;
+static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethod(#this);
+static method Extension|get#instanceGetter(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+ self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter1(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter1(#this);
+static method Extension|set#instanceMethodAndSetter1(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+ core::int c = 0;
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+ c.instanceMethod();
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+ (c.instanceMethod)();
+ ^^^^^^^^^^^^^^".call();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+ c.instanceGetter;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+ c.instanceSetter = 0;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+ c.instanceField;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+ c.instanceField = 0;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+ c.instanceDuplicateFieldAndSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+ core::int c = 0;
+ self::result = null;
+ self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+ self::expect(3, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+ self::Extension|set#instanceMethodAndSetter1(c, 0);
+ self::expect(2, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+ self::Extension|set#instanceMethodAndSetter2(c, 0);
+ self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!expected.{core::Object::==}(actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+ try {
+ f.call();
+ }
+ on core::Object catch(final core::Object e) {
+ core::print(e);
+ return;
+ }
+ throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
@@ -0,0 +1,432 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+// int instanceMethod() => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+// int instanceMethod() => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+// int get instanceGetter => 2;
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+// int get instanceGetter => 1;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+// void set instanceSetter(value) {
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: 'instanceField' is already declared in this scope.
+// int instanceField = 2;
+// ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Context: Previous declaration of 'instanceField'.
+// int instanceField = 1;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter1 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int instanceFieldAndSetter2 = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// late final int instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+// final int instanceDuplicateFieldAndSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:51:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:56:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:52:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int instanceDuplicateFieldAndDuplicateSetter = 2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// final int instanceDuplicateFieldAndDuplicateSetter = 1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:66:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:62:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+// void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
+// void set instanceFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+// int instanceFieldAndSetter1 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
+// void set instanceFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+// int instanceFieldAndSetter2 = 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+// void set instanceLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+// late final int instanceLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+// void set instanceLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+// late final int instanceLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
+// void set instanceMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:70:7: Error: Conflicts with setter 'instanceMethodAndSetter1'.
+// int instanceMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:75:12: Error: Conflicts with member 'instanceMethodAndSetter2'.
+// void set instanceMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:78:7: Error: Conflicts with setter 'instanceMethodAndSetter2'.
+// int instanceMethodAndSetter2() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+// c.instanceMethod();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+// (c.instanceMethod)();
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+// c.instanceGetter;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+// c.instanceSetter = 0;
+// ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+// c.instanceField;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+// c.instanceField = 0;
+// ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+// c.instanceFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+// c.instanceFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+// c.instanceLateFinalFieldAndSetter1 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+// c.instanceLateFinalFieldAndSetter2 = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+// c.instanceDuplicateFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+// c.instanceFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+// c.instanceDuplicateFieldAndDuplicateSetter = 0;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+ method instanceMethod = self::Extension|instanceMethod;
+ tearoff instanceMethod = self::Extension|get#instanceMethod;
+ get instanceGetter = self::Extension|get#instanceGetter;
+ field instanceField = self::Extension|instanceField;
+ field instanceFieldAndSetter1 = self::Extension|instanceFieldAndSetter1;
+ field instanceFieldAndSetter2 = self::Extension|instanceFieldAndSetter2;
+ field instanceLateFinalFieldAndSetter1 = self::Extension|instanceLateFinalFieldAndSetter1;
+ field instanceLateFinalFieldAndSetter2 = self::Extension|instanceLateFinalFieldAndSetter2;
+ field instanceDuplicateFieldAndSetter = self::Extension|instanceDuplicateFieldAndSetter;
+ field instanceFieldAndDuplicateSetter = self::Extension|instanceFieldAndDuplicateSetter;
+ field instanceDuplicateFieldAndDuplicateSetter = self::Extension|instanceDuplicateFieldAndDuplicateSetter;
+ method instanceMethodAndSetter1 = self::Extension|instanceMethodAndSetter1;
+ tearoff instanceMethodAndSetter1 = self::Extension|get#instanceMethodAndSetter1;
+ method instanceMethodAndSetter2 = self::Extension|instanceMethodAndSetter2;
+ tearoff instanceMethodAndSetter2 = self::Extension|get#instanceMethodAndSetter2;
+ set instanceSetter = self::Extension|set#instanceSetter;
+ set instanceDuplicateFieldAndSetter = self::Extension|set#instanceDuplicateFieldAndSetter;
+ set instanceFieldAndDuplicateSetter = self::Extension|set#instanceFieldAndDuplicateSetter;
+ set instanceDuplicateFieldAndDuplicateSetter = self::Extension|set#instanceDuplicateFieldAndDuplicateSetter;
+ set instanceMethodAndSetter1 = self::Extension|set#instanceMethodAndSetter1;
+ set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|instanceField;
+static field core::int Extension|instanceFieldAndSetter1 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
+static final field core::int Extension|instanceDuplicateFieldAndSetter;
+static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethod(#this);
+static method Extension|get#instanceGetter(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+ self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+ self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter1(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter1(#this);
+static method Extension|set#instanceMethodAndSetter1(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+ self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+ return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+ return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+ core::int c = 0;
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+ c.instanceMethod();
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:84:6: Error: The getter 'instanceMethod' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+ (c.instanceMethod)();
+ ^^^^^^^^^^^^^^".call();
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+ c.instanceGetter;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+ c.instanceSetter = 0;
+ ^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+ c.instanceField;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+ c.instanceField = 0;
+ ^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+ c.instanceFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+ c.instanceFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+ c.instanceLateFinalFieldAndSetter1 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+ c.instanceLateFinalFieldAndSetter2 = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+ c.instanceDuplicateFieldAndSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+ c.instanceFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+ c.instanceDuplicateFieldAndDuplicateSetter = 0;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+ core::int c = 0;
+ self::result = null;
+ self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+ self::expect(3, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+ self::Extension|set#instanceMethodAndSetter1(c, 0);
+ self::expect(2, self::result);
+ self::result = null;
+ self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+ self::Extension|set#instanceMethodAndSetter2(c, 0);
+ self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!expected.{core::Object::==}(actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+ try {
+ f.call();
+ }
+ on core::Object catch(final core::Object e) {
+ core::print(e);
+ return;
+ }
+ throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
index 777b4c0..315aac2 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,21 +74,21 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
-// static void set staticMethodAndSetter1(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
-// static int staticMethodAndSetter1() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
-// static void set staticMethodAndSetter2(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
-// static int staticMethodAndSetter2() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
//
// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
// static void set staticMethodAndSetter1(int value) {
@@ -124,14 +124,6 @@
;
static set staticSetter(dynamic value) → void
;
- static set staticFieldAndSetter1(core::int value) → void
- ;
- static set staticFieldAndSetter2(core::int value) → void
- ;
- static set staticLateFinalFieldAndSetter1(core::int value) → void
- ;
- static set staticLateFinalFieldAndSetter2(core::int value) → void
- ;
static set staticDuplicateFieldAndSetter(core::int value) → void
;
static set staticFieldAndDuplicateSetter(core::int value) → void
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,21 +74,21 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
-// static void set staticMethodAndSetter1(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
-// static int staticMethodAndSetter1() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
-// static void set staticMethodAndSetter2(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
-// static int staticMethodAndSetter2() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
//
// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
// static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
static set staticSetter(dynamic value) → void {
self::result = 1;
}
- static set staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
static set staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,21 +74,21 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
-// static void set staticMethodAndSetter1(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
-// static int staticMethodAndSetter1() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
-// static void set staticMethodAndSetter2(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
-// static int staticMethodAndSetter2() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
//
// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
// static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
static set staticSetter(dynamic value) → void {
self::result = 1;
}
- static set staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
static set staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,21 +74,21 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
-// static void set staticMethodAndSetter1(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
-// static int staticMethodAndSetter1() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
-// static void set staticMethodAndSetter2(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
-// static int staticMethodAndSetter2() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
//
// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
// static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
static set staticSetter(dynamic value) → void {
self::result = 1;
}
- static set staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
static set staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,21 +74,21 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
-// static void set staticMethodAndSetter1(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
-// static int staticMethodAndSetter1() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
-// static void set staticMethodAndSetter2(int value) {
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
-// static int staticMethodAndSetter2() => 1;
-// ^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
//
// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
// static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
static set staticSetter(dynamic value) → void {
self::result = 1;
}
- static set staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
- }
- static set staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
- }
static set staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
index a0d4145..55ff74c 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
@@ -116,8 +116,8 @@
result = null;
Extension.staticLateFinalFieldAndSetter2 = 0;
- expect(2, result);
- throws(() => Extension.staticLateFinalFieldAndSetter2);
+ expect(null, result);
+ expect(0, Extension.staticLateFinalFieldAndSetter2);
expect(1, Extension.staticMethodAndSetter1());
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
index 21ee0cd..b61b5c9 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
// static void set staticMethodAndSetter1(int value) {
// ^
@@ -107,10 +123,6 @@
static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
static set staticSetter = set self::Extension|staticSetter;
- static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
- static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
- static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
- static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
@@ -132,14 +144,6 @@
;
static set Extension|staticSetter(dynamic value) → void
;
-static set Extension|staticFieldAndSetter1(core::int value) → void
- ;
-static set Extension|staticFieldAndSetter2(core::int value) → void
- ;
-static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void
- ;
-static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void
- ;
static set Extension|staticDuplicateFieldAndSetter(core::int value) → void
;
static set Extension|staticFieldAndDuplicateSetter(core::int value) → void
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
index f3a7da5..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
// static void set staticMethodAndSetter1(int value) {
// ^
@@ -175,10 +191,6 @@
static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
static set staticSetter = set self::Extension|staticSetter;
- static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
- static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
- static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
- static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
@@ -201,18 +213,6 @@
static set Extension|staticSetter(dynamic value) → void {
self::result = 1;
}
-static set Extension|staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -289,8 +289,8 @@
self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
self::result = null;
self::Extension|staticLateFinalFieldAndSetter2 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+ self::expect(null, self::result);
+ self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
self::expect(1, self::Extension|staticMethodAndSetter1());
self::expect(1, self::Extension|staticMethodAndSetter2());
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
index f3a7da5..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
// static void set staticMethodAndSetter1(int value) {
// ^
@@ -175,10 +191,6 @@
static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
static set staticSetter = set self::Extension|staticSetter;
- static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
- static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
- static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
- static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
@@ -201,18 +213,6 @@
static set Extension|staticSetter(dynamic value) → void {
self::result = 1;
}
-static set Extension|staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -289,8 +289,8 @@
self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
self::result = null;
self::Extension|staticLateFinalFieldAndSetter2 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+ self::expect(null, self::result);
+ self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
self::expect(1, self::Extension|staticMethodAndSetter1());
self::expect(1, self::Extension|staticMethodAndSetter2());
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
index f3a7da5..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
// static void set staticMethodAndSetter1(int value) {
// ^
@@ -175,10 +191,6 @@
static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
static set staticSetter = set self::Extension|staticSetter;
- static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
- static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
- static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
- static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
@@ -201,18 +213,6 @@
static set Extension|staticSetter(dynamic value) → void {
self::result = 1;
}
-static set Extension|staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -289,8 +289,8 @@
self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
self::result = null;
self::Extension|staticLateFinalFieldAndSetter2 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+ self::expect(null, self::result);
+ self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
self::expect(1, self::Extension|staticMethodAndSetter1());
self::expect(1, self::Extension|staticMethodAndSetter2());
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
index f3a7da5..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
@@ -58,7 +58,7 @@
// static void set staticDuplicateFieldAndDuplicateSetter(int value) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
// static void set staticFieldAndSetter1(int value) {
// ^
//
@@ -66,7 +66,7 @@
// static int staticFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
// static void set staticFieldAndSetter2(int value) {
// ^
//
@@ -74,6 +74,22 @@
// static int staticFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+// static void set staticLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+// static late final int staticLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+// static void set staticLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+// static late final int staticLateFinalFieldAndSetter2;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
// static void set staticMethodAndSetter1(int value) {
// ^
@@ -175,10 +191,6 @@
static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
static set staticSetter = set self::Extension|staticSetter;
- static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
- static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
- static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
- static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
@@ -201,18 +213,6 @@
static set Extension|staticSetter(dynamic value) → void {
self::result = 1;
}
-static set Extension|staticFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -289,8 +289,8 @@
self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
self::result = null;
self::Extension|staticLateFinalFieldAndSetter2 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+ self::expect(null, self::result);
+ self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
self::expect(1, self::Extension|staticMethodAndSetter1());
self::expect(1, self::Extension|staticMethodAndSetter2());
}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
index f66cc15..bcd891f 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
@@ -109,8 +109,8 @@
result = null;
topLevelLateFinalFieldAndSetter1 = 0;
- expect(2, result);
- throws(() => topLevelLateFinalFieldAndSetter1);
+ expect(null, result);
+ expect(0, topLevelLateFinalFieldAndSetter1);
result = null;
topLevelLateFinalFieldAndSetter2 = 0;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
index c394d09..bf1599b 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
@@ -64,7 +64,7 @@
//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
// void set topLevelFieldAndSetter1(int value) {
// ^
//
@@ -72,7 +72,7 @@
// int topLevelFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
// void set topLevelFieldAndSetter2(int value) {
// ^
//
@@ -80,6 +80,38 @@
// int topLevelFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+// ^
+//
import self as self;
import "dart:core" as core;
@@ -99,14 +131,6 @@
;
static set topLevelSetter(dynamic value) → void
;
-static set topLevelFieldAndSetter1(core::int value) → void
- ;
-static set topLevelFieldAndSetter2(core::int value) → void
- ;
-static set topLevelLateFinalFieldAndSetter1(core::int value) → void
- ;
-static set topLevelLateFinalFieldAndSetter2(core::int value) → void
- ;
static set topLevelDuplicateFieldAndSetter(core::int value) → void
;
static set topLevelFieldAndDuplicateSetter(core::int value) → void
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
@@ -64,7 +64,7 @@
//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
// void set topLevelFieldAndSetter1(int value) {
// ^
//
@@ -72,7 +72,7 @@
// int topLevelFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
// void set topLevelFieldAndSetter2(int value) {
// ^
//
@@ -80,6 +80,38 @@
// int topLevelFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
@@ -152,18 +184,6 @@
static set topLevelSetter(dynamic value) → void {
self::result = 1;
}
-static set topLevelFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set topLevelDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -236,8 +256,8 @@
self::expect(0, self::topLevelFieldAndSetter2);
self::result = null;
self::topLevelLateFinalFieldAndSetter1 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+ self::expect(null, self::result);
+ self::expect(0, self::topLevelLateFinalFieldAndSetter1);
self::result = null;
self::topLevelLateFinalFieldAndSetter2 = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
@@ -64,7 +64,7 @@
//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
// void set topLevelFieldAndSetter1(int value) {
// ^
//
@@ -72,7 +72,7 @@
// int topLevelFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
// void set topLevelFieldAndSetter2(int value) {
// ^
//
@@ -80,6 +80,38 @@
// int topLevelFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
@@ -152,18 +184,6 @@
static set topLevelSetter(dynamic value) → void {
self::result = 1;
}
-static set topLevelFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set topLevelDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -236,8 +256,8 @@
self::expect(0, self::topLevelFieldAndSetter2);
self::result = null;
self::topLevelLateFinalFieldAndSetter1 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+ self::expect(null, self::result);
+ self::expect(0, self::topLevelLateFinalFieldAndSetter1);
self::result = null;
self::topLevelLateFinalFieldAndSetter2 = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
@@ -64,7 +64,7 @@
//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
// void set topLevelFieldAndSetter1(int value) {
// ^
//
@@ -72,7 +72,7 @@
// int topLevelFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
// void set topLevelFieldAndSetter2(int value) {
// ^
//
@@ -80,6 +80,38 @@
// int topLevelFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
@@ -152,18 +184,6 @@
static set topLevelSetter(dynamic value) → void {
self::result = 1;
}
-static set topLevelFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set topLevelDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -236,8 +256,8 @@
self::expect(0, self::topLevelFieldAndSetter2);
self::result = null;
self::topLevelLateFinalFieldAndSetter1 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+ self::expect(null, self::result);
+ self::expect(0, self::topLevelLateFinalFieldAndSetter1);
self::result = null;
self::topLevelLateFinalFieldAndSetter2 = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
@@ -64,7 +64,7 @@
//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
// void set topLevelFieldAndSetter1(int value) {
// ^
//
@@ -72,7 +72,7 @@
// int topLevelFieldAndSetter1 = 1;
// ^
//
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
// void set topLevelFieldAndSetter2(int value) {
// ^
//
@@ -80,6 +80,38 @@
// int topLevelFieldAndSetter2 = 1;
// ^
//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+// ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+// ^
+//
// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
// topLevelMethod();
// ^
@@ -152,18 +184,6 @@
static set topLevelSetter(dynamic value) → void {
self::result = 1;
}
-static set topLevelFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
- self::result = 2;
-}
-static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
- self::result = 2;
-}
static set topLevelDuplicateFieldAndSetter(core::int value) → void {
self::result = 3;
}
@@ -236,8 +256,8 @@
self::expect(0, self::topLevelFieldAndSetter2);
self::result = null;
self::topLevelLateFinalFieldAndSetter1 = 0;
- self::expect(2, self::result);
- self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+ self::expect(null, self::result);
+ self::expect(0, self::topLevelLateFinalFieldAndSetter1);
self::result = null;
self::topLevelLateFinalFieldAndSetter2 = 0;
self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart
new file mode 100644
index 0000000..6d6890d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart
@@ -0,0 +1,10 @@
+// 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.
+
+part 'field_setter_conflict_part.dart';
+
+void set topLevelFieldInPartSetterInMain(int? value) {}
+int? topLevelFieldInMainSetterInPart;
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.outline.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.outline.expect
new file mode 100644
index 0000000..43a81be
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.outline.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.transformed.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline.expect
new file mode 100644
index 0000000..c56d4f4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+part 'field_setter_conflict_part.dart';
+
+void set topLevelFieldInPartSetterInMain(int? value) {}
+int? topLevelFieldInMainSetterInPart;
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..fdf5fdf
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+part 'field_setter_conflict_part.dart';
+
+int? topLevelFieldInMainSetterInPart;
+main() {}
+void set topLevelFieldInPartSetterInMain(int? value) {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.transformed.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart b/pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart
new file mode 100644
index 0000000..a02614f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart
@@ -0,0 +1,40 @@
+// 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.
+
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+
+part of 'field_setter_conflict.dart';
+
+int? topLevelFieldInPartSetterInMain;
+void set topLevelFieldInMainSetterInPart(int? value) {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart b/pkg/front_end/testcases/nnbd/field_vs_setter.dart
index c310b47..17d64ba 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart
@@ -5,80 +5,170 @@
int? topLevelFieldAndSetter;
void set topLevelFieldAndSetter(int? value) {}
+int? topLevelFieldAndDuplicateSetter;
+void set topLevelFieldAndDuplicateSetter(int? value) {}
+void set topLevelFieldAndDuplicateSetter(int? value) {}
+
late final int? topLevelLateFinalFieldAndSetter;
void set topLevelLateFinalFieldAndSetter(int? value) {}
+late final int? topLevelLateFinalFieldAndDuplicateSetter;
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+
class Class {
int? instanceFieldAndSetter;
void set instanceFieldAndSetter(int? value) {}
+ int? instanceFieldAndDuplicateSetter;
+ void set instanceFieldAndDuplicateSetter(int? value) {}
+ void set instanceFieldAndDuplicateSetter(int? value) {}
+
late final int? instanceLateFinalFieldAndSetter;
void set instanceLateFinalFieldAndSetter(int? value) {}
+ late final int? instanceLateFinalFieldAndDuplicateSetter;
+ void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+ void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+
static int? staticFieldAndSetter;
static void set staticFieldAndSetter(int? value) {}
+ static int? staticFieldAndDuplicateSetter;
+ static void set staticFieldAndDuplicateSetter(int? value) {}
+ static void set staticFieldAndDuplicateSetter(int? value) {}
+
static late final int? staticLateFinalFieldAndSetter;
static void set staticLateFinalFieldAndSetter(int? value) {}
+ static late final int? staticLateFinalFieldAndDuplicateSetter;
+ static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+ static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+
static int? staticFieldAndInstanceSetter;
void set staticFieldAndInstanceSetter(int? value) {}
+ static int? staticFieldAndInstanceDuplicateSetter;
+ void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+ void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+
int? instanceFieldAndStaticSetter;
static void set instanceFieldAndStaticSetter(int? value) {}
+
+ int? instanceFieldAndStaticDuplicateSetter;
+ static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+ static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
}
extension Extension on int? {
int? extensionInstanceFieldAndSetter;
void set extensionInstanceFieldAndSetter(int? value) {}
+ int? extensionInstanceFieldAndDuplicateSetter;
+ void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+ void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+
static int? extensionStaticFieldAndSetter;
static void set extensionStaticFieldAndSetter(int? value) {}
+ static int? extensionStaticFieldAndDuplicateSetter;
+ static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+ static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+
static late final int? extensionStaticLateFinalFieldAndSetter;
- static void set extensionStaticFieldAndSetter(int? value) {}
+ static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+
+ static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+ static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+ static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
static int? extensionStaticFieldAndInstanceSetter;
void set extensionStaticFieldAndInstanceSetter(int? value) {}
+ static int? extensionStaticFieldAndInstanceDuplicateSetter;
+ void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+ void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+
int? extensionInstanceFieldAndStaticSetter;
static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+
+ int? extensionInstanceFieldAndStaticDuplicateSetter;
+ static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+ static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
}
test() {
topLevelFieldAndSetter = topLevelFieldAndSetter;
+ topLevelFieldAndDuplicateSetter = topLevelFieldAndDuplicateSetter;
topLevelLateFinalFieldAndSetter = topLevelLateFinalFieldAndSetter;
+ topLevelLateFinalFieldAndDuplicateSetter =
+ topLevelLateFinalFieldAndDuplicateSetter;
var c = new Class();
c.instanceFieldAndSetter = c.instanceFieldAndSetter;
+ c.instanceFieldAndDuplicateSetter = c.instanceFieldAndDuplicateSetter;
c.instanceLateFinalFieldAndSetter = c.instanceLateFinalFieldAndSetter;
+ c.instanceLateFinalFieldAndDuplicateSetter =
+ c.instanceLateFinalFieldAndDuplicateSetter;
Class.staticFieldAndSetter = Class.staticFieldAndSetter;
+ Class.staticFieldAndDuplicateSetter = Class.staticFieldAndDuplicateSetter;
Class.staticLateFinalFieldAndSetter = Class.staticLateFinalFieldAndSetter;
+ Class.staticLateFinalFieldAndDuplicateSetter =
+ Class.staticLateFinalFieldAndDuplicateSetter;
c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
Class.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
+ c.staticFieldAndInstanceDuplicateSetter =
+ Class.staticFieldAndInstanceDuplicateSetter;
+ Class.staticFieldAndInstanceDuplicateSetter =
+ Class.staticFieldAndInstanceDuplicateSetter;
+
Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+ Class.instanceFieldAndStaticDuplicateSetter =
+ c.instanceFieldAndStaticDuplicateSetter;
+ c.instanceFieldAndStaticDuplicateSetter =
+ c.instanceFieldAndStaticDuplicateSetter;
+
0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+ 0.extensionInstanceFieldAndDuplicateSetter =
+ 0.extensionInstanceFieldAndDuplicateSetter;
Extension.extensionStaticFieldAndSetter =
Extension.extensionStaticFieldAndSetter;
+
+ Extension.extensionStaticFieldAndDuplicateSetter =
+ Extension.extensionStaticFieldAndDuplicateSetter;
+
Extension.extensionStaticLateFinalFieldAndSetter =
Extension.extensionStaticLateFinalFieldAndSetter;
+ Extension.extensionStaticLateFinalFieldAndDuplicateSetter =
+ Extension.extensionStaticLateFinalFieldAndDuplicateSetter;
+
0.extensionStaticFieldAndInstanceSetter =
Extension.extensionStaticFieldAndInstanceSetter;
Extension.extensionStaticFieldAndInstanceSetter =
Extension.extensionStaticFieldAndInstanceSetter;
+ 0.extensionStaticFieldAndInstanceDuplicateSetter =
+ Extension.extensionStaticFieldAndInstanceDuplicateSetter;
+ Extension.extensionStaticFieldAndInstanceDuplicateSetter =
+ Extension.extensionStaticFieldAndInstanceDuplicateSetter;
+
Extension.extensionInstanceFieldAndStaticSetter =
0.extensionInstanceFieldAndStaticSetter;
0.extensionInstanceFieldAndStaticSetter =
0.extensionInstanceFieldAndStaticSetter;
+
+ Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+ 0.extensionInstanceFieldAndStaticDuplicateSetter;
+ 0.extensionInstanceFieldAndStaticDuplicateSetter =
+ 0.extensionInstanceFieldAndStaticDuplicateSetter;
}
main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
index b5f626d..3731cb56 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
@@ -2,88 +2,122 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
-// void set instanceFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
-// int? instanceFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
-// static void set staticFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
-// static int? staticFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
-// void set staticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
-// static int? staticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
-// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
-// int? instanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
-// void set extensionInstanceFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
-// int? extensionInstanceFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
-// static int? extensionStaticFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
-// void set extensionStaticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
-// static int? extensionStaticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
-// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
-// int? extensionInstanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
// void set topLevelFieldAndSetter(int? value) {}
// ^
//
@@ -91,75 +125,304 @@
// int? topLevelFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
-// static int? staticFieldAndInstanceSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
-// void set staticFieldAndInstanceSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+// void set instanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+// int? instanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+// int? instanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+// void set instanceLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+// late final int? instanceLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+// late final int? instanceLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+// static void set staticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+// static int? staticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+// static int? staticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+// static void set staticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+// static late final int? staticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+// static late final int? staticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
+// void set staticFieldAndInstanceSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+// static int? staticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+// static int? staticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
// int? instanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+// int? instanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+// void set extensionInstanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+// int? extensionInstanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+// static void set extensionStaticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+// static int? extensionStaticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+// static int? extensionStaticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+// static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+// static late final int? extensionStaticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+// void set extensionStaticFieldAndInstanceSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+// static int? extensionStaticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// static int? extensionStaticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+// int? extensionInstanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
//
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field core::int? instanceFieldAndSetter;
+ field core::int? instanceFieldAndDuplicateSetter;
late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+ late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndSetter;
+ static field core::int? staticFieldAndDuplicateSetter;
late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+ late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndInstanceSetter;
+ static field core::int? staticFieldAndInstanceDuplicateSetter;
field core::int? instanceFieldAndStaticSetter;
+ field core::int? instanceFieldAndStaticDuplicateSetter;
synthetic constructor •() → self::Class
;
- set instanceFieldAndSetter(core::int? value) → void
- ;
- set instanceLateFinalFieldAndSetter(core::int? value) → void
- ;
- static set staticFieldAndSetter(core::int? value) → void
- ;
- static set staticLateFinalFieldAndSetter(core::int? value) → void
- ;
- set staticFieldAndInstanceSetter(core::int? value) → void
- ;
- static set instanceFieldAndStaticSetter(core::int? value) → void
- ;
}
extension Extension on core::int? {
field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+ field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+ static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+ static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
- set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
- static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
- set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
- static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+ field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
}
static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
-static set topLevelFieldAndSetter(core::int? value) → void
- ;
-static set topLevelLateFinalFieldAndSetter(core::int? value) → void
- ;
-static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void
- ;
-static set Extension|extensionStaticFieldAndSetter(core::int? value) → void
- ;
-static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void
- ;
-static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void
- ;
+static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}" /*isLegacy, from null */;
static method test() → dynamic
;
static method main() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
index 3ac89ba..f523434 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
@@ -2,88 +2,122 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
-// void set instanceFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
-// int? instanceFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
-// static void set staticFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
-// static int? staticFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
-// void set staticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
-// static int? staticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
-// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
-// int? instanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
-// void set extensionInstanceFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
-// int? extensionInstanceFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
-// static int? extensionStaticFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
-// void set extensionStaticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
-// static int? extensionStaticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
-// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
-// int? extensionInstanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
// void set topLevelFieldAndSetter(int? value) {}
// ^
//
@@ -91,121 +125,464 @@
// int? topLevelFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
-// static int? staticFieldAndInstanceSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+// void set instanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+// int? instanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+// int? instanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+// void set instanceLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+// late final int? instanceLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+// late final int? instanceLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+// static void set staticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+// static int? staticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+// static int? staticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+// static void set staticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+// static late final int? staticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+// static late final int? staticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
// void set staticFieldAndInstanceSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+// static int? staticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+// static int? staticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
-// int? instanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+// int? instanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+// int? instanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+// void set extensionInstanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+// int? extensionInstanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+// static void set extensionStaticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+// static int? extensionStaticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+// static int? extensionStaticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+// static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+// static late final int? extensionStaticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+// void set extensionStaticFieldAndInstanceSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+// static int? extensionStaticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// static int? extensionStaticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+// int? extensionInstanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+// Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:9: Error: Can't use 'instanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+// Extension.extensionInstanceFieldAndStaticSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:13: Error: Can't use 'extensionInstanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
-// c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+// c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+// c.staticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
+// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:139:9: Error: The getter 'extensionInstanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+// 0.extensionStaticFieldAndInstanceSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// 0.extensionStaticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:166:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
-// 0.extensionInstanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter =
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:171:9: Error: The getter 'extensionInstanceFieldAndStaticDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field core::int? instanceFieldAndSetter = null;
+ field core::int? instanceFieldAndDuplicateSetter = null;
late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+ late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndSetter = null;
+ static field core::int? staticFieldAndDuplicateSetter = null;
late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+ late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndInstanceSetter = null;
+ static field core::int? staticFieldAndInstanceDuplicateSetter = null;
field core::int? instanceFieldAndStaticSetter = null;
+ field core::int? instanceFieldAndStaticDuplicateSetter = null;
synthetic constructor •() → self::Class
: super core::Object::•()
;
- set instanceFieldAndSetter(core::int? value) → void {}
- set instanceLateFinalFieldAndSetter(core::int? value) → void {}
- static set staticFieldAndSetter(core::int? value) → void {}
- static set staticLateFinalFieldAndSetter(core::int? value) → void {}
- set staticFieldAndInstanceSetter(core::int? value) → void {}
- static set instanceFieldAndStaticSetter(core::int? value) → void {}
}
extension Extension on core::int? {
field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+ field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+ static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+ static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
- set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
- static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
- set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
- static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+ field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
}
static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
-static set topLevelFieldAndSetter(core::int? value) → void {}
-static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
static method test() → dynamic {
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+ self::topLevelFieldAndDuplicateSetter = self::topLevelFieldAndDuplicateSetter;
self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+ self::topLevelLateFinalFieldAndDuplicateSetter = self::topLevelLateFinalFieldAndDuplicateSetter;
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+ c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+ c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+ self::Class::staticFieldAndDuplicateSetter = self::Class::staticFieldAndDuplicateSetter;
self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
- c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
- self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
- self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ self::Class::staticLateFinalFieldAndDuplicateSetter = self::Class::staticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
- c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+ c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+ self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+ c.staticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Class::staticFieldAndInstanceDuplicateSetter = self::Class::staticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+ Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+ Class.instanceFieldAndStaticDuplicateSetter =
+ ^";
+ c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?);
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+ 0.extensionInstanceFieldAndDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ self::Extension|extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
- self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+ self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+ 0.extensionStaticFieldAndInstanceSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
- self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
- 0.extensionInstanceFieldAndStaticSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+ 0.extensionStaticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Extension|extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+ Extension.extensionInstanceFieldAndStaticSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
0.extensionInstanceFieldAndStaticSetter =
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+ Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+ 0.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
index 92d9d15..f523434 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
@@ -2,88 +2,122 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
-// void set instanceFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
-// int? instanceFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
-// static void set staticFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
-// static int? staticFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
-// void set staticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
-// static int? staticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
-// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
-// int? instanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
-// void set extensionInstanceFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
-// int? extensionInstanceFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
-// static int? extensionStaticFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
-// void set extensionStaticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
-// static int? extensionStaticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
-// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
-// int? extensionInstanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
// void set topLevelFieldAndSetter(int? value) {}
// ^
//
@@ -91,121 +125,464 @@
// int? topLevelFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
-// static int? staticFieldAndInstanceSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+// void set instanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+// int? instanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+// int? instanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+// void set instanceLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+// late final int? instanceLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+// late final int? instanceLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+// static void set staticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+// static int? staticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+// static int? staticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+// static void set staticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+// static late final int? staticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+// static late final int? staticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
// void set staticFieldAndInstanceSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+// static int? staticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+// static int? staticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
-// int? instanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+// int? instanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+// int? instanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+// void set extensionInstanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+// int? extensionInstanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+// static void set extensionStaticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+// static int? extensionStaticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+// static int? extensionStaticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+// static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+// static late final int? extensionStaticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+// void set extensionStaticFieldAndInstanceSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+// static int? extensionStaticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// static int? extensionStaticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+// int? extensionInstanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+// Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:9: Error: Can't use 'instanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+// Extension.extensionInstanceFieldAndStaticSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:13: Error: Can't use 'extensionInstanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
-// c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+// c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+// c.staticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
+// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:139:9: Error: The getter 'extensionInstanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+// 0.extensionStaticFieldAndInstanceSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// 0.extensionStaticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:166:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
-// 0.extensionInstanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter =
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:171:9: Error: The getter 'extensionInstanceFieldAndStaticDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field core::int? instanceFieldAndSetter = null;
+ field core::int? instanceFieldAndDuplicateSetter = null;
late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+ late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndSetter = null;
+ static field core::int? staticFieldAndDuplicateSetter = null;
late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+ late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndInstanceSetter = null;
+ static field core::int? staticFieldAndInstanceDuplicateSetter = null;
field core::int? instanceFieldAndStaticSetter = null;
+ field core::int? instanceFieldAndStaticDuplicateSetter = null;
synthetic constructor •() → self::Class
: super core::Object::•()
;
- set instanceFieldAndSetter(core::int? value) → void {}
- set instanceLateFinalFieldAndSetter(core::int? value) → void {}
- static set staticFieldAndSetter(core::int? value) → void {}
- static set staticLateFinalFieldAndSetter(core::int? value) → void {}
- set staticFieldAndInstanceSetter(core::int? value) → void {}
- static set instanceFieldAndStaticSetter(core::int? value) → void {}
}
extension Extension on core::int? {
field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+ field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+ static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+ static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
- set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
- static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
- set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
- static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+ field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
}
static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
-static set topLevelFieldAndSetter(core::int? value) → void {}
-static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
static method test() → dynamic {
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+ self::topLevelFieldAndDuplicateSetter = self::topLevelFieldAndDuplicateSetter;
self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+ self::topLevelLateFinalFieldAndDuplicateSetter = self::topLevelLateFinalFieldAndDuplicateSetter;
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+ c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+ c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+ self::Class::staticFieldAndDuplicateSetter = self::Class::staticFieldAndDuplicateSetter;
self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
- c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
- self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
- self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ self::Class::staticLateFinalFieldAndDuplicateSetter = self::Class::staticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
- c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+ c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+ self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+ c.staticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Class::staticFieldAndInstanceDuplicateSetter = self::Class::staticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+ Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+ Class.instanceFieldAndStaticDuplicateSetter =
+ ^";
+ c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+ 0.extensionInstanceFieldAndDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ self::Extension|extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
- self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+ self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+ 0.extensionStaticFieldAndInstanceSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
- self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
- 0.extensionInstanceFieldAndStaticSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+ 0.extensionStaticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Extension|extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+ Extension.extensionInstanceFieldAndStaticSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
0.extensionInstanceFieldAndStaticSetter =
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+ Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+ 0.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
index 9be3ed0..72d8b77 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
@@ -1,36 +1,79 @@
int? topLevelFieldAndSetter;
void set topLevelFieldAndSetter(int? value) {}
+int? topLevelFieldAndDuplicateSetter;
+void set topLevelFieldAndDuplicateSetter(int? value) {}
+void set topLevelFieldAndDuplicateSetter(int? value) {}
late
final int? topLevelLateFinalFieldAndSetter;
void set topLevelLateFinalFieldAndSetter(int? value) {}
+late
+final int? topLevelLateFinalFieldAndDuplicateSetter;
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
class Class {
int? instanceFieldAndSetter;
void set instanceFieldAndSetter(int? value) {}
+ int? instanceFieldAndDuplicateSetter;
+ void set instanceFieldAndDuplicateSetter(int? value) {}
+ void set instanceFieldAndDuplicateSetter(int? value) {}
late
final int? instanceLateFinalFieldAndSetter;
void set instanceLateFinalFieldAndSetter(int? value) {}
+ late
+ final int? instanceLateFinalFieldAndDuplicateSetter;
+ void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+ void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
static int? staticFieldAndSetter;
static void set staticFieldAndSetter(int? value) {}
+ static int? staticFieldAndDuplicateSetter;
+ static void set staticFieldAndDuplicateSetter(int? value) {}
+ static void set staticFieldAndDuplicateSetter(int? value) {}
static late ;
final int? staticLateFinalFieldAndSetter;
static void set staticLateFinalFieldAndSetter(int? value) {}
+ static late ;
+ final int? staticLateFinalFieldAndDuplicateSetter;
+ static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+ static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
static int? staticFieldAndInstanceSetter;
void set staticFieldAndInstanceSetter(int? value) {}
+ static int? staticFieldAndInstanceDuplicateSetter;
+ void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+ void set staticFieldAndInstanceDuplicateSetter(int? value) {}
int? instanceFieldAndStaticSetter;
static void set instanceFieldAndStaticSetter(int? value) {}
+ int? instanceFieldAndStaticDuplicateSetter;
+ static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+ static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
}
extension Extension on int? {
int? extensionInstanceFieldAndSetter;
void set extensionInstanceFieldAndSetter(int? value) {}
+ int? extensionInstanceFieldAndDuplicateSetter;
+ void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+ void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
static int? extensionStaticFieldAndSetter;
static void set extensionStaticFieldAndSetter(int? value) {}
+ static int? extensionStaticFieldAndDuplicateSetter;
+ static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+ static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
static late ;
final int? extensionStaticLateFinalFieldAndSetter;
- static void set extensionStaticFieldAndSetter(int? value) {}
+ static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+ static late ;
+ final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+ static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+ static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
static int? extensionStaticFieldAndInstanceSetter;
void set extensionStaticFieldAndInstanceSetter(int? value) {}
+ static int? extensionStaticFieldAndInstanceDuplicateSetter;
+ void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+ void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
int? extensionInstanceFieldAndStaticSetter;
static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+ int? extensionInstanceFieldAndStaticDuplicateSetter;
+ static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+ static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
}
test() {}
main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
index 3ac89ba..f523434 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
@@ -2,88 +2,122 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
-// void set instanceFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
-// int? instanceFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
-// static void set staticFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
-// static int? staticFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
-// void set staticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
-// static int? staticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
-// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
-// int? instanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
-// void set extensionInstanceFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
-// int? extensionInstanceFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
-// static int? extensionStaticFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
-// void set extensionStaticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
-// static int? extensionStaticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
-// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
-// int? extensionInstanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
// void set topLevelFieldAndSetter(int? value) {}
// ^
//
@@ -91,121 +125,464 @@
// int? topLevelFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
-// static int? staticFieldAndInstanceSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+// void set instanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+// int? instanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+// int? instanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+// void set instanceLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+// late final int? instanceLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+// late final int? instanceLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+// static void set staticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+// static int? staticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+// static int? staticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+// static void set staticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+// static late final int? staticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+// static late final int? staticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
// void set staticFieldAndInstanceSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+// static int? staticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+// static int? staticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
-// int? instanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+// int? instanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+// int? instanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+// void set extensionInstanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+// int? extensionInstanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+// static void set extensionStaticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+// static int? extensionStaticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+// static int? extensionStaticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+// static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+// static late final int? extensionStaticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+// void set extensionStaticFieldAndInstanceSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+// static int? extensionStaticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// static int? extensionStaticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+// int? extensionInstanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+// Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:9: Error: Can't use 'instanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+// Extension.extensionInstanceFieldAndStaticSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:13: Error: Can't use 'extensionInstanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
-// c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+// c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+// c.staticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
+// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:139:9: Error: The getter 'extensionInstanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+// 0.extensionStaticFieldAndInstanceSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// 0.extensionStaticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:166:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
-// 0.extensionInstanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter =
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:171:9: Error: The getter 'extensionInstanceFieldAndStaticDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field core::int? instanceFieldAndSetter = null;
+ field core::int? instanceFieldAndDuplicateSetter = null;
late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+ late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndSetter = null;
+ static field core::int? staticFieldAndDuplicateSetter = null;
late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+ late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndInstanceSetter = null;
+ static field core::int? staticFieldAndInstanceDuplicateSetter = null;
field core::int? instanceFieldAndStaticSetter = null;
+ field core::int? instanceFieldAndStaticDuplicateSetter = null;
synthetic constructor •() → self::Class
: super core::Object::•()
;
- set instanceFieldAndSetter(core::int? value) → void {}
- set instanceLateFinalFieldAndSetter(core::int? value) → void {}
- static set staticFieldAndSetter(core::int? value) → void {}
- static set staticLateFinalFieldAndSetter(core::int? value) → void {}
- set staticFieldAndInstanceSetter(core::int? value) → void {}
- static set instanceFieldAndStaticSetter(core::int? value) → void {}
}
extension Extension on core::int? {
field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+ field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+ static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+ static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
- set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
- static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
- set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
- static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+ field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
}
static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
-static set topLevelFieldAndSetter(core::int? value) → void {}
-static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
static method test() → dynamic {
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+ self::topLevelFieldAndDuplicateSetter = self::topLevelFieldAndDuplicateSetter;
self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+ self::topLevelLateFinalFieldAndDuplicateSetter = self::topLevelLateFinalFieldAndDuplicateSetter;
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+ c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+ c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+ self::Class::staticFieldAndDuplicateSetter = self::Class::staticFieldAndDuplicateSetter;
self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
- c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
- self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
- self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ self::Class::staticLateFinalFieldAndDuplicateSetter = self::Class::staticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
- c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+ c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+ self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+ c.staticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Class::staticFieldAndInstanceDuplicateSetter = self::Class::staticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+ Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+ Class.instanceFieldAndStaticDuplicateSetter =
+ ^";
+ c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?);
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+ 0.extensionInstanceFieldAndDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ self::Extension|extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
- self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+ self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+ 0.extensionStaticFieldAndInstanceSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
- self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
- 0.extensionInstanceFieldAndStaticSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+ 0.extensionStaticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Extension|extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+ Extension.extensionInstanceFieldAndStaticSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
0.extensionInstanceFieldAndStaticSetter =
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+ Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+ 0.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
index 92d9d15..f523434 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
@@ -2,88 +2,122 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Extensions can't declare instance fields
// Try removing the field declaration or making it a static field
// int? extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
-// void set instanceFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
-// int? instanceFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
-// static void set staticFieldAndSetter(int? value) {}
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
-// static int? staticFieldAndSetter;
-// ^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
-// void set staticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
-// static int? staticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
-// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
-// int? instanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
-// void set extensionInstanceFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
-// int? extensionInstanceFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
-// static void set extensionStaticFieldAndSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
-// static int? extensionStaticFieldAndSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
-// void set extensionStaticFieldAndInstanceSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
-// static int? extensionStaticFieldAndInstanceSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
-// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
-// int? extensionInstanceFieldAndStaticSetter;
-// ^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
// void set topLevelFieldAndSetter(int? value) {}
// ^
//
@@ -91,121 +125,464 @@
// int? topLevelFieldAndSetter;
// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
-// static int? staticFieldAndInstanceSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+// void set instanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+// int? instanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+// int? instanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+// void set instanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+// void set instanceLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+// late final int? instanceLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+// late final int? instanceLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+// void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+// static void set staticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+// static int? staticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+// static int? staticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+// static void set staticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+// static void set staticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+// static late final int? staticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+// static late final int? staticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+// static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
// void set staticFieldAndInstanceSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+// static int? staticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+// static int? staticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+// void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
// static void set instanceFieldAndStaticSetter(int? value) {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
-// int? instanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// ^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+// int? instanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+// int? instanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+// static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+// void set extensionInstanceFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+// int? extensionInstanceFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+// int? extensionInstanceFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+// void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+// static void set extensionStaticFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+// static int? extensionStaticFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+// static int? extensionStaticFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+// static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+// static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+// static late final int? extensionStaticLateFinalFieldAndSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+// static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+// void set extensionStaticFieldAndInstanceSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+// static int? extensionStaticFieldAndInstanceSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// static int? extensionStaticFieldAndInstanceDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+// static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+// int? extensionInstanceFieldAndStaticSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// int? extensionInstanceFieldAndStaticDuplicateSetter;
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+// Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:9: Error: Can't use 'instanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+// Class.instanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+// Extension.extensionInstanceFieldAndStaticSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:13: Error: Can't use 'extensionInstanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+// Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
-// c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+// c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+// c.staticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
+// 0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:139:9: Error: The getter 'extensionInstanceFieldAndDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+// 0.extensionInstanceFieldAndDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+// 0.extensionStaticFieldAndInstanceSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+// 0.extensionStaticFieldAndInstanceDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:166:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
-// 0.extensionInstanceFieldAndStaticSetter;
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-//
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
// 0.extensionInstanceFieldAndStaticSetter =
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:171:9: Error: The getter 'extensionInstanceFieldAndStaticDuplicateSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter;
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+// 0.extensionInstanceFieldAndStaticDuplicateSetter =
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field core::int? instanceFieldAndSetter = null;
+ field core::int? instanceFieldAndDuplicateSetter = null;
late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+ late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndSetter = null;
+ static field core::int? staticFieldAndDuplicateSetter = null;
late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+ late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
static field core::int? staticFieldAndInstanceSetter = null;
+ static field core::int? staticFieldAndInstanceDuplicateSetter = null;
field core::int? instanceFieldAndStaticSetter = null;
+ field core::int? instanceFieldAndStaticDuplicateSetter = null;
synthetic constructor •() → self::Class
: super core::Object::•()
;
- set instanceFieldAndSetter(core::int? value) → void {}
- set instanceLateFinalFieldAndSetter(core::int? value) → void {}
- static set staticFieldAndSetter(core::int? value) → void {}
- static set staticLateFinalFieldAndSetter(core::int? value) → void {}
- set staticFieldAndInstanceSetter(core::int? value) → void {}
- static set instanceFieldAndStaticSetter(core::int? value) → void {}
}
extension Extension on core::int? {
field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+ field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+ static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+ static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
- set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
- static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
- set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
- static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+ field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
}
static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
-static set topLevelFieldAndSetter(core::int? value) → void {}
-static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
-static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
-static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
static method test() → dynamic {
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+ self::topLevelFieldAndDuplicateSetter = self::topLevelFieldAndDuplicateSetter;
self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+ self::topLevelLateFinalFieldAndDuplicateSetter = self::topLevelLateFinalFieldAndDuplicateSetter;
self::Class c = new self::Class::•();
c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+ c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+ c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+ self::Class::staticFieldAndDuplicateSetter = self::Class::staticFieldAndDuplicateSetter;
self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
- c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
- self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
- self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ self::Class::staticLateFinalFieldAndDuplicateSetter = self::Class::staticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' isn't defined for the class 'Class'.
- 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
-Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
- c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+ c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+ self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceDuplicateSetter'.
+ c.staticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Class::staticFieldAndInstanceDuplicateSetter = self::Class::staticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+ Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+ Class.instanceFieldAndStaticDuplicateSetter =
+ ^";
+ c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:137:5: Error: The setter 'extensionInstanceFieldAndSetter' 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 'extensionInstanceFieldAndSetter'.
0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+ 0.extensionInstanceFieldAndDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+ self::Extension|extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
- self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+ self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+ 0.extensionStaticFieldAndInstanceSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
- self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
- 0.extensionInstanceFieldAndStaticSetter;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
- invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+ 0.extensionStaticFieldAndInstanceDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ self::Extension|extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+ Extension.extensionInstanceFieldAndStaticSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:165:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' 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 'extensionInstanceFieldAndStaticSetter'.
0.extensionInstanceFieldAndStaticSetter =
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+ Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^";
+ invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+ 0.extensionInstanceFieldAndStaticDuplicateSetter =
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect
index cb7f98c..df32287 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect
@@ -16,14 +16,26 @@
//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
-// static void set staticMethodAndSetter(value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
-// static staticMethodAndSetter() {}
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
// ^
//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:5:1: Error: Conflicts with setter 'topLevelMethodAndSetter'.
+// topLevelMethodAndSetter() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:13:10: Error: Conflicts with member 'classAndSetter'.
+// void set classAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:11:7: Error: Conflicts with setter 'classAndSetter'.
+// class classAndSetter {}
+// ^
+//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
// void set extensionInstanceMethodAndSetter(value) {}
// ^
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
index 03ffb8f..d586281 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
@@ -16,14 +16,26 @@
//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
-// static void set staticMethodAndSetter(value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
-// static staticMethodAndSetter() {}
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
// ^
//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:5:1: Error: Conflicts with setter 'topLevelMethodAndSetter'.
+// topLevelMethodAndSetter() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:13:10: Error: Conflicts with member 'classAndSetter'.
+// void set classAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:11:7: Error: Conflicts with setter 'classAndSetter'.
+// class classAndSetter {}
+// ^
+//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
// void set extensionInstanceMethodAndSetter(value) {}
// ^
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
index 03ffb8f..d586281 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
@@ -16,14 +16,26 @@
//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
-// static void set staticMethodAndSetter(value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
-// static staticMethodAndSetter() {}
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
// ^
//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:5:1: Error: Conflicts with setter 'topLevelMethodAndSetter'.
+// topLevelMethodAndSetter() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:13:10: Error: Conflicts with member 'classAndSetter'.
+// void set classAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:11:7: Error: Conflicts with setter 'classAndSetter'.
+// class classAndSetter {}
+// ^
+//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
// void set extensionInstanceMethodAndSetter(value) {}
// ^
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
index 03ffb8f..d586281 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
@@ -16,14 +16,26 @@
//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
-// static void set staticMethodAndSetter(value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
-// static staticMethodAndSetter() {}
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
// ^
//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:5:1: Error: Conflicts with setter 'topLevelMethodAndSetter'.
+// topLevelMethodAndSetter() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:13:10: Error: Conflicts with member 'classAndSetter'.
+// void set classAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:11:7: Error: Conflicts with setter 'classAndSetter'.
+// class classAndSetter {}
+// ^
+//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
// void set extensionInstanceMethodAndSetter(value) {}
// ^
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
index 03ffb8f..d586281 100644
--- a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
@@ -16,14 +16,26 @@
//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
-// static void set staticMethodAndSetter(value) {}
-// ^
-//
-// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
-// static staticMethodAndSetter() {}
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
// ^
//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:5:1: Error: Conflicts with setter 'topLevelMethodAndSetter'.
+// topLevelMethodAndSetter() {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:13:10: Error: Conflicts with member 'classAndSetter'.
+// void set classAndSetter(value) {}
+// ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:11:7: Error: Conflicts with setter 'classAndSetter'.
+// class classAndSetter {}
+// ^
+//
// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
// void set extensionInstanceMethodAndSetter(value) {}
// ^
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index c7f9575..06c1780 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -174,7 +174,6 @@
inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
late_lowering/covariant_late_field: TypeCheckError
nnbd/covariant_late_field: TypeCheckError
-nnbd/duplicates_instance_extension: VerificationError
nnbd/getter_vs_setter_type: TypeCheckError
nnbd/issue42546: TypeCheckError
nnbd/issue42603: TypeCheckError
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index df116f8..401ebbc 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -171,7 +171,6 @@
inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
late_lowering/covariant_late_field: TypeCheckError
nnbd/covariant_late_field: TypeCheckError
-nnbd/duplicates_instance_extension: VerificationError
nnbd/getter_vs_setter_type: TypeCheckError
nnbd/issue42546: TypeCheckError
nnbd/issue42603: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index fa279da..a382980 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -57,7 +57,6 @@
general_nnbd_opt_out/void_methods: RuntimeError
late_lowering/covariant_late_field: TypeCheckError
nnbd/covariant_late_field: TypeCheckError
-nnbd/duplicates_instance_extension: VerificationError
nnbd/getter_vs_setter_type: TypeCheckError
nnbd/issue42546: TypeCheckError
nnbd/issue42603: TypeCheckError
diff --git a/pkg/test_runner/lib/src/compiler_configuration.dart b/pkg/test_runner/lib/src/compiler_configuration.dart
index 9ef37d0..502eaf3 100644
--- a/pkg/test_runner/lib/src/compiler_configuration.dart
+++ b/pkg/test_runner/lib/src/compiler_configuration.dart
@@ -100,6 +100,7 @@
case Compiler.dartk:
if (configuration.architecture == Architecture.simarm ||
configuration.architecture == Architecture.simarm64 ||
+ configuration.architecture == Architecture.simarm64c ||
configuration.system == System.android) {
return VMKernelCompilerConfiguration(configuration);
}
@@ -690,13 +691,19 @@
bool get _isSimArm => _configuration.architecture == Architecture.simarm;
- bool get _isSimArm64 => _configuration.architecture == Architecture.simarm64;
+ bool get _isSimArm64 =>
+ _configuration.architecture == Architecture.simarm64 ||
+ _configuration.architecture == Architecture.simarm64c;
bool get _isArmX64 => _configuration.architecture == Architecture.arm_x64;
- bool get _isArm64 => _configuration.architecture == Architecture.arm64;
+ bool get _isArm64 =>
+ _configuration.architecture == Architecture.arm64 ||
+ _configuration.architecture == Architecture.arm64c;
- bool get _isX64 => _configuration.architecture == Architecture.x64;
+ bool get _isX64 =>
+ _configuration.architecture == Architecture.x64 ||
+ _configuration.architecture == Architecture.x64c;
bool get _isIA32 => _configuration.architecture == Architecture.ia32;
@@ -864,14 +871,17 @@
String ccFlags;
switch (_configuration.architecture) {
case Architecture.x64:
+ case Architecture.x64c:
ccFlags = "-m64";
break;
case Architecture.simarm64:
+ case Architecture.simarm64c:
case Architecture.ia32:
case Architecture.simarm:
case Architecture.arm:
case Architecture.arm_x64:
case Architecture.arm64:
+ case Architecture.arm64c:
ccFlags = null;
break;
default:
diff --git a/pkg/test_runner/lib/src/runtime_configuration.dart b/pkg/test_runner/lib/src/runtime_configuration.dart
index 342810a..e8a4d82 100644
--- a/pkg/test_runner/lib/src/runtime_configuration.dart
+++ b/pkg/test_runner/lib/src/runtime_configuration.dart
@@ -244,9 +244,11 @@
case Architecture.arm:
case Architecture.arm_x64:
case Architecture.arm64:
+ case Architecture.arm64c:
case Architecture.simarmv6:
case Architecture.armv6:
case Architecture.simarm64:
+ case Architecture.simarm64c:
multiplier *= 4;
break;
}
diff --git a/pkg/test_runner/lib/src/test_suite.dart b/pkg/test_runner/lib/src/test_suite.dart
index 96f273a..c27f66b 100644
--- a/pkg/test_runner/lib/src/test_suite.dart
+++ b/pkg/test_runner/lib/src/test_suite.dart
@@ -309,7 +309,8 @@
hasRuntimeError: testExpectation == Expectation.runtimeError,
hasStaticWarning: false,
hasCrash: testExpectation == Expectation.crash);
- var filename = configuration.architecture == Architecture.x64
+ var filename = configuration.architecture == Architecture.x64 ||
+ configuration.architecture == Architecture.x64c
? '$buildDir/gen/kernel-service.dart.snapshot'
: '$buildDir/gen/kernel_service.dill';
var dfePath = Path(filename).absolute.toNativePath();
diff --git a/pkg/vm_service/tool/common/generate_common.dart b/pkg/vm_service/tool/common/generate_common.dart
index d91e730..345ea7d 100644
--- a/pkg/vm_service/tool/common/generate_common.dart
+++ b/pkg/vm_service/tool/common/generate_common.dart
@@ -4,9 +4,6 @@
library generate_vm_service_common;
-// TODO(bkonyi): remove once markdown and pub_semver deps are updated to null
-// safety for the SDK.
-// ignore_for_file: import_of_legacy_library_into_null_safe
import 'package:markdown/markdown.dart';
import 'package:pub_semver/pub_semver.dart';
@@ -23,7 +20,7 @@
// Extract version from header: `# Dart VM Service Protocol 2.0`.
Element node = nodes.firstWhere((n) => isH1(n)) as Element;
- Text text = node.children[0] as Text;
+ Text text = node.children![0] as Text;
Match? match = regex.firstMatch(text.text);
if (match == null) throw 'Unable to locate service protocol version';
diff --git a/pkg/vm_service/tool/common/src_gen_common.dart b/pkg/vm_service/tool/common/src_gen_common.dart
index 4fd8313..1962c61 100644
--- a/pkg/vm_service/tool/common/src_gen_common.dart
+++ b/pkg/vm_service/tool/common/src_gen_common.dart
@@ -4,9 +4,6 @@
library src_gen_common;
-// TODO(bkonyi): remove once markdown and pub_semver deps are updated to null
-// safety for the SDK.
-// ignore_for_file: import_of_legacy_library_into_null_safe
import 'package:markdown/markdown.dart';
const int RUNE_SPACE = 32;
@@ -27,9 +24,9 @@
bool isH3(Node node) => node is Element && node.tag == 'h3';
bool isHeader(Node node) => node is Element && node.tag.startsWith('h');
String textForElement(Node node) =>
- (((node as Element).children.first) as Text).text;
+ (((node as Element).children!.first) as Text).text;
String textForCode(Node node) =>
- textForElement((node as Element).children.first);
+ textForElement((node as Element).children!.first);
/// foo ==> Foo
String titleCase(String str) =>
diff --git a/pkg/vm_service/tool/dart/generate_dart.dart b/pkg/vm_service/tool/dart/generate_dart.dart
index 3f4f20c..f512f5a 100644
--- a/pkg/vm_service/tool/dart/generate_dart.dart
+++ b/pkg/vm_service/tool/dart/generate_dart.dart
@@ -4,9 +4,6 @@
library generate_vm_service_dart;
-// TODO(bkonyi): remove once markdown and pub_semver deps are updated to null
-// safety for the SDK.
-// ignore_for_file: import_of_legacy_library_into_null_safe
import 'package:markdown/markdown.dart';
import '../common/generate_common.dart';
@@ -497,7 +494,7 @@
return n.text;
} else if (n is Element) {
if (n.tag != 'h3') return n.tag;
- return '${n.tag}:[${n.children.map((c) => printNode(c)).join(', ')}]';
+ return '${n.tag}:[${n.children!.map((c) => printNode(c)).join(', ')}]';
} else {
return '${n}';
}
diff --git a/pkg/vm_service/tool/generate.dart b/pkg/vm_service/tool/generate.dart
index bea71f8..321b125 100644
--- a/pkg/vm_service/tool/generate.dart
+++ b/pkg/vm_service/tool/generate.dart
@@ -4,9 +4,6 @@
import 'dart:io';
-// TODO(bkonyi): remove once markdown and pub_semver deps are updated to null
-// safety for the SDK.
-// ignore_for_file: import_of_legacy_library_into_null_safe
import 'package:markdown/markdown.dart';
import 'package:path/path.dart';
import 'package:pub_semver/pub_semver.dart';
diff --git a/pkg/vm_service/tool/java/generate_java.dart b/pkg/vm_service/tool/java/generate_java.dart
index 3a3567a..e70b0a0 100644
--- a/pkg/vm_service/tool/java/generate_java.dart
+++ b/pkg/vm_service/tool/java/generate_java.dart
@@ -4,9 +4,6 @@
library generate_vm_service_java;
-// TODO(bkonyi): remove once markdown and pub_semver deps are updated to null
-// safety for the SDK.
-// ignore_for_file: import_of_legacy_library_into_null_safe
import 'package:markdown/markdown.dart';
import 'package:pub_semver/pub_semver.dart';
@@ -280,7 +277,7 @@
} else if (isHeader(node)) {
h3Name = null;
} else if (isPara(node)) {
- var children = (node as Element).children;
+ var children = (node as Element).children!;
if (children.isNotEmpty && children.first is Text) {
var text = children.expand<String>((child) {
if (child is Text) return [child.text];
@@ -356,7 +353,7 @@
return n.text;
} else if (n is Element) {
if (n.tag != 'h3') return n.tag;
- return '${n.tag}:[${n.children.map((c) => printNode(c)).join(', ')}]';
+ return '${n.tag}:[${n.children!.map((c) => printNode(c)).join(', ')}]';
} else {
return '${n}';
}
diff --git a/runtime/vm/compiler/jit/jit_call_specializer.cc b/runtime/vm/compiler/jit/jit_call_specializer.cc
index 814a0fc..40bf22e 100644
--- a/runtime/vm/compiler/jit/jit_call_specializer.cc
+++ b/runtime/vm/compiler/jit/jit_call_specializer.cc
@@ -188,20 +188,6 @@
}
}
if (!unboxed_field) {
- // TODO(http://dartbug.com/36097): Once we support optimized compiles with
- // --enable-isolate-groups we could deoptimize dependent code right here -
- // which involves stopping mutators.
- // We could also continue to bailout of the compilation and let any
- // mutator do the work in it's lazy compile slow path. The benefit of this
- // would be to avoid stopping mutator here.
- // The latter is better for single-isolate scenarios, we should measure
- // and then decide which approach to take.
- if (Compiler::IsBackgroundCompilation()) {
- isolate_group()->AddDeoptimizingBoxedField(field);
- Compiler::AbortBackgroundCompilation(
- DeoptId::kNone, "Unboxing instance field while compiling");
- UNREACHABLE();
- }
if (FLAG_trace_optimization || FLAG_trace_field_guards) {
THR_Print("Disabling unboxing of %s\n", field.ToCString());
if (!setter.IsNull()) {
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index fd10aaa..d77bbcf 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -5809,15 +5809,16 @@
"\n";
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+ EXPECT_VALID(lib);
Dart_Handle int_wrapper_type =
Dart_GetNonNullableType(lib, NewString("MyIntClass"), 0, NULL);
+ EXPECT_VALID(int_wrapper_type);
Dart_Handle args[1];
args[0] = Dart_EmptyString();
Dart_Handle result = Dart_New(int_wrapper_type, Dart_EmptyString(), 1, args);
- EXPECT_ERROR(result,
- "type 'String' is not a subtype of type 'int' of 'value'");
+ EXPECT_ERROR(result, "String' is not a subtype of type 'int' of 'value'");
Dart_Handle int_type = Dart_Invoke(lib, NewString("getIntType"), 0, args);
EXPECT_VALID(int_type);
@@ -5831,12 +5832,11 @@
// Generic generative constructor
args[0] = Dart_EmptyString();
result = Dart_New(my_class_type, Dart_EmptyString(), 1, args);
- EXPECT_ERROR(result,
- "type 'String' is not a subtype of type 'int' of 'value'");
+ EXPECT_ERROR(result, "String' is not a subtype of type 'int' of 'value'");
// Generic factory constructor
result = Dart_New(my_class_type, NewString("foo"), 1, args);
- EXPECT_ERROR(result, "type 'String' is not a subtype of type 'int' of 'x'");
+ EXPECT_ERROR(result, "String' is not a subtype of type 'int' of 'x'");
}
TEST_CASE(DartAPI_InvokeConstructor_Issue44205) {
@@ -5855,8 +5855,10 @@
"\n";
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+ EXPECT_VALID(lib);
Dart_Handle int_wrapper_type =
Dart_GetNonNullableType(lib, NewString("MyIntClass"), 0, NULL);
+ EXPECT_VALID(int_wrapper_type);
Dart_Handle args[1];
args[0] = Dart_EmptyString();
@@ -5864,8 +5866,7 @@
EXPECT_VALID(result);
result = Dart_InvokeConstructor(result, Dart_EmptyString(), 1, args);
- EXPECT_ERROR(result,
- "type 'String' is not a subtype of type 'int' of 'value'");
+ EXPECT_ERROR(result, "String' is not a subtype of type 'int' of 'value'");
Dart_Handle int_type = Dart_Invoke(lib, NewString("getIntType"), 0, args);
EXPECT_VALID(int_type);
@@ -5879,8 +5880,7 @@
result = Dart_Allocate(my_class_type);
EXPECT_VALID(result);
result = Dart_InvokeConstructor(result, Dart_EmptyString(), 1, args);
- EXPECT_ERROR(result,
- "type 'String' is not a subtype of type 'int' of 'value'");
+ EXPECT_ERROR(result, "String' is not a subtype of type 'int' of 'value'");
}
TEST_CASE(DartAPI_InvokeClosure_Issue44205) {
@@ -5904,6 +5904,7 @@
// Create a test library and Load up a test script in it.
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+ EXPECT_VALID(lib);
// Invoke a function which returns a closure.
Dart_Handle retobj = Dart_Invoke(lib, NewString("testMain1"), 0, NULL);
@@ -5913,7 +5914,7 @@
Dart_Handle dart_arguments[1];
dart_arguments[0] = Dart_EmptyString();
result = Dart_InvokeClosure(retobj, 1, dart_arguments);
- EXPECT_ERROR(result, "type 'String' is not a subtype of type 'int' of 'j'");
+ EXPECT_ERROR(result, "String' is not a subtype of type 'int' of 'j'");
}
TEST_CASE(DartAPI_New_Issue2971) {
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 91617a4..758d6de 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -3101,34 +3101,6 @@
}
#endif // !defined(PRODUCT)
-void IsolateGroup::AddDeoptimizingBoxedField(const Field& field) {
- ASSERT(Compiler::IsBackgroundCompilation());
- ASSERT(!field.IsOriginal());
- // The enclosed code allocates objects and can potentially trigger a GC,
- // ensure that we account for safepoints when grabbing the lock.
- SafepointMutexLocker ml(&field_list_mutex_);
- if (boxed_field_list_ == GrowableObjectArray::null()) {
- boxed_field_list_ = GrowableObjectArray::New(Heap::kOld);
- }
- const GrowableObjectArray& array =
- GrowableObjectArray::Handle(boxed_field_list_);
- array.Add(Field::Handle(field.Original()), Heap::kOld);
-}
-
-FieldPtr IsolateGroup::GetDeoptimizingBoxedField() {
- ASSERT(Thread::Current()->IsMutatorThread());
- SafepointMutexLocker ml(&field_list_mutex_);
- if (boxed_field_list_ == GrowableObjectArray::null()) {
- return Field::null();
- }
- const GrowableObjectArray& array =
- GrowableObjectArray::Handle(boxed_field_list_);
- if (array.Length() == 0) {
- return Field::null();
- }
- return Field::RawCast(array.RemoveLast());
-}
-
#ifndef PRODUCT
ErrorPtr Isolate::InvokePendingServiceExtensionCalls() {
GrowableObjectArray& calls =
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 2eb9f41..3e87c33 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -723,12 +723,6 @@
uword FindPendingDeoptAtSafepoint(uword fp);
- // Used by background compiler which field became boxed and must trigger
- // deoptimization in the mutator thread.
- void AddDeoptimizingBoxedField(const Field& field);
- // Returns Field::null() if none available in the list.
- FieldPtr GetDeoptimizingBoxedField();
-
void RememberLiveTemporaries();
void DeferredMarkLiveTemporaries();
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index ec68b24..0626dc1 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -10560,7 +10560,8 @@
}
void Field::DeoptimizeDependentCode() const {
- ASSERT(Thread::Current()->IsMutatorThread());
+ DEBUG_ASSERT(
+ IsolateGroup::Current()->program_lock()->IsCurrentThreadWriter());
ASSERT(IsOriginal());
FieldDependentArray a(*this);
if (FLAG_trace_deoptimization && a.HasCodes()) {
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index 2c31114..32ed89f 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -2774,21 +2774,6 @@
if (Compiler::CanOptimizeFunction(thread, function)) {
if (FLAG_background_compilation) {
- {
- SafepointWriteRwLocker ml(thread,
- thread->isolate_group()->program_lock());
- Field& field =
- Field::Handle(zone, isolate->group()->GetDeoptimizingBoxedField());
- while (!field.IsNull()) {
- if (FLAG_trace_optimization || FLAG_trace_field_guards) {
- THR_Print("Lazy disabling unboxing of %s\n", field.ToCString());
- }
- field.set_is_unboxing_candidate(false);
- field.DeoptimizeDependentCode();
- // Get next field.
- field = isolate->group()->GetDeoptimizingBoxedField();
- }
- }
if (!BackgroundCompiler::IsDisabled(isolate,
/* optimizing_compiler = */ true) &&
function.is_background_optimizable()) {
diff --git a/sdk/lib/_internal/js_runtime/lib/js_number.dart b/sdk/lib/_internal/js_runtime/lib/js_number.dart
index f32f0fa..eac0bc3 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_number.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_number.dart
@@ -4,13 +4,29 @@
part of _interceptors;
-/// The super interceptor class for [JSInt] and [JSDouble]. The compiler
-/// recognizes this class as an interceptor, and changes references to
-/// [:this:] to actually use the receiver of the method, which is
-/// generated as an extra argument added to each member.
+/// Interceptor class for all Dart [num] implementations.
///
-/// Note that none of the methods here delegate to a method defined on JSInt or
-/// JSDouble. This is exploited in [tryComputeConstantInterceptor].
+/// JavaScript numbers (doubles) are used to represent both Dart [int] and Dart
+/// [double] values. Some values, e.g. `3.0` are both Dart [int] values and Dart
+/// [double] values. Other values are just [double] values, e.g. `3.1`.
+///
+/// There are two disjoint subclasses of [JSNumber]: [JSInt] and [JSNumNotInt].
+///
+/// Most methods are on [JSNumber]. Since some values can 'be' (i.e. implement)
+/// both [int] and [double], the int and double operations have to be the same.
+/// Consider the JavaScript value `0`. This is both Dart int 0, and Dart double
+/// 0.0. From the dynamic type we can't tell the intention, so the
+/// `0.0.toString()` on the web returns `0`, and not `0.0` like on the Dart VM
+/// implementation. For `toString` we prefer the `int` version. For negation, we
+/// prefer the `double` version (returning `-0.0`, not `0`). This is usually
+/// hidden because the JavaScript `-0.0` value is also considered to implement
+/// [int].
+///
+/// Note that none of the methods in [JSNumber] delegate to a method defined on
+/// JSInt (or JSNumNotInt). This is exploited in
+/// [tryComputeConstantInterceptor] to avoid most interceptor lookups on
+/// numbers.
+
class JSNumber extends Interceptor implements double {
const JSNumber();
@@ -66,7 +82,11 @@
r'Math.abs(#)',
this);
- JSNumber get sign => (this > 0 ? 1 : this < 0 ? -1 : this) as JSNumber;
+ JSNumber get sign => (this > 0
+ ? 1
+ : this < 0
+ ? -1
+ : this) as JSNumber;
static const int _MIN_INT32 = -0x80000000;
static const int _MAX_INT32 = 0x7FFFFFFF;
@@ -467,7 +487,11 @@
this);
@override
- JSInt get sign => (this > 0 ? 1 : this < 0 ? -1 : this) as JSInt;
+ JSInt get sign => (this > 0
+ ? 1
+ : this < 0
+ ? -1
+ : this) as JSInt;
@override
JSInt operator -() => JS('int', r'-#', this);
@@ -695,8 +719,9 @@
int operator ~() => JS('JSUInt32', r'(~#) >>> 0', this);
}
-class JSDouble extends JSNumber implements double {
- const JSDouble();
+/// Interceptor for JavaScript values that are not a subclass of [JSInt].
+class JSNumNotInt extends JSNumber implements double {
+ const JSNumNotInt();
Type get runtimeType => double;
}
diff --git a/sdk/lib/ffi/struct.dart b/sdk/lib/ffi/struct.dart
index bf8ded9..37fa93c 100644
--- a/sdk/lib/ffi/struct.dart
+++ b/sdk/lib/ffi/struct.dart
@@ -27,10 +27,10 @@
///
/// ```
/// class MyStruct extends Struct {
-/// @Int32
+/// @Int32()
/// external int a;
///
-/// @Float
+/// @Float()
/// external double b;
///
/// external Pointer<Void> c;
diff --git a/tests/language/extension_methods/static_extension_internal_name_conflict_error_test.dart b/tests/language/extension_methods/static_extension_internal_name_conflict_error_test.dart
index ae6d6fe..21277b5 100644
--- a/tests/language/extension_methods/static_extension_internal_name_conflict_error_test.dart
+++ b/tests/language/extension_methods/static_extension_internal_name_conflict_error_test.dart
@@ -115,6 +115,7 @@
static void set property(int value) {}
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE
+ // [cfe] Conflicts with member 'property'.
static int get property2 => 1;
// ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE
@@ -137,6 +138,8 @@
int get property => 1;
// ^
// [cfe] 'property' is already declared in this scope.
+ // ^
+ // [cfe] Conflicts with setter 'property'.
void set property(int value) {}
// ^
// [cfe] 'property' is already declared in this scope.
@@ -148,7 +151,7 @@
// [cfe] Conflicts with setter 'property3'.
void set field(int value) {}
// ^
- // [cfe] Conflicts with member 'field'.
+ // [cfe] Conflicts with the implicit setter of the field 'field'.
int get field2 => 1;
// ^
// [cfe] 'field2' is already declared in this scope.
diff --git a/tests/language/regress/regress33235_11_test.dart b/tests/language/regress/regress33235_11_test.dart
index 74ccf45..ab32f57 100644
--- a/tests/language/regress/regress33235_11_test.dart
+++ b/tests/language/regress/regress33235_11_test.dart
@@ -8,15 +8,11 @@
class C {
static void set n(int i) {}
- // ^
- // [cfe] Conflicts with member 'n'.
static int n() => 42;
// ^
// [analyzer] COMPILE_TIME_ERROR.DUPLICATE_DEFINITION
// [cfe] 'n' is already declared in this scope.
- // ^
- // [cfe] Conflicts with setter 'n'.
}
main() {
diff --git a/tests/language_2/extension_methods/static_extension_internal_name_conflict_error_test.dart b/tests/language_2/extension_methods/static_extension_internal_name_conflict_error_test.dart
index ae6d6fe..21277b5 100644
--- a/tests/language_2/extension_methods/static_extension_internal_name_conflict_error_test.dart
+++ b/tests/language_2/extension_methods/static_extension_internal_name_conflict_error_test.dart
@@ -115,6 +115,7 @@
static void set property(int value) {}
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE
+ // [cfe] Conflicts with member 'property'.
static int get property2 => 1;
// ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE
@@ -137,6 +138,8 @@
int get property => 1;
// ^
// [cfe] 'property' is already declared in this scope.
+ // ^
+ // [cfe] Conflicts with setter 'property'.
void set property(int value) {}
// ^
// [cfe] 'property' is already declared in this scope.
@@ -148,7 +151,7 @@
// [cfe] Conflicts with setter 'property3'.
void set field(int value) {}
// ^
- // [cfe] Conflicts with member 'field'.
+ // [cfe] Conflicts with the implicit setter of the field 'field'.
int get field2 => 1;
// ^
// [cfe] 'field2' is already declared in this scope.
diff --git a/tests/language_2/regress/regress33235_11_test.dart b/tests/language_2/regress/regress33235_11_test.dart
index 74ccf45..ab32f57 100644
--- a/tests/language_2/regress/regress33235_11_test.dart
+++ b/tests/language_2/regress/regress33235_11_test.dart
@@ -8,15 +8,11 @@
class C {
static void set n(int i) {}
- // ^
- // [cfe] Conflicts with member 'n'.
static int n() => 42;
// ^
// [analyzer] COMPILE_TIME_ERROR.DUPLICATE_DEFINITION
// [cfe] 'n' is already declared in this scope.
- // ^
- // [cfe] Conflicts with setter 'n'.
}
main() {
diff --git a/tools/VERSION b/tools/VERSION
index 75028e0..101e3cf 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 13
PATCH 0
-PRERELEASE 20
+PRERELEASE 21
PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 2d58e2b..b010541 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -1407,7 +1407,9 @@
{
"builders": [
"vm-kernel-precomp-linux-debug-x64",
- "vm-kernel-precomp-linux-debug-x64c"
+ "vm-kernel-precomp-linux-debug-x64c",
+ "vm-kernel-precomp-linux-debug-simarm64",
+ "vm-kernel-precomp-linux-debug-simarm64c"
],
"meta": {
"description": "This configuration is used by the vm kernel precomp debug builders. It uses 15 shards for testing to avoid 1 hour shard timeouts."
@@ -1624,6 +1626,8 @@
},
{
"builders": [
+ "vm-kernel-linux-debug-simarm64",
+ "vm-kernel-linux-debug-simarm64c",
"vm-kernel-linux-release-simarm",
"vm-kernel-linux-release-simarm64",
"vm-kernel-linux-release-simarm64c",