diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart index 9ebc378ff40..ea25920c115 100644 --- a/pkg/analyzer/lib/src/summary/link.dart +++ b/pkg/analyzer/lib/src/summary/link.dart @@ -1216,14 +1216,19 @@ class CompilationUnitElementInBuildUnit extends CompilationUnitElementForLink { // TODO(paulberry): implement other cases as necessary throw new UnimplementedError('${element._unlinkedExecutable.kind}'); } - return addRawReference(element.name, - numTypeParameters: element.typeParameters.length, - containingReference: - enclosingClass != null ? addReference(enclosingClass) : null, - dependency: enclosingClass != null - ? null - : library.addDependency(element.library as LibraryElementForLink), - kind: kind); + if (enclosingClass == null) { + return addRawReference(element.name, + numTypeParameters: element.typeParameters.length, + dependency: + library.addDependency(element.library as LibraryElementForLink), + unitNum: element.compilationUnit.unitNum, + kind: kind); + } else { + return addRawReference(element.name, + numTypeParameters: element.typeParameters.length, + containingReference: addReference(enclosingClass), + kind: kind); + } } else if (element is FunctionElementForLink_Initializer) { return addRawReference('', containingReference: addReference(element.enclosingElement), @@ -1231,6 +1236,7 @@ class CompilationUnitElementInBuildUnit extends CompilationUnitElementForLink { } else if (element is TopLevelVariableElementForLink) { return addRawReference(element.name, dependency: library.addDependency(element.library), + unitNum: element.compilationUnit.unitNum, kind: ReferenceKind.topLevelPropertyAccessor); } else if (element is FieldElementForLink_ClassField) { ClassElementForLink_Class enclosingClass = element.enclosingElement; diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart index faced5377a7..5f1f61958f6 100644 --- a/pkg/analyzer/test/src/summary/resynthesize_common.dart +++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart @@ -1635,6 +1635,14 @@ f() { '''); } + test_closure_in_variable_declaration_in_part() { + addSource('/a.dart', 'part of lib; final f = (int i) => i.toDouble();'); + checkLibrary(''' +library lib; +part "a.dart"; +'''); + } + test_const_invalid_field_const() { variablesWithNotConstInitializers.add('f'); checkLibrary(