Skip to content

Commit d943ba3

Browse files
committed
Elements. Migrate to Element2
1 parent 5e26cb6 commit d943ba3

File tree

7 files changed

+67
-66
lines changed

7 files changed

+67
-66
lines changed

lib/src/model/library.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:analyzer/dart/element/scope.dart';
1111
import 'package:analyzer/source/line_info.dart';
1212
// ignore: implementation_imports
1313
import 'package:analyzer/src/dart/element/element.dart';
14+
// ignore: implementation_imports
1415
import 'package:dartdoc/src/model/comment_referable.dart';
1516
import 'package:dartdoc/src/model/kind.dart';
1617
import 'package:dartdoc/src/model/model.dart';
@@ -315,7 +316,7 @@ class Library extends ModelElement
315316

316317
/// The real packageMeta, as opposed to the package we are documenting with.
317318
late final PackageMeta? packageMeta =
318-
packageGraph.packageMetaProvider.fromElement(element2, config.sdkDir);
319+
packageGraph.packageMetaProvider.fromElement(element as LibraryElementImpl, config.sdkDir);
319320

320321
late final List<Class> classesAndExceptions = [
321322
..._localElementsOfType<ClassElement, Class>(),

lib/src/warnings.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import 'dart:io';
88
import 'dart:math' as math;
99

1010
import 'package:analyzer/dart/element/element.dart';
11+
import 'package:analyzer/dart/element/element2.dart';
1112
import 'package:analyzer/file_system/file_system.dart';
13+
// ignore: implementation_imports
14+
import 'package:analyzer/src/utilities/extensions/element.dart';
1215
import 'package:collection/collection.dart';
1316
import 'package:dartdoc/src/dartdoc_options.dart';
1417
import 'package:dartdoc/src/logging.dart';
@@ -498,6 +501,13 @@ class PackageWarningCounter {
498501
UnmodifiableMapView<Element?, Map<PackageWarning, Set<String>>>
499502
get countedWarnings => UnmodifiableMapView(_countedWarnings);
500503

504+
/// An unmodifiable map view of all counted warnings related by their element,
505+
/// warning type, and message.
506+
UnmodifiableMapView<Element2?, Map<PackageWarning, Set<String>>>
507+
get countedWarnings2 => UnmodifiableMapView(_countedWarnings.map((key,
508+
value) =>
509+
MapEntry(key != null ? (key.asElement2 as Element2) : null, value)));
510+
501511
PackageWarningCounter(this.packageGraph);
502512

503513
/// Logs [packageWarning].

test/documentation_comment_test.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'package:analyzer/file_system/file_system.dart';
86
import 'package:dartdoc/src/dartdoc_options.dart';
97
import 'package:dartdoc/src/model/model.dart';
@@ -30,7 +28,7 @@ class DocumentationCommentTest extends DartdocTestBase {
3028
late ModelElement libraryModel;
3129

3230
void expectNoWarnings() {
33-
expect(packageGraph.packageWarningCounter.countedWarnings, isEmpty);
31+
expect(packageGraph.packageWarningCounter.countedWarnings2, isEmpty);
3432
expect(packageGraph.packageWarningCounter.hasWarnings, isFalse);
3533
}
3634

@@ -863,7 +861,7 @@ class _HasWarning extends Matcher {
863861
Map<Object?, Object?> matchState, bool verbose) {
864862
if (actual is ModelElement) {
865863
var warnings = actual
866-
.packageGraph.packageWarningCounter.countedWarnings[actual.element];
864+
.packageGraph.packageWarningCounter.countedWarnings2[actual.element2];
867865
if (warnings == null) {
868866
return mismatchDescription.add('has no warnings');
869867
}

test/end2end/dartdoc_test.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'dart:async';
86

97
import 'package:analyzer/file_system/file_system.dart';
@@ -84,7 +82,7 @@ void main() {
8482
await buildDartdoc(['--allow-tools'], testPackageToolError, tempDir);
8583
var results = await dartdoc.generateDocsBase();
8684
var p = results.packageGraph;
87-
var unresolvedToolErrors = p.packageWarningCounter.countedWarnings.values
85+
var unresolvedToolErrors = p.packageWarningCounter.countedWarnings2.values
8886
.map((e) => e[PackageWarning.toolError] ?? {})
8987
.expand((element) => element);
9088

test/mustachio/runtime_renderer_builder_test.dart

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,21 @@
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-
// ignore_for_file: analyzer_use_new_elements
6-
75
@TestOn('vm && !windows')
86
@Timeout.factor(2)
97
library;
108

119
import 'dart:io';
1210

13-
import 'package:analyzer/dart/element/element.dart';
11+
import 'package:analyzer/dart/element/element2.dart';
1412
import 'package:test/test.dart';
1513
import 'package:test_descriptor/test_descriptor.dart' as d;
1614

1715
import 'builder_test_base.dart';
1816

1917
void main() {
2018
group('builds a renderer class', () {
21-
late final LibraryElement renderersLibrary;
19+
late final LibraryElement2 renderersLibrary;
2220
late final String generatedContent;
2321

2422
// Builders are fairly expensive (about 4 seconds per `testBuilder` call),
@@ -42,7 +40,7 @@ abstract class Foo extends FooBase with Mix<int> {
4240
class Bar {}
4341
class Baz {}
4442
''');
45-
renderersLibrary = await resolveGeneratedLibrary(runtimeRenderersPath);
43+
renderersLibrary = await resolveGeneratedLibrary2(runtimeRenderersPath);
4644
generatedContent = await File(runtimeRenderersPath).readAsString();
4745
});
4846

@@ -63,23 +61,23 @@ class Baz {}
6361
test('for a class which is extended by a rendered class', () {
6462
// No render function is necessary.
6563
expect(renderersLibrary.getTopLevelFunction('_render_FooBase'), isNull);
66-
expect(renderersLibrary.getClass('_Renderer_FooBase'), isNotNull);
64+
expect(renderersLibrary.getClass2('_Renderer_FooBase'), isNotNull);
6765
});
6866

6967
test('for a class which is mixed into a rendered class', () {
7068
// No render function is necessary.
7169
expect(renderersLibrary.getTopLevelFunction('_render_Mix'), isNull);
72-
expect(renderersLibrary.getClass('_Renderer_Mix'), isNotNull);
70+
expect(renderersLibrary.getClass2('_Renderer_Mix'), isNotNull);
7371
});
7472

7573
test('for a type found in a getter', () {
7674
expect(renderersLibrary.getTopLevelFunction('_render_Bar'), isNotNull);
77-
expect(renderersLibrary.getClass('_Renderer_Bar'), isNotNull);
75+
expect(renderersLibrary.getClass2('_Renderer_Bar'), isNotNull);
7876
});
7977

8078
test('for a generic, bounded type found in a getter', () {
8179
expect(renderersLibrary.getTopLevelFunction('_render_Baz'), isNotNull);
82-
expect(renderersLibrary.getClass('_Renderer_Baz'), isNotNull);
80+
expect(renderersLibrary.getClass2('_Renderer_Baz'), isNotNull);
8381
});
8482

8583
test('with a property map', () {
@@ -190,12 +188,12 @@ class Baz {}
190188
library foo;
191189
import 'annotations.dart';
192190
''');
193-
var renderersLibrary = await resolveGeneratedLibrary(runtimeRenderersPath);
191+
var renderersLibrary = await resolveGeneratedLibrary2(runtimeRenderersPath);
194192

195193
expect(renderersLibrary.getTopLevelFunction('renderFoo'), isNotNull);
196194
expect(renderersLibrary.getTopLevelFunction('renderBar'), isNotNull);
197-
expect(renderersLibrary.getClass('_Renderer_Foo'), isNotNull);
198-
expect(renderersLibrary.getClass('_Renderer_Bar'), isNotNull);
195+
expect(renderersLibrary.getClass2('_Renderer_Foo'), isNotNull);
196+
expect(renderersLibrary.getClass2('_Renderer_Bar'), isNotNull);
199197
});
200198

201199
group('builds a renderer class for a generic type', () {
@@ -267,21 +265,21 @@ class Foo<T extends num> {
267265
class Bar {}
268266
class Baz {}
269267
''');
270-
var renderersLibrary = await resolveGeneratedLibrary(runtimeRenderersPath);
268+
var renderersLibrary = await resolveGeneratedLibrary2(runtimeRenderersPath);
271269

272270
var fooRenderFunction = renderersLibrary.getTopLevelFunction('renderFoo')!;
273-
expect(fooRenderFunction.typeParameters, hasLength(1));
274-
var fBound = fooRenderFunction.typeParameters.single.bound!;
271+
expect(fooRenderFunction.typeParameters2, hasLength(1));
272+
var fBound = fooRenderFunction.typeParameters2.single.bound!;
275273
expect(fBound.getDisplayString(), equals('num'));
276274

277-
var fooRendererClass = renderersLibrary.getClass('_Renderer_Foo')!;
278-
expect(fooRendererClass.typeParameters, hasLength(1));
279-
var cBound = fooRenderFunction.typeParameters.single.bound!;
275+
var fooRendererClass = renderersLibrary.getClass2('_Renderer_Foo')!;
276+
expect(fooRendererClass.typeParameters2, hasLength(1));
277+
var cBound = fooRenderFunction.typeParameters2.single.bound!;
280278
expect(cBound.getDisplayString(), equals('num'));
281279
});
282280

283281
group('does not generate a renderer', () {
284-
late final LibraryElement renderersLibrary;
282+
late final LibraryElement2 renderersLibrary;
285283

286284
setUpAll(() async {
287285
await testMustachioBuilder('''
@@ -299,32 +297,32 @@ class Private {}
299297
class Setter {}
300298
class Method {}
301299
''');
302-
renderersLibrary = await resolveGeneratedLibrary(runtimeRenderersPath);
300+
renderersLibrary = await resolveGeneratedLibrary2(runtimeRenderersPath);
303301
});
304302

305303
test('found in a static getter', () {
306304
expect(renderersLibrary.getTopLevelFunction('_render_Static'), isNull);
307-
expect(renderersLibrary.getClass('_Renderer_Static'), isNull);
305+
expect(renderersLibrary.getClass2('_Renderer_Static'), isNull);
308306
});
309307

310308
test('found in a private getter', () {
311309
expect(renderersLibrary.getTopLevelFunction('_render_Private'), isNull);
312-
expect(renderersLibrary.getClass('_Renderer_Private'), isNull);
310+
expect(renderersLibrary.getClass2('_Renderer_Private'), isNull);
313311
});
314312

315313
test('found in a setter', () {
316314
expect(renderersLibrary.getTopLevelFunction('_render_Setter'), isNull);
317-
expect(renderersLibrary.getClass('_Renderer_Setter'), isNull);
315+
expect(renderersLibrary.getClass2('_Renderer_Setter'), isNull);
318316
});
319317

320318
test('found in a method', () {
321319
expect(renderersLibrary.getTopLevelFunction('_render_Method'), isNull);
322-
expect(renderersLibrary.getClass('_Renderer_Method'), isNull);
320+
expect(renderersLibrary.getClass2('_Renderer_Method'), isNull);
323321
});
324322

325323
test('for types not @visibleToMustache', () {
326324
expect(renderersLibrary.getTopLevelFunction('_render_String'), isNull);
327-
expect(renderersLibrary.getClass('_Renderer_String'), isNull);
325+
expect(renderersLibrary.getClass2('_Renderer_String'), isNull);
328326
});
329327
});
330328
}

test/src/utils.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'dart:io';
86

97
import 'package:analyzer/file_system/file_system.dart';

tool/mustachio/codegen_aot_compiler.dart

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
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-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'dart:io';
86

9-
import 'package:analyzer/dart/element/element.dart';
7+
import 'package:analyzer/dart/element/element2.dart';
108
import 'package:analyzer/dart/element/type.dart';
119
import 'package:analyzer/dart/element/type_provider.dart';
1210
import 'package:analyzer/dart/element/type_system.dart';
@@ -217,22 +215,22 @@ Future<String> _redirectingMethod(
217215
var buffer = StringBuffer()..write('String ${compiler._rendererName}');
218216

219217
buffer.writeTypeParameters(
220-
compiler._usedContextStack.expand((c) => c.type.element.typeParameters));
218+
compiler._usedContextStack.expand((c) => c.type.element3.typeParameters2));
221219
buffer.write('(');
222220

223221
for (var context in compiler._usedContextStack) {
224-
var contextElement = context.type.element;
222+
var contextElement = context.type.element3;
225223
buffer.write(contextElement.displayName);
226-
if (contextElement.typeParameters.isNotEmpty) {
224+
if (contextElement.typeParameters2.isNotEmpty) {
227225
buffer.write('<');
228226
}
229-
for (var tp in contextElement.typeParameters) {
230-
buffer.write(tp.name);
231-
if (tp != contextElement.typeParameters.last) {
227+
for (var tp in contextElement.typeParameters2) {
228+
buffer.write(tp.name3);
229+
if (tp != contextElement.typeParameters2.last) {
232230
buffer.write(', ');
233231
}
234232
}
235-
if (contextElement.typeParameters.isNotEmpty) {
233+
if (contextElement.typeParameters2.isNotEmpty) {
236234
buffer.write('>');
237235
}
238236
buffer.write(' ${context.name}');
@@ -372,27 +370,27 @@ class _AotCompiler {
372370
// this should be perfectly possible.
373371

374372
var referenceElements = buffer.writeTypeParameters(
375-
_usedContexts.expand((c) => c.type.element.typeParameters),
373+
_usedContexts.expand((c) => c.type.element3.typeParameters2),
376374
);
377375
for (var element in referenceElements) {
378376
referenceUris.add(_elementUri(element));
379377
}
380378
buffer.write('(');
381379

382380
for (var context in _usedContexts) {
383-
var contextElement = context.type.element;
381+
var contextElement = context.type.element3;
384382
referenceUris.add(_elementUri(contextElement));
385383
buffer.write(contextElement.displayName);
386-
if (contextElement.typeParameters.isNotEmpty) {
384+
if (contextElement.typeParameters2.isNotEmpty) {
387385
buffer.write('<');
388386
}
389-
for (var tp in contextElement.typeParameters) {
390-
buffer.write(tp.name);
391-
if (tp != contextElement.typeParameters.last) {
387+
for (var tp in contextElement.typeParameters2) {
388+
buffer.write(tp.name3);
389+
if (tp != contextElement.typeParameters2.last) {
392390
buffer.write(', ');
393391
}
394392
}
395-
if (contextElement.typeParameters.isNotEmpty) {
393+
if (contextElement.typeParameters2.isNotEmpty) {
396394
buffer.write('>');
397395
}
398396
buffer.write(' ${context.name}');
@@ -410,9 +408,9 @@ class _AotCompiler {
410408
}
411409

412410
/// Returns the URI of [element] for use in generated import directives.
413-
String _elementUri(Element element) {
414-
var libraryElement = element.library!;
415-
var libraryUri = libraryElement.source.uri;
411+
String _elementUri(Element2 element) {
412+
var libraryElement = element.library2!;
413+
var libraryUri = libraryElement.firstFragment.source.uri;
416414
if (libraryUri.scheme == 'file') {
417415
return path.relative(libraryUri.path,
418416
from: path.absolute(path.dirname(_buildData._sourcePath)));
@@ -581,8 +579,8 @@ class _BlockCompiler {
581579
// for [Iterable], and then use [DartType.asInstanceOf] to ultimately
582580
// determine that the inner type of the loop is, for example,
583581
// `Future<int>`.
584-
var iterableElement = typeProvider.iterableElement;
585-
var iterableType = variableLookup.type.asInstanceOf(iterableElement)!;
582+
var iterableElement = typeProvider.iterableElement2;
583+
var iterableType = variableLookup.type.asInstanceOf2(iterableElement)!;
586584
var innerContextType = iterableType.typeArguments.first as InterfaceType;
587585
var innerContext = _VariableLookup(innerContextType, newContextName);
588586
_contextStack.push(innerContext);
@@ -638,9 +636,9 @@ class _BlockCompiler {
638636
var primaryName = key[0];
639637

640638
late _VariableLookup context;
641-
PropertyAccessorElement? getter;
639+
GetterElement? getter;
642640
for (var c in _contextStack) {
643-
getter = c.type.lookUpGetter2(primaryName, contextType.element.library);
641+
getter = c.type.lookUpGetter3(primaryName, contextType.element3.library2);
644642
if (getter != null) {
645643
context = c;
646644
_usedContextTypes.add(c);
@@ -665,7 +663,7 @@ class _BlockCompiler {
665663
: '${context.name}.$primaryName';
666664
var remainingNames = [...key.skip(1)];
667665
for (var secondaryKey in remainingNames) {
668-
getter = type.lookUpGetter2(secondaryKey, type.element.library);
666+
getter = type.lookUpGetter3(secondaryKey, type.element3.library2);
669667
if (getter == null) {
670668
throw MustachioResolutionException(node.keySpan.message(
671669
"Failed to resolve '$secondaryKey' on ${context.type} while "
@@ -923,9 +921,9 @@ extension<T> on List<T> {
923921
}
924922

925923
extension on StringBuffer {
926-
Set<Element> writeTypeParameters(
927-
Iterable<TypeParameterElement> typeParameters) {
928-
var referencedElements = <Element>{};
924+
Set<Element2> writeTypeParameters(
925+
Iterable<TypeParameterElement2> typeParameters) {
926+
var referencedElements = <Element2>{};
929927
var hasTypeParameters = false;
930928
for (var typeParameter in typeParameters) {
931929
if (!hasTypeParameters) {
@@ -937,11 +935,11 @@ extension on StringBuffer {
937935

938936
var bound = typeParameter.bound;
939937
if (bound == null) {
940-
write(typeParameter.name);
938+
write(typeParameter.name3);
941939
} else {
942-
var boundElement = bound.documentableElement!;
940+
var boundElement = bound.documentableElement2!;
943941
referencedElements.add(boundElement);
944-
write('${typeParameter.name} extends ${boundElement.name!}');
942+
write('${typeParameter.name3} extends ${boundElement.name3!}');
945943
}
946944
}
947945
if (hasTypeParameters) {

0 commit comments

Comments
 (0)