diff --git a/analysis_options.yaml b/analysis_options.yaml index 2af0e96ef0..264edac979 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -72,6 +72,7 @@ linter: - unnecessary_brace_in_string_interps - unnecessary_const - unnecessary_getters_setters + - unnecessary_late - unnecessary_library_name - unnecessary_library_directive - unnecessary_new diff --git a/app/lib/account/consent_backend.dart b/app/lib/account/consent_backend.dart index 51d7ea630b..342bf4aa82 100644 --- a/app/lib/account/consent_backend.dart +++ b/app/lib/account/consent_backend.dart @@ -61,7 +61,7 @@ class ConsentBackend { final c = await _lookupAndCheck(consentId, user); final action = _actions[c.kind]!; final fromAgent = c.fromAgent!; - late String invitingUserEmail; + final String invitingUserEmail; if (looksLikeUserId(fromAgent)) { invitingUserEmail = (await accountBackend.getEmailOfUserId(fromAgent))!; } else { diff --git a/app/lib/account/models.dart b/app/lib/account/models.dart index 21468174f1..25ad196dcc 100644 --- a/app/lib/account/models.dart +++ b/app/lib/account/models.dart @@ -75,7 +75,7 @@ class User extends db.ExpandoModel { } late final isVisible = !isBlocked && !isModerated && !isDeleted; - late final isNotVisible = !isVisible; + bool get isNotVisible => !isVisible; void updateIsModerated({ required bool isModerated, diff --git a/app/lib/account/session_cookie.dart b/app/lib/account/session_cookie.dart index 8a503e2baf..c3189b091c 100644 --- a/app/lib/account/session_cookie.dart +++ b/app/lib/account/session_cookie.dart @@ -101,5 +101,5 @@ class ClientSessionCookieStatus { required this.isStrict, }); - late final isPresent = sessionId != null && sessionId!.isNotEmpty; + bool get isPresent => sessionId?.isNotEmpty ?? false; } diff --git a/app/lib/admin/tools/set_user_blocked.dart b/app/lib/admin/tools/set_user_blocked.dart index 75f0c1a8d4..5ddde62c38 100644 --- a/app/lib/admin/tools/set_user_blocked.dart +++ b/app/lib/admin/tools/set_user_blocked.dart @@ -18,7 +18,7 @@ Future executeSetUserBlocked(List args) async { final valueAsString = args.length == 2 ? args[1] : null; final blockedStatus = _parseValue(valueAsString); - late List users; + final List users; if (isValidEmail(idOrEmail)) { users = await accountBackend.lookupUsersByEmail(idOrEmail); } else { diff --git a/app/lib/fake/backend/fake_auth_provider.dart b/app/lib/fake/backend/fake_auth_provider.dart index c522faca7e..b189601707 100644 --- a/app/lib/fake/backend/fake_auth_provider.dart +++ b/app/lib/fake/backend/fake_auth_provider.dart @@ -101,7 +101,6 @@ class FakeAuthProvider extends BaseAuthProvider { @override Future tryAuthenticateAsUser(String input) async { - late String jwtTokenValue; var accessToken = input; // TODO: migrate all test to use base64-encoded token try { @@ -110,6 +109,7 @@ class FakeAuthProvider extends BaseAuthProvider { // ignored } + final String jwtTokenValue; if (accessToken.contains('-at-') && !JsonWebToken.looksLikeJWT(accessToken)) { final uri = Uri.tryParse(accessToken); diff --git a/app/lib/fake/backend/fake_pub_worker.dart b/app/lib/fake/backend/fake_pub_worker.dart index 58ad553393..9a0b4ff147 100644 --- a/app/lib/fake/backend/fake_pub_worker.dart +++ b/app/lib/fake/backend/fake_pub_worker.dart @@ -113,7 +113,7 @@ Future _fakeAnalysis(Payload payload) async { total: 20, ); - late Summary summary; + final Summary summary; if (packageStatus.isObsolete || packageStatus.isLegacy) { summary = _emptySummary(payload.package, v.version); dartdocFiles.clear(); diff --git a/app/lib/frontend/handlers/misc.dart b/app/lib/frontend/handlers/misc.dart index ad52b91082..46599849d6 100644 --- a/app/lib/frontend/handlers/misc.dart +++ b/app/lib/frontend/handlers/misc.dart @@ -72,7 +72,7 @@ Future readinessCheckHandler(shelf.Request request) async { /// Handles requests for /topics Future topicsPageHandler(shelf.Request request) async { - late Map topics; + Map? topics; try { final data = await cache.topicsPageData().get(() async { return await storageService @@ -83,16 +83,14 @@ Future topicsPageHandler(shelf.Request request) async { topics = (utf8JsonDecoder.convert(data!) as Map) .cast(); } on FormatException catch (e, st) { - topics = {}; _log.shout('Error loading topics, error:', e, st); } on DetailedApiRequestError catch (e, st) { - topics = {}; if (e.status != 404) { _log.severe('Failed to load topics.json, error : ', e, st); } } - return htmlResponse(renderTopicsPage(topics)); + return htmlResponse(renderTopicsPage(topics ?? {})); } /// Handles requests for /robots.txt diff --git a/app/lib/frontend/handlers/package.dart b/app/lib/frontend/handlers/package.dart index c765c8a7d0..368d166a98 100644 --- a/app/lib/frontend/handlers/package.dart +++ b/app/lib/frontend/handlers/package.dart @@ -296,7 +296,7 @@ Future _handlePackagePage({ } } final serviceSw = Stopwatch()..start(); - late PackagePageData data; + final PackagePageData data; try { data = await loadPackagePageData(package, versionName, assetKind); } on ModeratedException { diff --git a/app/lib/frontend/request_context.dart b/app/lib/frontend/request_context.dart index c62bfef847..d4e3ced12d 100644 --- a/app/lib/frontend/request_context.dart +++ b/app/lib/frontend/request_context.dart @@ -62,7 +62,7 @@ class RequestContext { clientSessionCookieStatus ?? ClientSessionCookieStatus.missing(); late final _isAuthenticated = sessionData?.isAuthenticated ?? false; - late final isNotAuthenticated = !_isAuthenticated; + bool get isNotAuthenticated => !_isAuthenticated; late final authenticatedUserId = _isAuthenticated ? sessionData?.userId : null; } diff --git a/app/lib/frontend/templates/misc.dart b/app/lib/frontend/templates/misc.dart index b57144248c..3f8ee7b125 100644 --- a/app/lib/frontend/templates/misc.dart +++ b/app/lib/frontend/templates/misc.dart @@ -26,7 +26,7 @@ final _securityMarkdown = _readDocContent('security.md'); /// basename as a key, e.g.: /// - `help.md` -> (title: 'Help', content: ...) /// - `help-search.md` -> (title: 'Search', content: ...) -late final _helpArticles = () { +final _helpArticles = () { final docDir = io.Directory(static_files.resolveDocDirPath()); final files = docDir .listSync() @@ -47,7 +47,7 @@ late final _helpArticles = () { return results; }(); -late final _sideImage = d.Image.decorative( +final _sideImage = d.Image.decorative( src: static_files.staticUrls.packagesSideImage, width: 400, height: 400, diff --git a/app/lib/package/export_api_to_bucket.dart b/app/lib/package/export_api_to_bucket.dart index a29f9fa817..5b34e40573 100644 --- a/app/lib/package/export_api_to_bucket.dart +++ b/app/lib/package/export_api_to_bucket.dart @@ -302,6 +302,6 @@ class _BytesAndHash { _BytesAndHash(this.bytes); - late final length = bytes.length; + int get length => bytes.length; late final md5Hash = md5.convert(bytes).bytes; } diff --git a/app/lib/package/model_properties.dart b/app/lib/package/model_properties.dart index 5a148c5114..e44fcc4fd7 100644 --- a/app/lib/package/model_properties.dart +++ b/app/lib/package/model_properties.dart @@ -202,7 +202,7 @@ class Pubspec { late final List funding = _inner.funding ?? const []; /// Whether the pubspec has any topic entry. - late final hasTopic = canonicalizedTopics.isNotEmpty; + bool get hasTopic => canonicalizedTopics.isNotEmpty; } class MinSdkVersion { diff --git a/app/lib/search/mem_index.dart b/app/lib/search/mem_index.dart index 5ccf43a11f..201f8dcdbd 100644 --- a/app/lib/search/mem_index.dart +++ b/app/lib/search/mem_index.dart @@ -148,7 +148,7 @@ class InMemoryPackageIndex { } List? nameMatches; - late List packageHits; + List packageHits; switch (query.effectiveOrder ?? SearchOrder.top) { case SearchOrder.top: if (textResults == null) { diff --git a/app/lib/search/token_index.dart b/app/lib/search/token_index.dart index 1d55992765..98f08c35ed 100644 --- a/app/lib/search/token_index.dart +++ b/app/lib/search/token_index.dart @@ -15,15 +15,15 @@ class Score { Score(this._values); Score.empty() : _values = const {}; - late final bool isEmpty = _values.isEmpty; - late final bool isNotEmpty = !isEmpty; + bool get isEmpty => _values.isEmpty; + bool get isNotEmpty => !isEmpty; Set getKeys({bool Function(String key)? where}) => _values.keys.where((e) => where == null || where(e)).toSet(); late final double maxValue = _values.values.fold(0.0, math.max); Map getValues() => _values; bool containsKey(String key) => _values.containsKey(key); - late final int length = _values.length; + int get length => _values.length; double operator [](String key) => _values[key] ?? 0.0; diff --git a/app/lib/service/entrypoint/search_index.dart b/app/lib/service/entrypoint/search_index.dart index c8c3245d61..a408195de8 100644 --- a/app/lib/service/entrypoint/search_index.dart +++ b/app/lib/service/entrypoint/search_index.dart @@ -26,7 +26,7 @@ final _logger = Logger('search_index'); Future main(List args, var message) async { final timer = Timer.periodic(Duration(milliseconds: 250), (_) {}); - late ServicesWrapperFn servicesWrapperFn; + final ServicesWrapperFn servicesWrapperFn; if (envConfig.isRunningInAppengine) { servicesWrapperFn = withServices; setupAppEngineLogging(); diff --git a/app/lib/service/topics/models.dart b/app/lib/service/topics/models.dart index f19695051d..85453d3b17 100644 --- a/app/lib/service/topics/models.dart +++ b/app/lib/service/topics/models.dart @@ -16,7 +16,7 @@ part 'models.g.dart'; final _log = Logger('topics'); -late final canonicalTopics = () { +final canonicalTopics = () { try { final f = File(p.join(resolveAppDir(), '../doc/topics.yaml')); return CanonicalTopicFileContent.fromYaml(f.readAsStringSync()); diff --git a/app/lib/shared/configuration.dart b/app/lib/shared/configuration.dart index 09344637ed..2fb986046a 100644 --- a/app/lib/shared/configuration.dart +++ b/app/lib/shared/configuration.dart @@ -431,7 +431,7 @@ final class Configuration { late final isFakeOrTest = projectId == 'dartlang-pub-fake' || projectId == 'dartlang-pub-test'; - late final isPublishedEmailNotificationEnabled = true; + bool get isPublishedEmailNotificationEnabled => true; } /// Data structure to describe an admin user. diff --git a/pkg/_pub_shared/lib/validation/html/html_validation.dart b/pkg/_pub_shared/lib/validation/html/html_validation.dart index 0539d18d6a..0c79ac5488 100644 --- a/pkg/_pub_shared/lib/validation/html/html_validation.dart +++ b/pkg/_pub_shared/lib/validation/html/html_validation.dart @@ -29,7 +29,7 @@ void parseAndValidateHtml(String html) { /// - `