mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:07:49 +00:00
fix metadata reflection for fields
Change-Id: I25d69eea235b0824c49320212706e66945480034 Reviewed-on: https://dart-review.googlesource.com/6024 Reviewed-by: Jennifer Messerly <jmesserly@google.com> Commit-Queue: Jennifer Messerly <jmesserly@google.com>
This commit is contained in:
parent
62045a4590
commit
67b9d3b9f9
|
@ -2134,18 +2134,21 @@ class CodeGenerator extends Object
|
|||
var staticFields = <JS.Property>[];
|
||||
for (var field in classElem.fields) {
|
||||
if (field.isSynthetic && !classElem.isEnum) continue;
|
||||
|
||||
// Only instance fields need to be saved for dynamic dispatch.
|
||||
var isStatic = field.isStatic;
|
||||
if (!options.emitMetadata && isStatic) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var annotationNode = annotatedMembers[field] as VariableDeclaration;
|
||||
var fieldNode = annotatedMembers[field] as VariableDeclaration;
|
||||
var metadata = fieldNode != null
|
||||
? (fieldNode.parent.parent as FieldDeclaration).metadata
|
||||
: null;
|
||||
|
||||
assert(field.getter != null, '$field in $classElem has no getter???');
|
||||
var memberName = _declareMemberName(field.getter);
|
||||
var fieldSig = _emitFieldSignature(field.type,
|
||||
metadata: annotationNode?.metadata, isFinal: field.isFinal);
|
||||
metadata: metadata, isFinal: field.isFinal);
|
||||
(isStatic ? staticFields : instanceFields)
|
||||
.add(new JS.Property(memberName, fieldSig));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue