Create GenerateReflectorReader

This commit is contained in:
Tobe O 2018-08-21 11:05:28 -04:00
parent 271db26179
commit c0d526ef57
2 changed files with 49 additions and 0 deletions

View file

@ -0,0 +1,35 @@
import 'package:analyzer/dart/constant/value.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:angel_container/angel_container.dart';
import 'package:source_gen/source_gen.dart';
const TypeChecker generateReflectorTypeChecker =
const TypeChecker.fromRuntime(GenerateReflector);
/// Reads data from a [GenerateReflector] annotation.
class GenerateReflectorReader {
final ConstantReader constantReader;
GenerateReflectorReader(this.constantReader);
String get name => constantReader.peek('name')?.stringValue;
List<DartType> get types =>
constantReader
.peek('types')
?.listValue
?.map((o) => ConstantReader(o).typeValue)
?.toList() ??
<DartType>[];
List<Symbol> get symbols =>
constantReader
.peek('symbols')
?.listValue
?.map((o) => ConstantReader(o).symbolValue)
?.toList() ??
<Symbol>[];
List<DartObject> get functions =>
constantReader.peek('functions')?.listValue ?? <DartObject>[];
}

View file

@ -0,0 +1,14 @@
name: angel_container_generator
version: 1.0.0-alpha
author: Tobe O <thosakwe@gmail.com>
description: Code generator that generates `Reflector` subclasses. Use this to run Angel applications on Flutter, where reflection via `dart:mirrors` is disallowed.
homepage: https://github.com/angel-dart/container.git
environment:
sdk: ">=2.0.0-dev <3.0.0"
dependencies:
angel_container: ^1.0.0-alpha
build: ^0.12.0
build_config: ^0.3.0
source_gen: ^0.9.0
dev_dependencies:
build_runner: ^0.10.0