Skip to content

Commit f9bc6cb

Browse files
authored
Merge branch 'master' into functiontypes
2 parents 749c368 + 14a99e5 commit f9bc6cb

9 files changed

+165
-98
lines changed

lib/src/html/template_data.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -283,64 +283,64 @@ class FunctionTemplateData extends TemplateData<ModelFunction> {
283283
class MethodTemplateData extends TemplateData<Method> {
284284
final Library library;
285285
final Method method;
286-
final Container clazz;
287-
String container;
286+
final Container container;
287+
String containerDesc;
288288

289289
MethodTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
290-
this.library, this.clazz, this.method)
290+
this.library, this.container, this.method)
291291
: super(htmlOptions, packageGraph) {
292-
container = clazz.isClass ? 'class' : 'extension';
292+
containerDesc = container.isClass ? 'class' : 'extension';
293293
}
294294

295295
@override
296296
Method get self => method;
297297
@override
298-
String get title => '${method.name} method - ${clazz.name} ${container} - '
298+
String get title => '${method.name} method - ${container.name} ${containerDesc} - '
299299
'${library.name} library - Dart API';
300300
@override
301301
String get layoutTitle => _layoutTitle(
302302
method.nameWithGenerics, method.fullkind, method.isDeprecated);
303303
@override
304304
String get metaDescription =>
305-
'API docs for the ${method.name} method from the ${clazz.name} ${container}, '
305+
'API docs for the ${method.name} method from the ${container.name} ${containerDesc}, '
306306
'for the Dart programming language.';
307307
@override
308308
List get navLinks => [packageGraph.defaultPackage, library];
309309
@override
310-
List get navLinksWithGenerics => [clazz];
310+
List get navLinksWithGenerics => [container];
311311
@override
312312
String get htmlBase => '../..';
313313
}
314314

315315
class PropertyTemplateData extends TemplateData<Field> {
316316
final Library library;
317-
final Container clazz;
317+
final Container container;
318318
final Field property;
319-
String container;
319+
String containerDesc;
320320

321321
PropertyTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
322-
this.library, this.clazz, this.property)
322+
this.library, this.container, this.property)
323323
: super(htmlOptions, packageGraph) {
324-
container = clazz.isClass ? 'class' : 'extension';
324+
containerDesc = container.isClass ? 'class' : 'extension';
325325
}
326326

327327
@override
328328
Field get self => property;
329329

330330
@override
331-
String get title => '${property.name} $type - ${clazz.name} ${container} - '
331+
String get title => '${property.name} $type - ${container.name} ${containerDesc} - '
332332
'${library.name} library - Dart API';
333333
@override
334334
String get layoutTitle =>
335335
_layoutTitle(property.name, type, property.isDeprecated);
336336
@override
337337
String get metaDescription =>
338-
'API docs for the ${property.name} $type from the ${clazz.name} ${container}, '
338+
'API docs for the ${property.name} $type from the ${container.name} ${containerDesc}, '
339339
'for the Dart programming language.';
340340
@override
341341
List get navLinks => [packageGraph.defaultPackage, library];
342342
@override
343-
List get navLinksWithGenerics => [clazz];
343+
List get navLinksWithGenerics => [container];
344344
@override
345345
String get htmlBase => '../..';
346346

@@ -349,8 +349,8 @@ class PropertyTemplateData extends TemplateData<Field> {
349349

350350
class ConstantTemplateData extends PropertyTemplateData {
351351
ConstantTemplateData(HtmlOptions htmlOptions, PackageGraph packageGraph,
352-
Library library, Container clazz, Field property)
353-
: super(htmlOptions, packageGraph, library, clazz, property);
352+
Library library, Container container, Field property)
353+
: super(htmlOptions, packageGraph, library, container, property);
354354

355355
@override
356356
String get type => 'constant';

lib/src/html/templates.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const _partials = <String>[
3131
'search_sidebar',
3232
'sidebar_for_class',
3333
'sidebar_for_category',
34+
'sidebar_for_container',
3435
'sidebar_for_enum',
3536
'sidebar_for_extension',
3637
'source_code',

lib/src/model.dart

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,14 @@ import 'package:analyzer/src/dart/analysis/file_state.dart';
3232
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
3333
import 'package:analyzer/src/dart/element/element.dart';
3434
import 'package:analyzer/src/dart/element/handle.dart';
35+
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
3536
import 'package:analyzer/src/dart/element/member.dart'
3637
show ExecutableMember, Member, ParameterMember;
3738
import 'package:analyzer/src/dart/sdk/sdk.dart';
3839
import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult;
3940
import 'package:analyzer/src/generated/java_io.dart';
4041
import 'package:analyzer/src/generated/resolver.dart'
41-
show
42-
Namespace,
43-
NamespaceBuilder,
44-
InheritanceManager; // ignore: deprecated_member_use
42+
show Namespace, NamespaceBuilder;
4543
import 'package:analyzer/src/generated/sdk.dart';
4644
import 'package:analyzer/src/generated/source.dart';
4745
import 'package:analyzer/src/generated/source_io.dart';
@@ -1122,14 +1120,25 @@ class Class extends Container
11221120

11231121
List<ExecutableElement> get _inheritedElements {
11241122
if (__inheritedElements == null) {
1125-
Map<String, ExecutableElement> cmap = definingLibrary.inheritanceManager
1126-
.getMembersInheritedFromClasses(// ignore: deprecated_member_use
1127-
element);
1128-
Map<String, ExecutableElement> imap = definingLibrary.inheritanceManager
1129-
.getMembersInheritedFromInterfaces(// ignore: deprecated_member_use
1130-
element);
1131-
__inheritedElements = List.from(cmap.values)
1132-
..addAll(imap.values.where((e) => !cmap.containsKey(e.name)));
1123+
var classElement = element as ClassElement;
1124+
var classType = classElement.type;
1125+
if (classType.isObject) {
1126+
return __inheritedElements = <ExecutableElement>[];
1127+
}
1128+
1129+
var inheritance = definingLibrary.inheritanceManager;
1130+
var cmap = inheritance.getInheritedConcreteMap(classType);
1131+
var imap = inheritance.getInheritedMap(classType);
1132+
1133+
var combinedMap = <String, ExecutableElement>{};
1134+
for (var nameObj in cmap.keys) {
1135+
combinedMap[nameObj.name] = cmap[nameObj];
1136+
}
1137+
for (var nameObj in imap.keys) {
1138+
combinedMap[nameObj.name] ??= imap[nameObj];
1139+
}
1140+
1141+
__inheritedElements = combinedMap.values.toList();
11331142
}
11341143
return __inheritedElements;
11351144
}
@@ -2595,14 +2604,12 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
25952604
return '${package.baseHref}${library.dirName}/$fileName';
25962605
}
25972606

2598-
// ignore: deprecated_member_use
2599-
InheritanceManager _inheritanceManager;
2607+
InheritanceManager3 _inheritanceManager;
26002608

2601-
// ignore: deprecated_member_use
2602-
InheritanceManager get inheritanceManager {
2609+
InheritanceManager3 get inheritanceManager {
26032610
if (_inheritanceManager == null) {
2604-
// ignore: deprecated_member_use
2605-
_inheritanceManager = InheritanceManager(element);
2611+
var typeSystem = element.context.typeSystem;
2612+
_inheritanceManager = InheritanceManager3(typeSystem);
26062613
}
26072614
return _inheritanceManager;
26082615
}
@@ -2786,23 +2793,19 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
27862793
static String getLibraryName(LibraryElement element) {
27872794
var source = element.source;
27882795

2789-
String name = element.name;
2790-
if (name == null || name.isEmpty) {
2791-
// handle the case of an anonymous library
2792-
name = path.basename(source.fullName);
2793-
2794-
if (name.endsWith('.dart')) {
2795-
name = name.substring(0, name.length - '.dart'.length);
2796-
}
2796+
if (source.uri.isScheme('dart')) {
2797+
return '${source.uri}';
27972798
}
27982799

2799-
// So, if the library is a system library, it's name is not
2800-
// dart:___, it's dart.___. Apparently the way to get to the dart:___
2801-
// name is to get source.encoding.
2802-
// This may be wrong or misleading, but developers expect the name
2803-
// of dart:____
2804-
name = source.isInSystemLibrary ? source.encoding : name;
2800+
var name = element.name;
2801+
if (name != null && name.isNotEmpty) {
2802+
return name;
2803+
}
28052804

2805+
name = path.basename(source.fullName);
2806+
if (name.endsWith('.dart')) {
2807+
name = name.substring(0, name.length - '.dart'.length);
2808+
}
28062809
return name;
28072810
}
28082811

lib/templates/_sidebar_for_class.html

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<ol>
22
{{#clazz}}
33

4-
{{#isClass}}
54
{{#hasPublicConstructors}}
65
<li class="section-title"><a href="{{{href}}}#constructors">Constructors</a></li>
76
{{#publicConstructors}}
@@ -52,52 +51,6 @@
5251
<li>{{{linkedName}}}</li>
5352
{{/publicConstants}}
5453
{{/hasPublicConstants}}
55-
{{/isClass}}
56-
57-
{{#isExtension}}
58-
{{#hasPublicProperties}}
59-
<li class="section-title"> <a href="{{{href}}}#instance-properties">Properties</a>
60-
</li>
61-
{{#allPublicInstanceProperties}}
62-
<li>{{{ linkedName }}}</li>
63-
{{/allPublicInstanceProperties}}
64-
{{/hasPublicProperties}}
65-
66-
{{#hasPublicMethods}}
67-
<li class="section-title"><a href="{{{href}}}#instance-methods">Methods</a></li>
68-
{{#allPublicInstanceMethods}}
69-
<li>{{{ linkedName }}}</li>
70-
{{/allPublicInstanceMethods}}
71-
{{/hasPublicMethods}}
72-
73-
{{#hasPublicOperators}}
74-
<li class="section-title"><a href="{{{href}}}#operators">Operators</a></li>
75-
{{#allPublicOperators}}
76-
<li>{{{ linkedName }}}</li>
77-
{{/allPublicOperators}}
78-
{{/hasPublicOperators}}
79-
80-
{{#hasPublicStaticProperties}}
81-
<li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
82-
{{#publicStaticProperties}}
83-
<li>{{{ linkedName }}}</li>
84-
{{/publicStaticProperties}}
85-
{{/hasPublicStaticProperties}}
86-
87-
{{#hasPublicStaticMethods}}
88-
<li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
89-
{{#publicStaticMethods}}
90-
<li>{{{ linkedName }}}</li>
91-
{{/publicStaticMethods}}
92-
{{/hasPublicStaticMethods}}
93-
94-
{{#hasPublicConstants}}
95-
<li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
96-
{{#publicConstants}}
97-
<li>{{{linkedName}}}</li>
98-
{{/publicConstants}}
99-
{{/hasPublicConstants}}
100-
{{/isExtension}}
10154

10255
{{/clazz}}
10356
</ol>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<ol>
2+
{{#container}}
3+
4+
{{#isClass}}
5+
{{#hasPublicConstructors}}
6+
<li class="section-title"><a href="{{{href}}}#constructors">Constructors</a></li>
7+
{{#publicConstructors}}
8+
<li><a{{#isDeprecated}} class="deprecated"{{/isDeprecated}} href="{{{href}}}">{{shortName}}</a></li>
9+
{{/publicConstructors}}
10+
{{/hasPublicConstructors}}
11+
12+
{{#hasPublicProperties}}
13+
<li class="section-title{{ #allPublicInstancePropertiesInherited }} inherited{{ /allPublicInstancePropertiesInherited }}">
14+
<a href="{{{href}}}#instance-properties">Properties</a>
15+
</li>
16+
{{#allPublicInstanceProperties}}
17+
<li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
18+
{{/allPublicInstanceProperties}}
19+
{{/hasPublicProperties}}
20+
21+
{{#hasPublicMethods}}
22+
<li class="section-title{{ #allPublicInstanceMethodsInherited }} inherited{{ /allPublicInstanceMethodsInherited }}"><a href="{{{href}}}#instance-methods">Methods</a></li>
23+
{{#allPublicInstanceMethods}}
24+
<li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
25+
{{/allPublicInstanceMethods}}
26+
{{/hasPublicMethods}}
27+
28+
{{#hasPublicOperators}}
29+
<li class="section-title{{ #allPublicOperatorsInherited }} inherited{{ /allPublicOperatorsInherited}}"><a href="{{{href}}}#operators">Operators</a></li>
30+
{{#allPublicOperators}}
31+
<li{{ #isInherited }} class="inherited"{{ /isInherited}}>{{{ linkedName }}}</li>
32+
{{/allPublicOperators}}
33+
{{/hasPublicOperators}}
34+
35+
{{#hasPublicStaticProperties}}
36+
<li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
37+
{{#publicStaticProperties}}
38+
<li>{{{ linkedName }}}</li>
39+
{{/publicStaticProperties}}
40+
{{/hasPublicStaticProperties}}
41+
42+
{{#hasPublicStaticMethods}}
43+
<li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
44+
{{#publicStaticMethods}}
45+
<li>{{{ linkedName }}}</li>
46+
{{/publicStaticMethods}}
47+
{{/hasPublicStaticMethods}}
48+
49+
{{#hasPublicConstants}}
50+
<li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
51+
{{#publicConstants}}
52+
<li>{{{linkedName}}}</li>
53+
{{/publicConstants}}
54+
{{/hasPublicConstants}}
55+
{{/isClass}}
56+
57+
{{#isExtension}}
58+
{{#hasPublicProperties}}
59+
<li class="section-title"> <a href="{{{href}}}#instance-properties">Properties</a>
60+
</li>
61+
{{#allPublicInstanceProperties}}
62+
<li>{{{ linkedName }}}</li>
63+
{{/allPublicInstanceProperties}}
64+
{{/hasPublicProperties}}
65+
66+
{{#hasPublicMethods}}
67+
<li class="section-title"><a href="{{{href}}}#instance-methods">Methods</a></li>
68+
{{#allPublicInstanceMethods}}
69+
<li>{{{ linkedName }}}</li>
70+
{{/allPublicInstanceMethods}}
71+
{{/hasPublicMethods}}
72+
73+
{{#hasPublicOperators}}
74+
<li class="section-title"><a href="{{{href}}}#operators">Operators</a></li>
75+
{{#allPublicOperators}}
76+
<li>{{{ linkedName }}}</li>
77+
{{/allPublicOperators}}
78+
{{/hasPublicOperators}}
79+
80+
{{#hasPublicStaticProperties}}
81+
<li class="section-title"><a href="{{{href}}}#static-properties">Static properties</a></li>
82+
{{#publicStaticProperties}}
83+
<li>{{{ linkedName }}}</li>
84+
{{/publicStaticProperties}}
85+
{{/hasPublicStaticProperties}}
86+
87+
{{#hasPublicStaticMethods}}
88+
<li class="section-title"><a href="{{{href}}}#static-methods">Static methods</a></li>
89+
{{#publicStaticMethods}}
90+
<li>{{{ linkedName }}}</li>
91+
{{/publicStaticMethods}}
92+
{{/hasPublicStaticMethods}}
93+
94+
{{#hasPublicConstants}}
95+
<li class="section-title"><a href="{{{href}}}#constants">Constants</a></li>
96+
{{#publicConstants}}
97+
<li>{{{linkedName}}}</li>
98+
{{/publicConstants}}
99+
{{/hasPublicConstants}}
100+
{{/isExtension}}
101+
102+
{{/container}}
103+
</ol>

lib/templates/constant.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
44
{{>search_sidebar}}
55
<h5>{{parent.name}} {{parent.kind}}</h5>
6-
{{>sidebar_for_class}}
6+
{{>sidebar_for_container}}
77
</div><!--/.sidebar-offcanvas-left-->
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">

lib/templates/method.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
44
{{>search_sidebar}}
55
<h5>{{parent.name}} {{parent.kind}}</h5>
6-
{{>sidebar_for_class}}
6+
{{>sidebar_for_container}}
77
</div><!--/.sidebar-offcanvas-->
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">

lib/templates/property.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
44
{{>search_sidebar}}
55
<h5>{{parent.name}} {{parent.kind}}</h5>
6-
{{>sidebar_for_class}}
6+
{{>sidebar_for_container}}
77
</div><!--/.sidebar-offcanvas-->
88

99
<div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">

0 commit comments

Comments
 (0)