Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,30 @@ language: dart
jobs:
include:
- stage: analyze_format
name: "SDK: dev - DIR: _test_annotations - TASKS: [dartfmt -n --set-exit-if-changed ., dartanalyzer --fatal-infos --fatal-warnings .]"
script: ./tool/travis.sh dartfmt dartanalyzer
env: PKG="_test_annotations"
dart: dev
- stage: analyze_format
name: "SDK: dev - DIR: source_gen - TASKS: [dartfmt -n --set-exit-if-changed ., dartanalyzer --fatal-infos --fatal-warnings .]"
script: ./tool/travis.sh dartfmt dartanalyzer
env: PKG="source_gen"
dart: dev
- stage: analyze_format
name: "SDK: stable - DIR: source_gen - TASKS: [dartfmt -n --set-exit-if-changed ., dartanalyzer --fatal-infos --fatal-warnings .]"
script: ./tool/travis.sh dartfmt dartanalyzer
env: PKG="source_gen"
dart: stable
- stage: unit_test
name: "SDK: dev - DIR: source_gen - TASKS: pub run test -j 1"
script: ./tool/travis.sh test
env: PKG="source_gen"
dart: dev
- stage: unit_test
name: "SDK: stable - DIR: source_gen - TASKS: pub run test -j 1"
script: ./tool/travis.sh test
env: PKG="source_gen"
dart: stable

stages:
- analyze_format
Expand Down
1 change: 1 addition & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ linter:
- unnecessary_brace_in_string_interps
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_statements
- unnecessary_this
Expand Down
1 change: 1 addition & 0 deletions source_gen/.mono_repo.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# See https://github.com/dart-lang/mono_repo for details
dart:
- dev
- stable

stages:
- analyze_format:
Expand Down
16 changes: 8 additions & 8 deletions source_gen/lib/builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ const _outputExtensions = '.g.dart';
const _partFiles = '.g.part';

Builder combiningBuilder([BuilderOptions options]) {
var optionsMap = new Map<String, dynamic>.from(options?.config ?? {});
var optionsMap = Map<String, dynamic>.from(options?.config ?? {});

var builder = new CombiningBuilder(
var builder = CombiningBuilder(
includePartName: optionsMap.remove('include_part_name') as bool);

if (optionsMap.isNotEmpty) {
if (log == null) {
throw new StateError('Upgrade `build_runner` to at least 0.8.2.');
throw StateError('Upgrade `build_runner` to at least 0.8.2.');
} else {
log.warning('These options were ignored: `$optionsMap`.');
}
Expand All @@ -40,7 +40,7 @@ Builder combiningBuilder([BuilderOptions options]) {
}

PostProcessBuilder partCleanup(BuilderOptions options) =>
const FileDeletingBuilder(const ['.g.part']);
const FileDeletingBuilder(['.g.part']);

/// A [Builder] which combines part files generated from [SharedPartBuilder].
///
Expand All @@ -50,7 +50,7 @@ class CombiningBuilder implements Builder {

@override
Map<String, List<String>> get buildExtensions => const {
'.dart': const [_outputExtensions]
'.dart': [_outputExtensions]
};

/// Returns a new [CombiningBuilder].
Expand All @@ -71,7 +71,7 @@ class CombiningBuilder implements Builder {

// Pattern used to ensure items are only considered if they match
// [file name without extension].[valid part id].[part file extension]
var restrictedPattern = new RegExp([
var restrictedPattern = RegExp([
'^', // start of string
RegExp.escape(inputBaseName), // file name, without extension
'\.', // `.` character
Expand All @@ -81,12 +81,12 @@ class CombiningBuilder implements Builder {
].join(''));

var assetIds = await buildStep
.findAssets(new Glob(pattern))
.findAssets(Glob(pattern))
.where((id) => restrictedPattern.hasMatch(id.pathSegments.last))
.toList()
..sort();

var assets = await new Stream.fromIterable(assetIds)
var assets = await Stream.fromIterable(assetIds)
.asyncMap((id) async {
var content = (await buildStep.readAsString(id)).trim();
if (_includePartName) {
Expand Down
22 changes: 11 additions & 11 deletions source_gen/lib/src/builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ class _Builder extends Builder {
formatOutput = formatOutput ?? _formatter.format,
_header = (header ?? defaultFileHeader).trim() {
if (_generatedExtension == null) {
throw new ArgumentError.notNull('generatedExtension');
throw ArgumentError.notNull('generatedExtension');
}
if (_generatedExtension.isEmpty || !_generatedExtension.startsWith('.')) {
throw new ArgumentError.value(_generatedExtension, 'generatedExtension',
throw ArgumentError.value(_generatedExtension, 'generatedExtension',
'Extension must be in the format of .*');
}
if (_isLibraryBuilder && _generators.length > 1) {
throw new ArgumentError(
throw ArgumentError(
'A standalone file can only be generated from a single Generator.');
}
}
Expand All @@ -79,7 +79,7 @@ class _Builder extends Builder {
if (generatedOutputs.isEmpty) return;
final outputId = buildStep.inputId.changeExtension(_generatedExtension);

var contentBuffer = new StringBuffer();
var contentBuffer = StringBuffer();

if (_header.isNotEmpty) {
contentBuffer.writeln(_header);
Expand All @@ -90,7 +90,7 @@ class _Builder extends Builder {
var name = nameOfPartial(library, asset);
if (name == null) {
var suggest = suggestLibraryName(asset);
throw new InvalidGenerationSourceError(
throw InvalidGenerationSourceError(
'Could not find library identifier so a "part of" cannot be built.',
todo: ''
'Consider adding the following to your source file:\n\n'
Expand Down Expand Up @@ -175,7 +175,7 @@ class SharedPartBuilder extends _Builder {
additionalOutputExtensions: additionalOutputExtensions,
header: '') {
if (!_partIdRegExp.hasMatch(partId)) {
throw new ArgumentError.value(
throw ArgumentError.value(
partId,
'partId',
'`partId` can only contain letters, numbers, `_` and `.`. '
Expand Down Expand Up @@ -241,7 +241,7 @@ class LibraryBuilder extends _Builder {

Stream<GeneratedOutput> _generate(LibraryElement library,
List<Generator> generators, BuildStep buildStep) async* {
var libraryReader = new LibraryReader(library);
var libraryReader = LibraryReader(library);
for (var i = 0; i < generators.length; i++) {
var gen = generators[i];
try {
Expand All @@ -261,20 +261,20 @@ Stream<GeneratedOutput> _generate(LibraryElement library,
continue;
}

yield new GeneratedOutput(gen, createdUnit);
yield GeneratedOutput(gen, createdUnit);
} catch (e, stack) {
log.severe('Error running $gen', e, stack);
yield new GeneratedOutput.fromError(gen, e, stack);
yield GeneratedOutput.fromError(gen, e, stack);
}
}
}

final _formatter = new DartFormatter();
final _formatter = DartFormatter();

const defaultFileHeader = '// GENERATED CODE - DO NOT MODIFY BY HAND';

final _headerLine = '// '.padRight(77, '*');

const partIdRegExpLiteral = r'[A-Za-z_\d-]+';

final _partIdRegExp = new RegExp('^$partIdRegExpLiteral\$');
final _partIdRegExp = RegExp('^$partIdRegExpLiteral\$');
21 changes: 10 additions & 11 deletions source_gen/lib/src/constants/reader.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@ import 'utils.dart';
/// Unlike [DartObject.getField], the [read] method attempts to access super
/// classes for the field value if not found.
abstract class ConstantReader {
factory ConstantReader(DartObject object) => isNullLike(object)
? const _NullConstant()
: new _DartObjectConstant(object);
factory ConstantReader(DartObject object) =>
isNullLike(object) ? const _NullConstant() : _DartObjectConstant(object);

const ConstantReader._();

Expand Down Expand Up @@ -124,13 +123,13 @@ abstract class ConstantReader {
class _NullConstant extends ConstantReader {
@alwaysThrows
static T _throw<T>(String expected) {
throw new FormatException('Not an instance of $expected.');
throw FormatException('Not an instance of $expected.');
}

const _NullConstant() : super._();

@override
DartObject get objectValue => throw new UnsupportedError('Null');
DartObject get objectValue => throw UnsupportedError('Null');

@override
bool get boolValue => _throw('bool');
Expand All @@ -151,7 +150,7 @@ class _NullConstant extends ConstantReader {
ConstantReader peek(_) => null;

@override
ConstantReader read(_) => throw new UnsupportedError('Null');
ConstantReader read(_) => throw UnsupportedError('Null');

@override
String get stringValue => _throw('String');
Expand All @@ -163,7 +162,7 @@ class _NullConstant extends ConstantReader {
DartType get typeValue => _throw('Type');

@override
Revivable revive() => throw new UnsupportedError('Null');
Revivable revive() => throw UnsupportedError('Null');
}

class _DartObjectConstant extends ConstantReader {
Expand All @@ -174,7 +173,7 @@ class _DartObjectConstant extends ConstantReader {

T _check<T>(T value, String expected) {
if (value == null) {
throw new FormatException('Not an instance of $expected.', objectValue);
throw FormatException('Not an instance of $expected.', objectValue);
}
return value;
}
Expand All @@ -187,7 +186,7 @@ class _DartObjectConstant extends ConstantReader {
objectValue.toDoubleValue() ??
objectValue.toListValue() ??
objectValue.toMapValue() ??
new Symbol(_check(objectValue.toSymbolValue(), 'literal'));
Symbol(_check(objectValue.toSymbolValue(), 'literal'));

@override
bool get isLiteral =>
Expand Down Expand Up @@ -249,7 +248,7 @@ class _DartObjectConstant extends ConstantReader {

@override
Symbol get symbolValue =>
new Symbol(_check(objectValue.toSymbolValue(), 'Symbol'));
Symbol(_check(objectValue.toSymbolValue(), 'Symbol'));

@override
bool get isType => objectValue.toTypeValue() != null;
Expand All @@ -259,7 +258,7 @@ class _DartObjectConstant extends ConstantReader {

@override
ConstantReader peek(String field) {
final constant = new ConstantReader(getFieldRecursive(objectValue, field));
final constant = ConstantReader(getFieldRecursive(objectValue, field));
return constant.isNull ? null : constant;
}

Expand Down
12 changes: 6 additions & 6 deletions source_gen/lib/src/constants/revive.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ Revivable reviveInstance(DartObject object, [LibraryElement origin]) {
final element = object.type.element;
var url = Uri.parse(urlOfElement(element));
if (element is FunctionElement) {
return new Revivable._(
return Revivable._(
source: url.removeFragment(),
accessor: element.name,
);
}
if (element is MethodElement && element.isStatic) {
return new Revivable._(
return Revivable._(
source: url.removeFragment(),
accessor: '${element.enclosingElement.name}.${element.name}',
);
Expand All @@ -39,7 +39,7 @@ Revivable reviveInstance(DartObject object, [LibraryElement origin]) {
if (clazz.isEnum) {
for (final e in clazz.fields.where(
(f) => f.isPublic && f.isConst && f.computeConstantValue() == object)) {
return new Revivable._(
return Revivable._(
source: url.removeFragment(),
accessor: '${clazz.name}.${e.name}',
);
Expand All @@ -49,7 +49,7 @@ Revivable reviveInstance(DartObject object, [LibraryElement origin]) {
.expand((t) => t.fields)
.where((f) =>
f.isPublic && f.isConst && f.computeConstantValue() == object)) {
return new Revivable._(
return Revivable._(
source: url.removeFragment(),
accessor: '${clazz.name}.${e.name}',
);
Expand All @@ -59,7 +59,7 @@ Revivable reviveInstance(DartObject object, [LibraryElement origin]) {
i.constructor.isPublic &&
i.constructor.enclosingElement.isPublic) {
url = Uri.parse(urlOfElement(i.constructor.enclosingElement));
return new Revivable._(
return Revivable._(
source: url,
accessor: i.constructor.name,
namedArguments: i.namedArguments,
Expand All @@ -72,7 +72,7 @@ Revivable reviveInstance(DartObject object, [LibraryElement origin]) {
for (final e in origin.definingCompilationUnit.topLevelVariables.where(
(f) => f.isPublic && f.isConst && f.computeConstantValue() == object,
)) {
return new Revivable._(
return Revivable._(
source: Uri.parse(urlOfElement(origin)).replace(fragment: ''),
accessor: e.name,
);
Expand Down
2 changes: 1 addition & 1 deletion source_gen/lib/src/constants/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ void assertHasField(ClassElement root, String name) {
}
final allFields = root.fields.toSet()
..addAll(root.allSupertypes.expand((t) => t.element.fields));
throw new FormatException(
throw FormatException(
'Class ${root.name} does not have field "$name".',
'Fields: \n - ${allFields.map((e) => e.name).join('\n - ')}',
);
Expand Down
2 changes: 1 addition & 1 deletion source_gen/lib/src/generated_output.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class GeneratedOutput {
}

String _outputFromError(Object error) {
var buffer = new StringBuffer();
var buffer = StringBuffer();

_commentWithHeader(_errorHeader, error.toString(), buffer);

Expand Down
2 changes: 1 addition & 1 deletion source_gen/lib/src/generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class InvalidGenerationSourceError extends Error {

@override
String toString() {
var buffer = new StringBuffer(message);
var buffer = StringBuffer(message);

if (element != null) {
var span = spanForElement(element);
Expand Down
4 changes: 2 additions & 2 deletions source_gen/lib/src/generator_for_annotation.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ import 'type_checker.dart';
abstract class GeneratorForAnnotation<T> extends Generator {
const GeneratorForAnnotation();

TypeChecker get typeChecker => new TypeChecker.fromRuntime(T);
TypeChecker get typeChecker => TypeChecker.fromRuntime(T);

@override
FutureOr<String> generate(LibraryReader library, BuildStep buildStep) async {
var values = new Set<String>();
var values = Set<String>();

for (var annotatedElement in library.annotatedWith(typeChecker)) {
var generatedValue = generateForAnnotatedElement(
Expand Down
Loading