Skip to content

Commit 49f524d

Browse files
scheglovCommit Queue
authored andcommitted
CQ. Fix for NPE in RequiredParametersVerifier.
Saw a crash in logs: _TypeError: Null check operator used on a null value at RequiredParametersVerifier._check (required_parameters_verifier.dart:147) at RequiredParametersVerifier.visitInstanceCreationExpression (required_parameters_verifier.dart:83) at ErrorVerifier.visitInstanceCreationExpression (error_verifier.dart:1153) at InstanceCreationExpressionImpl.accept (ast.dart:13711) at NamedExpressionImpl.visitChildren (ast.dart:16661) at RecursiveAstVisitor.visitNamedExpression (visitor.g.dart:1345) Change-Id: Ia78df6ee7179f511d869ebb4706da5cda6a0ea29 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/456109 Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
1 parent d9f2f80 commit 49f524d

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

pkg/analyzer/lib/src/error/required_parameters_verifier.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,11 @@ class RequiredParametersVerifier extends SimpleAstVisitor<void> {
144144

145145
for (FormalParameterElement parameter in parameters) {
146146
if (parameter.isRequiredNamed) {
147-
String parameterName = parameter.name!;
147+
var parameterName = parameter.name;
148+
if (parameterName == null) {
149+
continue;
150+
}
151+
148152
if (!_containsNamedExpression(
149153
enclosingConstructor,
150154
arguments,

pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
import 'package:analyzer/src/dart/error/syntactic_errors.dart';
56
import 'package:analyzer/src/error/codes.dart';
67
import 'package:test_reflective_loader/test_reflective_loader.dart';
78

@@ -91,6 +92,29 @@ main() {
9192
''');
9293
}
9394

95+
test_constructor_fieldFormal_missingName() async {
96+
await assertErrorsInCode(
97+
r'''
98+
class A {
99+
A({required this.})
100+
}
101+
102+
void f() {
103+
A();
104+
}
105+
''',
106+
[
107+
error(
108+
CompileTimeErrorCode.initializingFormalForNonExistentField,
109+
15,
110+
14,
111+
),
112+
error(ParserErrorCode.missingIdentifier, 29, 1),
113+
error(ParserErrorCode.missingFunctionBody, 32, 1),
114+
],
115+
);
116+
}
117+
94118
test_constructor_missingArgument() async {
95119
await assertErrorsInCode(
96120
r'''

0 commit comments

Comments
 (0)