Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(494)

Unified Diff: reflectable/lib/transformer.dart

Issue 1448333004: Checks for entry point existence and supports warning suppression. (Closed) Base URL: https://github.com/dart-lang/reflectable.git@master
Patch Set: Review response; eliminated "allWarnings". Landing now. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: reflectable/lib/transformer.dart
diff --git a/reflectable/lib/transformer.dart b/reflectable/lib/transformer.dart
index 0fc3f4010d38f6300d81c93e1ba4101f65c713ad..d9a0530accf33f7fc13e3a7b643180816c03f554 100644
--- a/reflectable/lib/transformer.dart
+++ b/reflectable/lib/transformer.dart
@@ -15,6 +15,8 @@ class ReflectableTransformer extends AggregateTransformer
BarbackSettings _settings;
List<String> _entryPoints = <String>[];
bool _formatted;
+ List<implementation.WarningKind> _suppressWarnings =
+ <implementation.WarningKind>[];
/// Reports an error in a situation where we do not yet have
/// a [Logger].
@@ -64,10 +66,61 @@ class ReflectableTransformer extends AggregateTransformer
}
}
+ List<implementation.WarningKind> _findSuppressWarnings(
+ suppressWarningsSettings) {
+ void fail(setting) {
+ _reportEarlyError("Encountered unknown value '$setting' for"
+ " the 'suppressWarnings' option.\n"
+ "Accepted values: true, false, missingEntryPoint, "
+ "badSuperclass, badNamePattern, badMetadata");
+ }
+
+ Iterable<implementation.WarningKind> helper(setting) sync* {
+ // With no settings, no warnings are suppressed; same for `false`.
+ if (setting == null || setting == false) return;
+ // Setting `true` means suppress them all.
+ if (setting == true) {
+ yield* implementation.WarningKind.values;
+ } else if (setting is String) {
+ switch (setting) {
+ case "missingEntryPoint":
+ yield implementation.WarningKind.missingEntryPoint;
+ break;
+ case "badSuperclass":
+ yield implementation.WarningKind.badSuperclass;
+ break;
+ case "badNamePattern":
+ yield implementation.WarningKind.badNamePattern;
+ break;
+ case "badMetadata":
+ yield implementation.WarningKind.badMetadata;
+ break;
+ default:
+ fail(setting);
+ return;
+ }
+ } else {
+ fail(setting);
+ return;
+ }
+ }
+
+ List<implementation.WarningKind> result = <implementation.WarningKind>[];
+ if (suppressWarningsSettings is Iterable) {
+ suppressWarningsSettings
+ .forEach((setting) => helper(setting).forEach(result.add));
+ } else {
+ result.addAll(helper(suppressWarningsSettings));
+ }
+ return new List<implementation.WarningKind>.unmodifiable(result);
+ }
+
/// Creates new instance as required by Barback.
ReflectableTransformer.asPlugin(this._settings) {
_entryPoints = _findEntryPoints(_settings.configuration['entry_points']);
_formatted = _findFormatted(_settings.configuration['formatted']);
+ _suppressWarnings =
+ _findSuppressWarnings(_settings.configuration['suppressWarnings']);
}
/// Return a [String] or [Future<String>] valued key for each
@@ -86,7 +139,7 @@ class ReflectableTransformer extends AggregateTransformer
@override
Future apply(AggregateTransform transform) {
return new implementation.TransformerImplementation()
- .apply(transform, _entryPoints, _formatted);
+ .apply(transform, _entryPoints, _formatted, _suppressWarnings);
}
@override

Powered by Google App Engine
This is Rietveld 408576698