Skip to content

Commit

Permalink
Version 3.5.0-193.0.dev
Browse files Browse the repository at this point in the history
Merge aa28753 into dev
  • Loading branch information
Dart CI committed May 25, 2024
2 parents b759e9f + aa28753 commit aed02f4
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';

class AddClassModifier extends ResolvedCorrectionProducer {
final String _modifier;

AddClassModifier.base() : this._('base');

AddClassModifier._(this._modifier);

@override
CorrectionApplicability get applicability =>
CorrectionApplicability.acrossSingleFile;

@override
List<String> get fixArguments => [_modifier];

@override
FixKind get fixKind => DartFixKind.ADD_CLASS_MODIFIER;

@override
FixKind get multiFixKind => DartFixKind.ADD_CLASS_MODIFIER_MULTI;

@override
Future<void> compute(ChangeBuilder builder) async {
var node = this.node;
if (node is! NamedCompilationUnitMember) return;

await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(
node.firstTokenAfterCommentAndMetadata.offset, '$_modifier ');
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@
#
# Stats:
# - 42 "needsEvaluation"
# - 360 "needsFix"
# - 391 "hasFix"
# - 359 "needsFix"
# - 392 "hasFix"
# - 516 "noFix"

AnalysisOptionsErrorCode.INCLUDED_FILE_PARSE_ERROR:
Expand Down Expand Up @@ -1118,9 +1118,7 @@ CompileTimeErrorCode.MIXIN_OF_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
CompileTimeErrorCode.MIXIN_ON_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
status: noFix
CompileTimeErrorCode.MIXIN_SUBTYPE_OF_BASE_IS_NOT_BASE:
status: needsFix
notes: |-
Add `base`.
status: hasFix
CompileTimeErrorCode.MIXIN_SUBTYPE_OF_FINAL_IS_NOT_BASE:
status: needsFix
notes: |-
Expand Down
10 changes: 10 additions & 0 deletions pkg/analysis_server/lib/src/services/correction/fix.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,16 @@ class DartFixKind {
DartFixKindPriority.IN_FILE,
'Add empty argument lists everywhere in file',
);
static const ADD_CLASS_MODIFIER = FixKind(
'dart.fix.add.class.modifier',
DartFixKindPriority.DEFAULT,
"Add ''{0}'' modifier",
);
static const ADD_CLASS_MODIFIER_MULTI = FixKind(
'dart.fix.add.class.modifier.multi',
DartFixKindPriority.IN_FILE,
"Add ''{0}'' modifier everywhere in file",
);
static const ADD_CONST = FixKind(
'dart.fix.add.const',
DartFixKindPriority.DEFAULT,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:analysis_server/src/services/correction/dart/abstract_producer.d
import 'package:analysis_server/src/services/correction/dart/add_async.dart';
import 'package:analysis_server/src/services/correction/dart/add_await.dart';
import 'package:analysis_server/src/services/correction/dart/add_call_super.dart';
import 'package:analysis_server/src/services/correction/dart/add_class_modifier.dart';
import 'package:analysis_server/src/services/correction/dart/add_const.dart';
import 'package:analysis_server/src/services/correction/dart/add_diagnostic_property_reference.dart';
import 'package:analysis_server/src/services/correction/dart/add_empty_argument_list.dart';
Expand Down Expand Up @@ -1057,6 +1058,9 @@ final _builtInNonLintProducers = <ErrorCode, List<ProducerGenerator>>{
CompileTimeErrorCode.MIXIN_CLASS_DECLARATION_EXTENDS_NOT_OBJECT: [
RemoveExtendsClause.new,
],
CompileTimeErrorCode.MIXIN_SUBTYPE_OF_BASE_IS_NOT_BASE: [
AddClassModifier.base,
],
CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS: [
RemoveNameFromDeclarationClause.new,
],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';

import 'fix_processor.dart';

void main() {
defineReflectiveSuite(() {
defineReflectiveTests(AddClassModifierTest);
});
}

@reflectiveTest
class AddClassModifierTest extends FixProcessorTest {
@override
FixKind get kind => DartFixKind.ADD_CLASS_MODIFIER;

Future<void> test_mixinSubtypeOfBaseIsNotBase() async {
await resolveTestCode('''
base class A {}
mixin B implements A {}
''');
await assertHasFix('''
base class A {}
base mixin B implements A {}
''');
}

Future<void> test_mixinSubtypeOfBaseIsNotBase_withDoc() async {
await resolveTestCode('''
base class A {}
// Doc.
mixin B implements A {}
''');
await assertHasFix('''
base class A {}
// Doc.
base mixin B implements A {}
''');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'add_async_test.dart' as add_async;
import 'add_await_test.dart' as add_await;
import 'add_call_super_test.dart' as add_call_super;
import 'add_class_modifier_test.dart' as add_class_modifier;
import 'add_const_test.dart' as add_const;
import 'add_curly_braces_test.dart' as add_curly_braces;
import 'add_diagnostic_property_reference_test.dart'
Expand Down Expand Up @@ -295,6 +296,7 @@ void main() {
add_async.main();
add_await.main();
add_call_super.main();
add_class_modifier.main();
add_const.main();
add_curly_braces.main();
add_diagnostic_property_reference.main();
Expand Down
2 changes: 1 addition & 1 deletion tools/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ CHANNEL dev
MAJOR 3
MINOR 5
PATCH 0
PRERELEASE 192
PRERELEASE 193
PRERELEASE_PATCH 0

0 comments on commit aed02f4

Please sign in to comment.