| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 // TODO(johnniwinther): Make this a separate library. |
| 6 part of dart2js.kernel.world_builder; |
| 7 |
| 8 class KernelAnnotationProcessor implements AnnotationProcessor { |
| 9 final KernelWorldBuilder worldBuilder; |
| 10 |
| 11 KernelAnnotationProcessor(this.worldBuilder); |
| 12 |
| 13 void extractNativeAnnotations( |
| 14 LibraryEntity library, NativeBasicDataBuilder nativeBasicDataBuilder) { |
| 15 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; |
| 16 CommonElements commonElements = worldBuilder.commonElements; |
| 17 |
| 18 elementEnvironment.forEachClass(library, (ClassEntity cls) { |
| 19 String annotationName; |
| 20 // TODO(johnniwinther): Make [_getClassMetadata] public and at test to |
| 21 // guard against misuse. |
| 22 for (ConstantExpression annotation |
| 23 in worldBuilder._getClassMetadata(cls)) { |
| 24 ConstantValue value = |
| 25 worldBuilder.constantEnvironment.getConstantValue(annotation); |
| 26 String name = readAnnotationName( |
| 27 cls, value, commonElements.nativeAnnotationClass); |
| 28 if (annotationName == null) { |
| 29 annotationName = name; |
| 30 } else if (name != null) { |
| 31 throw new SpannableAssertionFailure( |
| 32 cls, 'Too many name annotations.'); |
| 33 } |
| 34 } |
| 35 if (annotationName != null) { |
| 36 nativeBasicDataBuilder.setNativeClassTagInfo(cls, annotationName); |
| 37 } |
| 38 }); |
| 39 } |
| 40 |
| 41 void extractJsInteropAnnotations( |
| 42 LibraryEntity library, NativeBasicDataBuilder nativeBasicDataBuilder) { |
| 43 throw new UnimplementedError( |
| 44 'KernelAnnotationProcessor.extractJsInteropAnnotations'); |
| 45 } |
| 46 } |
| OLD | NEW |