Skip to content

Commit 227e90a

Browse files
srawlinsklr981
authored andcommitted
Simplify some fields and getters in Package (dart-lang#3104)
1 parent c87496f commit 227e90a

File tree

3 files changed

+42
-44
lines changed

3 files changed

+42
-44
lines changed

lib/src/dartdoc_options.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,8 +1266,8 @@ class DartdocOptionContext extends DartdocOptionContextBase
12661266
late final Set<String> exclude =
12671267
Set.of(optionSet['exclude'].valueAt(context));
12681268

1269-
List<String> get excludePackages =>
1270-
optionSet['excludePackages'].valueAt(context);
1269+
Set<String> get _excludePackages =>
1270+
{...optionSet['excludePackages'].valueAt(context)};
12711271

12721272
String? get flutterRoot => optionSet['flutterRoot'].valueAt(context);
12731273

@@ -1331,8 +1331,7 @@ class DartdocOptionContext extends DartdocOptionContextBase
13311331
bool isLibraryExcluded(String name) =>
13321332
exclude.any((pattern) => name == pattern);
13331333

1334-
bool isPackageExcluded(String name) =>
1335-
excludePackages.any((pattern) => name == pattern);
1334+
bool isPackageExcluded(String name) => _excludePackages.contains(name);
13361335

13371336
bool get showStats => optionSet['showStats'].valueAt(context);
13381337

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15810,7 +15810,6 @@ const _invisibleGetters = {
1581015810
'examplePathPrefix',
1581115811
'exclude',
1581215812
'excludeFooterVersion',
15813-
'excludePackages',
1581415813
'flutterRoot',
1581515814
'format',
1581615815
'hashCode',

lib/src/model/package.dart

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,29 @@ class Package extends LibraryContainer
3737
CommentReferable,
3838
ModelBuilder
3939
implements Privacy, Documentable {
40-
String _name;
41-
PackageGraph _packageGraph;
40+
@override
41+
final String name;
42+
43+
@override
44+
final PackageGraph packageGraph;
4245

4346
// Creates a package, if necessary, and adds it to the [packageGraph].
4447
factory Package.fromPackageMeta(
4548
PackageMeta packageMeta, PackageGraph packageGraph) {
4649
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+
);
5463
// Verify that we don't somehow decide to document locally a package picked
5564
// up after all documented libraries are added, because that breaks the
5665
// assumption that we've picked up all documented libraries and packages
@@ -62,7 +71,12 @@ class Package extends LibraryContainer
6271
return package;
6372
}
6473

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+
);
6680

6781
@override
6882
bool get isCanonical => true;
@@ -91,7 +105,7 @@ class Package extends LibraryContainer
91105
String get homepage => packageMeta.homepage;
92106

93107
@override
94-
String get kind => (isSdk) ? 'SDK' : 'package';
108+
String get kind => isSdk ? 'SDK' : 'package';
95109

96110
@override
97111
List<Locatable> get documentationFrom => [this];
@@ -126,11 +140,10 @@ class Package extends LibraryContainer
126140
@override
127141
ModelElement? get enclosingElement => null;
128142

129-
@override
130-
131143
/// If we have public libraries, this is the default package, or we are
132144
/// auto-including dependencies, this package is public.
133-
late final bool isPublic =
145+
@override
146+
bool get isPublic =>
134147
_isLocalPublicByDefault || libraries.any((l) => l.isPublic);
135148

136149
/// Return true if this is the default package, this is part of an embedder
@@ -153,13 +166,13 @@ class Package extends LibraryContainer
153166
}();
154167

155168
/// 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);
157170

158171
/// True if this is the package being documented by default, or the
159172
/// 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;
163176

164177
/// Returns the location of documentation for this package, for linkToRemote
165178
/// and canonicalization decision making.
@@ -186,10 +199,9 @@ class Package extends LibraryContainer
186199
// In theory, a remote package could be documented in any supported format.
187200
// In practice, devs depend on Dart, Flutter, and/or packages fetched
188201
// 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;
193205

194206
@override
195207
String get fullyQualifiedName => 'package:$name';
@@ -240,20 +252,14 @@ class Package extends LibraryContainer
240252
@override
241253
String get location => _pathContext.toUri(packageMeta.resolvedDir).toString();
242254

243-
@override
244-
String get name => _name;
245-
246255
@override
247256
Package get package => this;
248257

249-
@override
250-
PackageGraph get packageGraph => _packageGraph;
251-
252258
// Workaround for mustache4dart issue where templates do not recognize
253259
// inherited properties as being in-context.
254260
@override
255261
Iterable<Library> get publicLibraries {
256-
assert(libraries.every((l) => l.packageMeta == _packageMeta));
262+
assert(libraries.every((l) => l.packageMeta == packageMeta));
257263
return super.publicLibraries;
258264
}
259265

@@ -371,10 +377,7 @@ class Package extends LibraryContainer
371377
bool get hasDocumentedCategories => documentedCategories.isNotEmpty;
372378

373379
@override
374-
late final DartdocOptionContext config = DartdocOptionContext.fromContext(
375-
packageGraph.config,
376-
packageGraph.resourceProvider.getFolder(packagePath),
377-
packageGraph.resourceProvider);
380+
final DartdocOptionContext config;
378381

379382
/// Is this the package at the top of the list? We display the first
380383
/// package specially (with "Libraries" rather than the package name).
@@ -385,14 +388,11 @@ class Package extends LibraryContainer
385388
@override
386389
bool get isSdk => packageMeta.isSdk;
387390

388-
late final String packagePath =
389-
_pathContext.canonicalize(packageMeta.dir.path);
391+
final String packagePath;
390392

391393
String get version => packageMeta.version;
392394

393-
final PackageMeta _packageMeta;
394-
395-
PackageMeta get packageMeta => _packageMeta;
395+
final PackageMeta packageMeta;
396396

397397
@override
398398
Element? get element => null;
@@ -415,7 +415,7 @@ class Package extends LibraryContainer
415415
@override
416416
Iterable<CommentReferable> get referenceParents => [packageGraph];
417417

418-
p.Context get _pathContext => _packageGraph.resourceProvider.pathContext;
418+
p.Context get _pathContext => packageGraph.resourceProvider.pathContext;
419419

420420
@override
421421
String get referenceName => 'package:$name';

0 commit comments

Comments
 (0)