| Index: pkg/analyzer/lib/src/summary/prelink.dart
|
| diff --git a/pkg/analyzer/lib/src/summary/prelink.dart b/pkg/analyzer/lib/src/summary/prelink.dart
|
| index c1dd640b8787c8e2dcd1a76982ace615a26e7fb3..1e3caad8ac3830578673473d2069fb3651a7c4bd 100644
|
| --- a/pkg/analyzer/lib/src/summary/prelink.dart
|
| +++ b/pkg/analyzer/lib/src/summary/prelink.dart
|
| @@ -412,6 +412,17 @@ class _Prelinker {
|
| // Prefix references must always point backward.
|
| assert(reference.prefixReference < i);
|
| namespace = prefixNamespaces[reference.prefixReference];
|
| + // If in `a.length` the `a` prefix is a top-level variable or a field,
|
| + // then it must be the `String.length` property reference.
|
| + if (namespace == null && reference.name == 'length') {
|
| + ReferenceKind prefixKind = references[reference.prefixReference].kind;
|
| + if (prefixKind == ReferenceKind.topLevelPropertyAccessor ||
|
| + prefixKind == ReferenceKind.constField) {
|
| + references
|
| + .add(new LinkedReferenceBuilder(kind: ReferenceKind.length));
|
| + continue;
|
| + }
|
| + }
|
| // Prefix references must always point to proper prefixes.
|
| assert(namespace != null);
|
| }
|
|
|