@@ -37,20 +37,29 @@ class Package extends LibraryContainer
37
37
CommentReferable ,
38
38
ModelBuilder
39
39
implements Privacy , Documentable {
40
- String _name;
41
- PackageGraph _packageGraph;
40
+ @override
41
+ final String name;
42
+
43
+ @override
44
+ final PackageGraph packageGraph;
42
45
43
46
// Creates a package, if necessary, and adds it to the [packageGraph].
44
47
factory Package .fromPackageMeta (
45
48
PackageMeta packageMeta, PackageGraph packageGraph) {
46
49
var packageName = packageMeta.name;
47
-
48
- var expectNonLocal = false ;
49
-
50
- if (! packageGraph.packageMap.containsKey (packageName) &&
51
- packageGraph.allLibrariesAdded) expectNonLocal = true ;
52
- var package = packageGraph.packageMap.putIfAbsent (packageMeta.name,
53
- () => Package ._(packageMeta.name, packageGraph, packageMeta));
50
+ var expectNonLocal = (! packageGraph.packageMap.containsKey (packageName) &&
51
+ packageGraph.allLibrariesAdded);
52
+ var packagePath = packageGraph.resourceProvider.pathContext
53
+ .canonicalize (packageMeta.dir.path);
54
+ var package = packageGraph.packageMap.putIfAbsent (
55
+ packageMeta.name,
56
+ () => Package ._(
57
+ packageMeta.name,
58
+ packageGraph,
59
+ packageMeta,
60
+ packagePath,
61
+ ),
62
+ );
54
63
// Verify that we don't somehow decide to document locally a package picked
55
64
// up after all documented libraries are added, because that breaks the
56
65
// assumption that we've picked up all documented libraries and packages
@@ -62,7 +71,12 @@ class Package extends LibraryContainer
62
71
return package;
63
72
}
64
73
65
- Package ._(this ._name, this ._packageGraph, this ._packageMeta);
74
+ Package ._(this .name, this .packageGraph, this .packageMeta, this .packagePath)
75
+ : config = DartdocOptionContext .fromContext (
76
+ packageGraph.config,
77
+ packageGraph.resourceProvider.getFolder (packagePath),
78
+ packageGraph.resourceProvider,
79
+ );
66
80
67
81
@override
68
82
bool get isCanonical => true ;
@@ -91,7 +105,7 @@ class Package extends LibraryContainer
91
105
String get homepage => packageMeta.homepage;
92
106
93
107
@override
94
- String get kind => ( isSdk) ? 'SDK' : 'package' ;
108
+ String get kind => isSdk ? 'SDK' : 'package' ;
95
109
96
110
@override
97
111
List <Locatable > get documentationFrom => [this ];
@@ -126,11 +140,10 @@ class Package extends LibraryContainer
126
140
@override
127
141
ModelElement ? get enclosingElement => null ;
128
142
129
- @override
130
-
131
143
/// If we have public libraries, this is the default package, or we are
132
144
/// auto-including dependencies, this package is public.
133
- late final bool isPublic =
145
+ @override
146
+ bool get isPublic =>
134
147
_isLocalPublicByDefault || libraries.any ((l) => l.isPublic);
135
148
136
149
/// Return true if this is the default package, this is part of an embedder
@@ -153,13 +166,13 @@ class Package extends LibraryContainer
153
166
}();
154
167
155
168
/// True if the global config excludes this package by name.
156
- late final bool _isExcluded = packageGraph.config.isPackageExcluded (name);
169
+ bool get _isExcluded => packageGraph.config.isPackageExcluded (name);
157
170
158
171
/// True if this is the package being documented by default, or the
159
172
/// global config indicates we are auto-including dependencies.
160
- late final bool _isLocalPublicByDefault =
161
- ( packageMeta == packageGraph.packageMeta ||
162
- packageGraph.config.autoIncludeDependencies) ;
173
+ bool get _isLocalPublicByDefault =>
174
+ packageMeta == packageGraph.packageMeta ||
175
+ packageGraph.config.autoIncludeDependencies;
163
176
164
177
/// Returns the location of documentation for this package, for linkToRemote
165
178
/// and canonicalization decision making.
@@ -186,10 +199,9 @@ class Package extends LibraryContainer
186
199
// In theory, a remote package could be documented in any supported format.
187
200
// In practice, devs depend on Dart, Flutter, and/or packages fetched
188
201
// from pub.dev, and we know that all of those use html docs.
189
- late final String fileType =
190
- (package.documentedWhere == DocumentLocation .remote)
191
- ? 'html'
192
- : config.format;
202
+ String get fileType => package.documentedWhere == DocumentLocation .remote
203
+ ? 'html'
204
+ : config.format;
193
205
194
206
@override
195
207
String get fullyQualifiedName => 'package:$name ' ;
@@ -240,20 +252,14 @@ class Package extends LibraryContainer
240
252
@override
241
253
String get location => _pathContext.toUri (packageMeta.resolvedDir).toString ();
242
254
243
- @override
244
- String get name => _name;
245
-
246
255
@override
247
256
Package get package => this ;
248
257
249
- @override
250
- PackageGraph get packageGraph => _packageGraph;
251
-
252
258
// Workaround for mustache4dart issue where templates do not recognize
253
259
// inherited properties as being in-context.
254
260
@override
255
261
Iterable <Library > get publicLibraries {
256
- assert (libraries.every ((l) => l.packageMeta == _packageMeta ));
262
+ assert (libraries.every ((l) => l.packageMeta == packageMeta ));
257
263
return super .publicLibraries;
258
264
}
259
265
@@ -371,10 +377,7 @@ class Package extends LibraryContainer
371
377
bool get hasDocumentedCategories => documentedCategories.isNotEmpty;
372
378
373
379
@override
374
- late final DartdocOptionContext config = DartdocOptionContext .fromContext (
375
- packageGraph.config,
376
- packageGraph.resourceProvider.getFolder (packagePath),
377
- packageGraph.resourceProvider);
380
+ final DartdocOptionContext config;
378
381
379
382
/// Is this the package at the top of the list? We display the first
380
383
/// package specially (with "Libraries" rather than the package name).
@@ -385,14 +388,11 @@ class Package extends LibraryContainer
385
388
@override
386
389
bool get isSdk => packageMeta.isSdk;
387
390
388
- late final String packagePath =
389
- _pathContext.canonicalize (packageMeta.dir.path);
391
+ final String packagePath;
390
392
391
393
String get version => packageMeta.version;
392
394
393
- final PackageMeta _packageMeta;
394
-
395
- PackageMeta get packageMeta => _packageMeta;
395
+ final PackageMeta packageMeta;
396
396
397
397
@override
398
398
Element ? get element => null ;
@@ -415,7 +415,7 @@ class Package extends LibraryContainer
415
415
@override
416
416
Iterable <CommentReferable > get referenceParents => [packageGraph];
417
417
418
- p.Context get _pathContext => _packageGraph .resourceProvider.pathContext;
418
+ p.Context get _pathContext => packageGraph .resourceProvider.pathContext;
419
419
420
420
@override
421
421
String get referenceName => 'package:$name ' ;
0 commit comments