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

Unified Diff: packages/initialize/lib/build/initializer_plugin.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 months 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
« no previous file with comments | « packages/initialize/CHANGELOG.md ('k') | packages/initialize/lib/src/mirror_loader.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/initialize/lib/build/initializer_plugin.dart
diff --git a/packages/initialize/lib/build/initializer_plugin.dart b/packages/initialize/lib/build/initializer_plugin.dart
index 8822dc4f7e397b7daa741de704f023c25c19ea0a..f049df0aa51b2f7542a6a4de154361d4a568d927 100644
--- a/packages/initialize/lib/build/initializer_plugin.dart
+++ b/packages/initialize/lib/build/initializer_plugin.dart
@@ -3,8 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
library initialize.build.initializer_plugin;
-import 'package:analyzer/src/generated/ast.dart';
-import 'package:analyzer/src/generated/element.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/generated/constant.dart';
import 'package:barback/barback.dart';
import 'package:code_transformers/resolver.dart';
import 'package:initialize/transformer.dart';
@@ -58,10 +59,8 @@ class DefaultInitializerPlugin implements InitializerPlugin {
/// [ElementAnnotation] that was found.
String buildMeta(InitializerPluginData pluginData) {
var logger = pluginData.logger;
- var element = pluginData.initializer.targetElement;
var elementAnnotation = pluginData.initializer.annotationElement;
var elementAnnotationElement = elementAnnotation.element;
- var libraryPrefixes = pluginData.libraryPrefixes;
if (elementAnnotationElement is ConstructorElement) {
return buildConstructorMeta(elementAnnotation, pluginData);
} else if (elementAnnotationElement is PropertyAccessorElement) {
@@ -264,7 +263,8 @@ class DefaultInitializerPlugin implements InitializerPlugin {
return buffer.toString();
}
- _evaluateExpression(Expression expression, InitializerPluginData pluginData) {
+ _evaluateExpression(
+ Expression expression, InitializerPluginData pluginData) {
var logger = pluginData.logger;
var result = pluginData.resolver.evaluateConstant(
pluginData.initializer.targetElement.library, expression);
@@ -273,15 +273,17 @@ class DefaultInitializerPlugin implements InitializerPlugin {
'And got the following errors: ${result.errors}.');
return null;
}
- var value = result.value.value;
+
+ var value = _getValue(result.value);
+
if (value == null) {
logger.error('Unsupported expression in initializer, found '
'$expression. Please file a bug at '
'https://github.com/dart-lang/initialize/issues');
- return null;
}
if (value is String) value = _stringValue(value);
+
return value;
}
@@ -291,4 +293,31 @@ class DefaultInitializerPlugin implements InitializerPlugin {
value = value.replaceAll(r'\', r'\\').replaceAll(r"'", r"\'");
return "'$value'";
}
+
+ // Gets an actual value for a [DartObject].
+ _getValue(DartObject object) {
+ if (object == null) return null;
+ var value = object.toBoolValue() ??
+ object.toDoubleValue() ??
+ object.toIntValue() ??
+ object.toStringValue();
+ if (value == null) {
+ value = object.toListValue();
+ if (value != null) {
+ return value.map((DartObject element) => _getValue(element)).toList();
+ }
+ Map<DartObject, DartObject> map = object.toMapValue();
+ if (map != null) {
+ Map result = {};
+ map.forEach((DartObject key, DartObject value) {
+ dynamic mappedKey = _getValue(key);
+ if (mappedKey != null) {
+ result[mappedKey] = _getValue(value);
+ }
+ });
+ return result;
+ }
+ }
+ return value;
+ }
}
« no previous file with comments | « packages/initialize/CHANGELOG.md ('k') | packages/initialize/lib/src/mirror_loader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698