Remove all support for super-mixins option

Bug: https://github.com/dart-lang/sdk/issues/50680
Change-Id: I96409d02e64d3e198e0fae4a55f58f871ce2aeac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275142
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
Sam Rawlins 2022-12-13 18:13:37 +00:00 committed by Commit Queue
parent 0f0e19c49e
commit fdf59ad1eb
15 changed files with 3 additions and 152 deletions

View file

@ -3436,12 +3436,6 @@ a:focus, a:hover {
True if the client wants to enable support for the
proposed "null aware operators" feature.
</p>
</dd><dt class="field"><b>enableSuperMixins: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
<p>
True if the client wants to enable support for the
proposed "less restricted mixins" proposal (DEP 34).
</p>
</dd><dt class="field"><b>generateDart2jsHints: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
<p>

View file

@ -2037,7 +2037,6 @@ class AnalysisOccurrencesParams implements HasToJson {
/// "enableDeferredLoading": optional bool
/// "enableEnums": optional bool
/// "enableNullAwareOperators": optional bool
/// "enableSuperMixins": optional bool
/// "generateDart2jsHints": optional bool
/// "generateHints": optional bool
/// "generateLints": optional bool
@ -2068,10 +2067,6 @@ class AnalysisOptions implements HasToJson {
/// operators" feature.
bool? enableNullAwareOperators;
/// True if the client wants to enable support for the proposed "less
/// restricted mixins" proposal (DEP 34).
bool? enableSuperMixins;
/// True if hints that are specific to dart2js should be generated. This
/// option is ignored if generateHints is false.
bool? generateDart2jsHints;
@ -2089,7 +2084,6 @@ class AnalysisOptions implements HasToJson {
this.enableDeferredLoading,
this.enableEnums,
this.enableNullAwareOperators,
this.enableSuperMixins,
this.generateDart2jsHints,
this.generateHints,
this.generateLints});
@ -2119,11 +2113,6 @@ class AnalysisOptions implements HasToJson {
'$jsonPath.enableNullAwareOperators',
json['enableNullAwareOperators']);
}
bool? enableSuperMixins;
if (json.containsKey('enableSuperMixins')) {
enableSuperMixins = jsonDecoder.decodeBool(
'$jsonPath.enableSuperMixins', json['enableSuperMixins']);
}
bool? generateDart2jsHints;
if (json.containsKey('generateDart2jsHints')) {
generateDart2jsHints = jsonDecoder.decodeBool(
@ -2144,7 +2133,6 @@ class AnalysisOptions implements HasToJson {
enableDeferredLoading: enableDeferredLoading,
enableEnums: enableEnums,
enableNullAwareOperators: enableNullAwareOperators,
enableSuperMixins: enableSuperMixins,
generateDart2jsHints: generateDart2jsHints,
generateHints: generateHints,
generateLints: generateLints);
@ -2172,10 +2160,6 @@ class AnalysisOptions implements HasToJson {
if (enableNullAwareOperators != null) {
result['enableNullAwareOperators'] = enableNullAwareOperators;
}
var enableSuperMixins = this.enableSuperMixins;
if (enableSuperMixins != null) {
result['enableSuperMixins'] = enableSuperMixins;
}
var generateDart2jsHints = this.generateDart2jsHints;
if (generateDart2jsHints != null) {
result['generateDart2jsHints'] = generateDart2jsHints;
@ -2201,7 +2185,6 @@ class AnalysisOptions implements HasToJson {
enableDeferredLoading == other.enableDeferredLoading &&
enableEnums == other.enableEnums &&
enableNullAwareOperators == other.enableNullAwareOperators &&
enableSuperMixins == other.enableSuperMixins &&
generateDart2jsHints == other.generateDart2jsHints &&
generateHints == other.generateHints &&
generateLints == other.generateLints;
@ -2215,7 +2198,6 @@ class AnalysisOptions implements HasToJson {
enableDeferredLoading,
enableEnums,
enableNullAwareOperators,
enableSuperMixins,
generateDart2jsHints,
generateHints,
generateLints,

View file

@ -46,9 +46,6 @@ AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED:
AnalysisOptionsHintCode.STRONG_MODE_SETTING_DEPRECATED:
status: needsFix
notes: Fixed.
AnalysisOptionsHintCode.SUPER_MIXINS_SETTING_DEPRECATED:
status: needsFix
notes: Fixed.
AnalysisOptionsWarningCode.INCLUDE_FILE_NOT_FOUND:
status: noFix
notes: |-

View file

@ -70,9 +70,6 @@ class AnalysisOptionsFixGenerator {
await _addFix_removeSetting(coveringNodePath);
} else if (errorCode == DEPRECATED_LINT_HINT) {
await _addFix_removeLint(coveringNodePath);
} else if (errorCode ==
AnalysisOptionsHintCode.SUPER_MIXINS_SETTING_DEPRECATED) {
await _addFix_removeSetting(coveringNodePath);
// } else if (errorCode == AnalysisOptionsWarningCode.INCLUDED_FILE_WARNING) {
// } else if (errorCode == AnalysisOptionsWarningCode.INCLUDE_FILE_NOT_FOUND) {
// } else if (errorCode == AnalysisOptionsWarningCode.INVALID_OPTION) {

View file

@ -50,37 +50,4 @@ void f() {
expect(errors, hasLength(1));
expect(errors[0].location.file, equals(pathname));
}
@failingTest
Future<void> test_super_mixins_enabled() async {
// We see errors here with the new driver (#28870).
// Expected: empty
// Actual: [
// AnalysisError:{"severity":"ERROR","type":"COMPILE_TIME_ERROR","location":{"file":"/var/folders/00/0w95r000h01000cxqpysvccm003j4q/T/analysisServerfbuOQb/test.dart","offset":31,"length":1,"startLine":1,"startColumn":32},"message":"The class 'C' can't be used as a mixin because it extends a class other than Object.","correction":"","code":"mixin_inherits_from_not_object","hasFix":false},
// AnalysisError:{"severity":"ERROR","type":"COMPILE_TIME_ERROR","location":{"file":"/var/folders/00/0w95r000h01000cxqpysvccm003j4q/T/analysisServerfbuOQb/test.dart","offset":31,"length":1,"startLine":1,"startColumn":32},"message":"The class 'C' can't be used as a mixin because it references 'super'.","correction":"","code":"mixin_references_super","hasFix":false}
// ]
var pathname = sourcePath('test.dart');
writeFile(pathname, '''
class Test extends Object with C {
void foo() {}
}
abstract class B {
void foo() {}
}
abstract class C extends B {
void bar() {
super.foo();
}
}
''');
// ignore: deprecated_member_use_from_same_package
await sendAnalysisUpdateOptions(
AnalysisOptions()..enableSuperMixins = true);
await standardAnalysisSetup();
await analysisFinished;
expect(currentAnalysisErrors[pathname], isList);
var errors = currentAnalysisErrors[pathname];
expect(errors, isEmpty);
}
}

View file

@ -97,7 +97,6 @@ final Matcher isAnalysisErrorType = MatchesEnum('AnalysisErrorType', [
/// "enableDeferredLoading": optional bool
/// "enableEnums": optional bool
/// "enableNullAwareOperators": optional bool
/// "enableSuperMixins": optional bool
/// "generateDart2jsHints": optional bool
/// "generateHints": optional bool
/// "generateLints": optional bool
@ -108,7 +107,6 @@ final Matcher isAnalysisOptions = LazyMatcher(
'enableDeferredLoading': isBool,
'enableEnums': isBool,
'enableNullAwareOperators': isBool,
'enableSuperMixins': isBool,
'generateDart2jsHints': isBool,
'generateHints': isBool,
'generateLints': isBool

View file

@ -28,20 +28,6 @@ analyzer:
''');
}
Future<void> test_enableSuperMixins() async {
await assertHasFix('''
analyzer:
enable-experiment:
- test-experiment
language:
enableSuperMixins: true
''', '''
analyzer:
enable-experiment:
- test-experiment
''');
}
Future<void> test_invalidExperiment_first() async {
await assertHasFix('''
analyzer:

View file

@ -66,12 +66,6 @@ public class AnalysisOptions {
*/
private final Boolean enableNullAwareOperators;
/**
* True if the client wants to enable support for the proposed "less restricted mixins" proposal
* (DEP 34).
*/
private final Boolean enableSuperMixins;
/**
* True if hints that are specific to dart2js should be generated. This option is ignored if
* generateHints is false.
@ -91,12 +85,11 @@ public class AnalysisOptions {
/**
* Constructor for {@link AnalysisOptions}.
*/
public AnalysisOptions(Boolean enableAsync, Boolean enableDeferredLoading, Boolean enableEnums, Boolean enableNullAwareOperators, Boolean enableSuperMixins, Boolean generateDart2jsHints, Boolean generateHints, Boolean generateLints) {
public AnalysisOptions(Boolean enableAsync, Boolean enableDeferredLoading, Boolean enableEnums, Boolean enableNullAwareOperators, Boolean generateDart2jsHints, Boolean generateHints, Boolean generateLints) {
this.enableAsync = enableAsync;
this.enableDeferredLoading = enableDeferredLoading;
this.enableEnums = enableEnums;
this.enableNullAwareOperators = enableNullAwareOperators;
this.enableSuperMixins = enableSuperMixins;
this.generateDart2jsHints = generateDart2jsHints;
this.generateHints = generateHints;
this.generateLints = generateLints;
@ -111,7 +104,6 @@ public class AnalysisOptions {
ObjectUtilities.equals(other.enableDeferredLoading, enableDeferredLoading) &&
ObjectUtilities.equals(other.enableEnums, enableEnums) &&
ObjectUtilities.equals(other.enableNullAwareOperators, enableNullAwareOperators) &&
ObjectUtilities.equals(other.enableSuperMixins, enableSuperMixins) &&
ObjectUtilities.equals(other.generateDart2jsHints, generateDart2jsHints) &&
ObjectUtilities.equals(other.generateHints, generateHints) &&
ObjectUtilities.equals(other.generateLints, generateLints);
@ -124,11 +116,10 @@ public class AnalysisOptions {
Boolean enableDeferredLoading = jsonObject.get("enableDeferredLoading") == null ? null : jsonObject.get("enableDeferredLoading").getAsBoolean();
Boolean enableEnums = jsonObject.get("enableEnums") == null ? null : jsonObject.get("enableEnums").getAsBoolean();
Boolean enableNullAwareOperators = jsonObject.get("enableNullAwareOperators") == null ? null : jsonObject.get("enableNullAwareOperators").getAsBoolean();
Boolean enableSuperMixins = jsonObject.get("enableSuperMixins") == null ? null : jsonObject.get("enableSuperMixins").getAsBoolean();
Boolean generateDart2jsHints = jsonObject.get("generateDart2jsHints") == null ? null : jsonObject.get("generateDart2jsHints").getAsBoolean();
Boolean generateHints = jsonObject.get("generateHints") == null ? null : jsonObject.get("generateHints").getAsBoolean();
Boolean generateLints = jsonObject.get("generateLints") == null ? null : jsonObject.get("generateLints").getAsBoolean();
return new AnalysisOptions(enableAsync, enableDeferredLoading, enableEnums, enableNullAwareOperators, enableSuperMixins, generateDart2jsHints, generateHints, generateLints);
return new AnalysisOptions(enableAsync, enableDeferredLoading, enableEnums, enableNullAwareOperators, generateDart2jsHints, generateHints, generateLints);
}
public static List<AnalysisOptions> fromJsonArray(JsonArray jsonArray) {
@ -179,14 +170,6 @@ public class AnalysisOptions {
return enableNullAwareOperators;
}
/**
* True if the client wants to enable support for the proposed "less restricted mixins" proposal
* (DEP 34).
*/
public Boolean getEnableSuperMixins() {
return enableSuperMixins;
}
/**
* True if hints that are specific to dart2js should be generated. This option is ignored if
* generateHints is false.
@ -216,7 +199,6 @@ public class AnalysisOptions {
builder.append(enableDeferredLoading);
builder.append(enableEnums);
builder.append(enableNullAwareOperators);
builder.append(enableSuperMixins);
builder.append(generateDart2jsHints);
builder.append(generateHints);
builder.append(generateLints);
@ -237,9 +219,6 @@ public class AnalysisOptions {
if (enableNullAwareOperators != null) {
jsonObject.addProperty("enableNullAwareOperators", enableNullAwareOperators);
}
if (enableSuperMixins != null) {
jsonObject.addProperty("enableSuperMixins", enableSuperMixins);
}
if (generateDart2jsHints != null) {
jsonObject.addProperty("generateDart2jsHints", generateDart2jsHints);
}
@ -264,8 +243,6 @@ public class AnalysisOptions {
builder.append(enableEnums + ", ");
builder.append("enableNullAwareOperators=");
builder.append(enableNullAwareOperators + ", ");
builder.append("enableSuperMixins=");
builder.append(enableSuperMixins + ", ");
builder.append("generateDart2jsHints=");
builder.append(generateDart2jsHints + ", ");
builder.append("generateHints=");

View file

@ -3549,13 +3549,6 @@
proposed "null aware operators" feature.
</p>
</field>
<field name="enableSuperMixins" optional="true">
<ref>bool</ref>
<p>
True if the client wants to enable support for the
proposed "less restricted mixins" proposal (DEP 34).
</p>
</field>
<field name="generateDart2jsHints" optional="true">
<ref>bool</ref>
<p>

View file

@ -2037,7 +2037,6 @@ class AnalysisOccurrencesParams implements HasToJson {
/// "enableDeferredLoading": optional bool
/// "enableEnums": optional bool
/// "enableNullAwareOperators": optional bool
/// "enableSuperMixins": optional bool
/// "generateDart2jsHints": optional bool
/// "generateHints": optional bool
/// "generateLints": optional bool
@ -2068,10 +2067,6 @@ class AnalysisOptions implements HasToJson {
/// operators" feature.
bool? enableNullAwareOperators;
/// True if the client wants to enable support for the proposed "less
/// restricted mixins" proposal (DEP 34).
bool? enableSuperMixins;
/// True if hints that are specific to dart2js should be generated. This
/// option is ignored if generateHints is false.
bool? generateDart2jsHints;
@ -2089,7 +2084,6 @@ class AnalysisOptions implements HasToJson {
this.enableDeferredLoading,
this.enableEnums,
this.enableNullAwareOperators,
this.enableSuperMixins,
this.generateDart2jsHints,
this.generateHints,
this.generateLints});
@ -2119,11 +2113,6 @@ class AnalysisOptions implements HasToJson {
'$jsonPath.enableNullAwareOperators',
json['enableNullAwareOperators']);
}
bool? enableSuperMixins;
if (json.containsKey('enableSuperMixins')) {
enableSuperMixins = jsonDecoder.decodeBool(
'$jsonPath.enableSuperMixins', json['enableSuperMixins']);
}
bool? generateDart2jsHints;
if (json.containsKey('generateDart2jsHints')) {
generateDart2jsHints = jsonDecoder.decodeBool(
@ -2144,7 +2133,6 @@ class AnalysisOptions implements HasToJson {
enableDeferredLoading: enableDeferredLoading,
enableEnums: enableEnums,
enableNullAwareOperators: enableNullAwareOperators,
enableSuperMixins: enableSuperMixins,
generateDart2jsHints: generateDart2jsHints,
generateHints: generateHints,
generateLints: generateLints);
@ -2172,10 +2160,6 @@ class AnalysisOptions implements HasToJson {
if (enableNullAwareOperators != null) {
result['enableNullAwareOperators'] = enableNullAwareOperators;
}
var enableSuperMixins = this.enableSuperMixins;
if (enableSuperMixins != null) {
result['enableSuperMixins'] = enableSuperMixins;
}
var generateDart2jsHints = this.generateDart2jsHints;
if (generateDart2jsHints != null) {
result['generateDart2jsHints'] = generateDart2jsHints;
@ -2201,7 +2185,6 @@ class AnalysisOptions implements HasToJson {
enableDeferredLoading == other.enableDeferredLoading &&
enableEnums == other.enableEnums &&
enableNullAwareOperators == other.enableNullAwareOperators &&
enableSuperMixins == other.enableSuperMixins &&
generateDart2jsHints == other.generateDart2jsHints &&
generateHints == other.generateHints &&
generateLints == other.generateLints;
@ -2215,7 +2198,6 @@ class AnalysisOptions implements HasToJson {
enableDeferredLoading,
enableEnums,
enableNullAwareOperators,
enableSuperMixins,
generateDart2jsHints,
generateHints,
generateLints,

View file

@ -77,16 +77,6 @@ class AnalysisOptionsHintCode extends ErrorCode {
"It is no longer necessary to explicitly enable strong mode.",
);
/// An error code indicating that the enablePreviewDart2 setting is
/// deprecated.
static const AnalysisOptionsHintCode SUPER_MIXINS_SETTING_DEPRECATED =
AnalysisOptionsHintCode(
'SUPER_MIXINS_SETTING_DEPRECATED',
"The 'enableSuperMixins' setting is deprecated.",
correctionMessage:
"Support has been added to the language for 'mixin' based mixins.",
);
/// Initialize a newly created error code to have the given [name].
const AnalysisOptionsHintCode(
String name,

View file

@ -24,7 +24,6 @@ const List<ErrorCode> errorCodeValues = [
AnalysisOptionsErrorCode.PARSE_ERROR,
AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
AnalysisOptionsHintCode.STRONG_MODE_SETTING_DEPRECATED,
AnalysisOptionsHintCode.SUPER_MIXINS_SETTING_DEPRECATED,
AnalysisOptionsWarningCode.INCLUDED_FILE_WARNING,
AnalysisOptionsWarningCode.INCLUDE_FILE_NOT_FOUND,
AnalysisOptionsWarningCode.INVALID_OPTION,

View file

@ -118,7 +118,6 @@ void applyToAnalysisOptions(AnalysisOptionsImpl options, YamlMap optionMap) {
/// `analyzer` analysis options constants.
class AnalyzerOptions {
static const String analyzer = 'analyzer';
static const String enableSuperMixins = 'enableSuperMixins';
static const String enablePreviewDart2 = 'enablePreviewDart2';
static const String cannotIgnore = 'cannot-ignore';
@ -510,10 +509,6 @@ class LanguageOptionValidator extends OptionsValidator {
reporter.reportErrorForSpan(
AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
k.span);
} else if (AnalyzerOptions.enableSuperMixins == key) {
reporter.reportErrorForSpan(
AnalysisOptionsHintCode.SUPER_MIXINS_SETTING_DEPRECATED,
k.span);
} else if (!AnalyzerOptions.languageOptions.contains(key)) {
_builder.reportError(reporter, AnalyzerOptions.language, k);
} else {

View file

@ -64,12 +64,6 @@ AnalysisOptionsHintCode:
problemMessage: "The 'strong-mode: true' setting is deprecated."
correctionMessage: It is no longer necessary to explicitly enable strong mode.
comment: "An error code indicating that strong-mode: true is deprecated."
SUPER_MIXINS_SETTING_DEPRECATED:
problemMessage: "The 'enableSuperMixins' setting is deprecated."
correctionMessage: "Support has been added to the language for 'mixin' based mixins."
comment: |-
An error code indicating that the enablePreviewDart2 setting is
deprecated.
AnalysisOptionsWarningCode:
INCLUDED_FILE_WARNING:
problemMessage: "Warning in the included options file {0}({1}..{2}): {3}"

View file

@ -410,7 +410,7 @@ analyzer:
validate('''
analyzer:
language:
- enableSuperMixins: true
- notAnOption: true
''', [AnalysisOptionsWarningCode.INVALID_SECTION_FORMAT]);
}