mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 14:59:41 +00:00
Fix cast exception in OpTypeAstVisitor
Change-Id: I7fa9f9586a7d57ebc9707db3ee1532c462bbeccd Reviewed-on: https://dart-review.googlesource.com/c/78712 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
2cf6ba2996
commit
8fc80031ae
|
@ -464,7 +464,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
|
|||
if (identical(entity, node.name)) {
|
||||
TypeName type = node.type;
|
||||
if (type != null) {
|
||||
SimpleIdentifier prefix = type.name;
|
||||
Identifier prefix = type.name;
|
||||
if (prefix != null) {
|
||||
optype.includeConstructorSuggestions = true;
|
||||
optype.isPrefixed = true;
|
||||
|
@ -784,9 +784,9 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
|
|||
List<ParameterElement> parameters = element.parameters;
|
||||
ParameterElement parameterElement = parameters.firstWhere((e) {
|
||||
if (e is DefaultFieldFormalParameterElementImpl) {
|
||||
return e.field?.name == node.name.label.name;
|
||||
return e.field?.name == node.name.label?.name;
|
||||
}
|
||||
return e.isNamed && e.name == node.name.label.name;
|
||||
return e.isNamed && e.name == node.name.label?.name;
|
||||
}, orElse: () => null);
|
||||
// Suggest tear-offs.
|
||||
if (parameterElement?.type is FunctionType) {
|
||||
|
|
|
@ -1190,6 +1190,16 @@ class OpTypeTest extends OpTypeTestCommon {
|
|||
await assertOpType(constructors: true);
|
||||
}
|
||||
|
||||
test_ConstructorName_nameAndPrefix_resolved() async {
|
||||
// SimpleIdentifier PrefixedIdentifier TypeName ConstructorName
|
||||
// InstanceCreationExpression
|
||||
addTestSource('''
|
||||
import 'dart:core' as core;
|
||||
main() {new core.String.from^CharCodes([]);}
|
||||
''');
|
||||
await assertOpType(constructors: true, prefixed: true);
|
||||
}
|
||||
|
||||
test_ConstructorName_resolved() async {
|
||||
// SimpleIdentifier PrefixedIdentifier TypeName ConstructorName
|
||||
// InstanceCreationExpression
|
||||
|
@ -1706,6 +1716,14 @@ class C2 {
|
|||
await assertOpType(typeNames: true);
|
||||
}
|
||||
|
||||
test_NamedExpression() async {
|
||||
addTestSource('''
|
||||
main() { f(3, ^); }
|
||||
void f(int a, {int b}) {}
|
||||
''');
|
||||
await assertOpType(namedArgs: true);
|
||||
}
|
||||
|
||||
test_OnClause() async {
|
||||
// OnClause MixinDeclaration
|
||||
addTestSource('mixin M on ^\n{}');
|
||||
|
|
Loading…
Reference in a new issue