| Index: dart/lib/compiler/implementation/resolver.dart
|
| diff --git a/dart/lib/compiler/implementation/resolver.dart b/dart/lib/compiler/implementation/resolver.dart
|
| index bcd63bb596299f64a75eed2676ce93086146c91e..bf2991437b096b4c5fccb85734311b43282d2f23 100644
|
| --- a/dart/lib/compiler/implementation/resolver.dart
|
| +++ b/dart/lib/compiler/implementation/resolver.dart
|
| @@ -257,9 +257,9 @@ class ResolverTask extends CompilerTask {
|
| * [:element.ensureResolved(compiler):].
|
| */
|
| void resolveClass(ClassElement element) {
|
| - assert(element.resolutionState == ClassElement.STATE_NOT_STARTED);
|
| - element.resolutionState = ClassElement.STATE_STARTED;
|
| compiler.withCurrentElement(element, () => measure(() {
|
| + assert(element.resolutionState == ClassElement.STATE_NOT_STARTED);
|
| + element.resolutionState = ClassElement.STATE_STARTED;
|
| ClassNode tree = element.parseNode(compiler);
|
| loadSupertypes(element, tree);
|
|
|
| @@ -399,6 +399,22 @@ class ResolverTask extends CompilerTask {
|
| element);
|
| }
|
|
|
| + void resolveMetadataAnnotation(MetadataAnnotation annotation) {
|
| + compiler.withCurrentElement(annotation.annotatedElement, () => measure(() {
|
| + assert(annotation.resolutionState == ClassElement.STATE_NOT_STARTED);
|
| + annotation.resolutionState = ClassElement.STATE_STARTED;
|
| +
|
| + Node node = annotation.parseNode(compiler);
|
| + ResolverVisitor visitor =
|
| + new ResolverVisitor(compiler, annotation.annotatedElement);
|
| + node.accept(visitor);
|
| + annotation.value = compiler.constantHandler.compileNodeWithDefinitions(
|
| + node, visitor.mapping);
|
| +
|
| + annotation.resolutionState = ClassElement.STATE_DONE;
|
| + }));
|
| + }
|
| +
|
| error(Node node, MessageKind kind, [arguments = const []]) {
|
| ResolutionError message = new ResolutionError(kind, arguments);
|
| compiler.reportError(node, message);
|
|
|