Ben Konyi 1709c884aa
[ Tool ] Enable omit_obvious_*_types and specify_nonobvious_*_types lints (#172018)
Sources under `packages/flutter_tools/` aren't accessible to the average
Flutter user by navigating through sources from their projects, so it
doesn't need to be as explicitly verbose with types for readability
purposes. The `always_specify_types` lint results in extremely verbose
code within the tool which adds little value.

This change disables `always_specify_types` in favor of a new set of
lints that aim to reduce verbosity by removing obvious types while also
maintaining readability in cases where variable types otherwise wouldn't
be obvious:

  - `omit_obvious_local_variable_types`
  - `omit_obvious_property_types`
  - `specify_nonobvious_local_variable_types`
  - `specify_nonobvious_property_types`
2025-07-11 19:32:57 +00:00

44 lines
1.5 KiB
Dart

// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/isolated/mustache_template.dart';
import 'package:flutter_tools/src/template.dart';
import '../../src/common.dart';
void main() {
testWithoutContext('kotlin reserved keywords', () {
final FileSystem fileSystem = MemoryFileSystem.test();
final logger = BufferLogger.test();
final Directory rootDir = fileSystem.currentDirectory;
final Directory templateSource = rootDir.childDirectory('src');
final imageSourceDir = templateSource;
final Directory destination = rootDir.childDirectory('dest');
const outputClass = 'SomeClass.kt';
final File sourceFile = templateSource.childFile('$outputClass.tmpl');
templateSource.createSync();
sourceFile.writeAsStringSync('package {{androidIdentifier}};');
final template = Template(
templateSource,
imageSourceDir,
fileSystem: fileSystem,
logger: logger,
templateRenderer: const MustacheTemplateRenderer(),
);
final context = <String, Object>{'androidIdentifier': 'is.in.when.there'};
template.render(destination, context);
final File destinationFile = destination.childFile(outputClass);
expect(destinationFile.readAsStringSync(), equals('package `is`.`in`.`when`.there;'));
});
}