Skip to content

Commit 9e1b603

Browse files
committed
Fix a type cast exception in the create-constructor fix (issue 42830)
Change-Id: I47b11000c2c4ec96856a58d43f9b7b6493cc7908 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155825 Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent bf411fc commit 9e1b603

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ class CreateConstructor extends CorrectionProducer {
6565
// prepare target ClassDeclaration
6666
ClassElement targetElement = targetType.element;
6767
var targetResult = await sessionHelper.getElementDeclaration(targetElement);
68-
if (targetResult.node is! ClassOrMixinDeclaration) {
68+
var targetNode = targetResult.node;
69+
if (targetNode is! ClassDeclaration) {
6970
return;
7071
}
71-
ClassOrMixinDeclaration targetNode = targetResult.node;
7272

7373
// prepare location
7474
var targetLocation = CorrectionUtils(targetResult.resolvedUnit)
@@ -108,10 +108,10 @@ class CreateConstructor extends CorrectionProducer {
108108
// prepare target ClassDeclaration
109109
var targetElement = constructorElement.enclosingElement;
110110
var targetResult = await sessionHelper.getElementDeclaration(targetElement);
111-
if (targetResult.node is! ClassOrMixinDeclaration) {
111+
var targetNode = targetResult.node;
112+
if (targetNode is! ClassDeclaration) {
112113
return;
113114
}
114-
ClassOrMixinDeclaration targetNode = targetResult.node;
115115

116116
// prepare location
117117
var targetLocation = CorrectionUtils(targetResult.resolvedUnit)

pkg/analysis_server/test/src/services/correction/fix/create_constructor_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analysis_server/src/services/correction/fix.dart';
6+
import 'package:analyzer/src/error/codes.dart';
67
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
78
import 'package:test_reflective_loader/test_reflective_loader.dart';
89

@@ -104,6 +105,19 @@ main() {
104105
''');
105106
}
106107

108+
Future<void> test_mixin() async {
109+
verifyNoTestUnitErrors = false;
110+
await resolveTestUnit('''
111+
mixin M {}
112+
void f() {
113+
new M(3);
114+
}
115+
''');
116+
await assertNoFix(
117+
errorFilter: (error) =>
118+
error.errorCode != CompileTimeErrorCode.MIXIN_INSTANTIATE);
119+
}
120+
107121
Future<void> test_named() async {
108122
await resolveTestUnit('''
109123
class A {

0 commit comments

Comments
 (0)