mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 16:41:07 +00:00
add migration engine support for named parameters in imported packages
This adds support for decorating named parameters in packages that are imported by the package being migrated. Change-Id: I1f803b28ad8fedcedca14421b391dc7ab879d05f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106682 Commit-Queue: Dan Rubel <danrubel@google.com> Reviewed-by: Paul Berry <paulberry@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
15cac4204e
commit
cf78d5d7f0
|
@ -54,16 +54,17 @@ class DecoratedType {
|
|||
NullabilitySuffix.star); // TODO(paulberry)
|
||||
if (type is FunctionType) {
|
||||
var positionalParameters = <DecoratedType>[];
|
||||
var namedParameters = <String, DecoratedType>{};
|
||||
for (var parameter in type.parameters) {
|
||||
if (parameter.isPositional) {
|
||||
positionalParameters.add(decorate(parameter.type));
|
||||
} else {
|
||||
// TODO(paulberry)
|
||||
throw UnimplementedError('Decorating (${parameter.displayName})');
|
||||
namedParameters[parameter.name] = decorate(parameter.type);
|
||||
}
|
||||
}
|
||||
return DecoratedType(type, graph.never,
|
||||
returnType: decorate(type.returnType),
|
||||
namedParameters: namedParameters,
|
||||
positionalParameters: positionalParameters);
|
||||
} else if (type is InterfaceType) {
|
||||
if (type.typeParameters.isNotEmpty) {
|
||||
|
|
|
@ -1143,6 +1143,23 @@ void g(C c, int j) {
|
|||
assertEdge(nullable_j, nullable_i, hard: true));
|
||||
}
|
||||
|
||||
test_methodInvocation_parameter_named_differentPackage() async {
|
||||
addPackageFile('pkgC', 'c.dart', '''
|
||||
class C {
|
||||
void f({int i}) {}
|
||||
}
|
||||
''');
|
||||
await analyze('''
|
||||
import "package:pkgC/c.dart";
|
||||
void g(C c, int j) {
|
||||
c.f(i: j/*check*/);
|
||||
}
|
||||
''');
|
||||
var nullable_j = decoratedTypeAnnotation('int j');
|
||||
assertNullCheck(checkExpression('j/*check*/'),
|
||||
assertEdge(nullable_j.node, never, hard: true));
|
||||
}
|
||||
|
||||
test_methodInvocation_return_type() async {
|
||||
await analyze('''
|
||||
class C {
|
||||
|
|
Loading…
Reference in a new issue