| Index: reflectable/lib/src/reflectable_transformer_based.dart
|
| diff --git a/reflectable/lib/src/reflectable_transformer_based.dart b/reflectable/lib/src/reflectable_transformer_based.dart
|
| index 58773dc0153bf5999459cc2da7684487fc202cbb..9454cdefb8187605872a57c5dba7f398488c57ed 100644
|
| --- a/reflectable/lib/src/reflectable_transformer_based.dart
|
| +++ b/reflectable/lib/src/reflectable_transformer_based.dart
|
| @@ -552,6 +552,12 @@ class NonGenericClassMirrorImpl extends ClassMirrorImpl {
|
| @override
|
| Type get reflectedType => _data.types[_classIndex];
|
|
|
| + @override
|
| + bool get hasDynamicReflectedType => true;
|
| +
|
| + @override
|
| + Type get dynamicReflectedType => reflectedType;
|
| +
|
| String toString() => "NonGenericClassMirrorImpl($qualifiedName)";
|
| }
|
|
|
| @@ -571,6 +577,8 @@ class GenericClassMirrorImpl extends ClassMirrorImpl {
|
|
|
| final List<int> _typeVariableIndices;
|
|
|
| + final Type _dynamicReflectedType;
|
| +
|
| GenericClassMirrorImpl(
|
| String simpleName,
|
| String qualifiedName,
|
| @@ -589,7 +597,8 @@ class GenericClassMirrorImpl extends ClassMirrorImpl {
|
| List<int> superinterfaceIndices,
|
| List<Object> metadata,
|
| this._isGenericRuntimeTypeOf,
|
| - this._typeVariableIndices)
|
| + this._typeVariableIndices,
|
| + this._dynamicReflectedType)
|
| : super(
|
| simpleName,
|
| qualifiedName,
|
| @@ -646,6 +655,12 @@ class GenericClassMirrorImpl extends ClassMirrorImpl {
|
| "from generic class '$qualifiedName'.");
|
| }
|
|
|
| + @override
|
| + bool get hasDynamicReflectedType => true;
|
| +
|
| + @override
|
| + Type get dynamicReflectedType => _dynamicReflectedType;
|
| +
|
| String toString() => "GenericClassMirrorImpl($qualifiedName)";
|
| }
|
|
|
| @@ -692,7 +707,8 @@ class InstantiatedGenericClassMirrorImpl extends ClassMirrorImpl {
|
|
|
| // TODO(sigurdm) implement: Implement typeArguments.
|
| @override
|
| - List<TypeMirror> get typeArguments => throw unimplementedError("typeArguments");
|
| + List<TypeMirror> get typeArguments =>
|
| + throw unimplementedError("typeArguments");
|
|
|
| @override
|
| List<TypeVariableMirror> get typeVariables =>
|
| @@ -714,6 +730,13 @@ class InstantiatedGenericClassMirrorImpl extends ClassMirrorImpl {
|
| "instance of generic type '$simpleName'.");
|
| }
|
|
|
| + @override
|
| + bool get hasDynamicReflectedType =>
|
| + _originalDeclaration.hasDynamicReflectedType;
|
| +
|
| + @override
|
| + Type get dynamicReflectedType => _originalDeclaration.dynamicReflectedType;
|
| +
|
| String toString() => "InstantiatedGenericClassMirrorImpl($qualifiedName)";
|
| }
|
|
|
| @@ -990,6 +1013,13 @@ class MethodMirrorImpl extends _DataCaching implements MethodMirror {
|
| /// The return type of this method.
|
| final Type _reflectedReturnType;
|
|
|
| + /// The return type of this method, erased to have `dynamic` for all
|
| + /// type arguments; a null value indicates that it is identical to
|
| + /// `reflectedReturnType` if that value is available they are equal; if
|
| + /// `reflectedReturnType` is unavailable then so is
|
| + /// `dynamicReflectedReturnType`.
|
| + final Type _dynamicReflectedReturnType;
|
| +
|
| /// The indices of the [ParameterMirror]s describing the formal parameters
|
| /// of this method.
|
| final List<int> _parameterIndices;
|
| @@ -1008,6 +1038,7 @@ class MethodMirrorImpl extends _DataCaching implements MethodMirror {
|
| this._ownerIndex,
|
| this._returnTypeIndex,
|
| this._reflectedReturnType,
|
| + this._dynamicReflectedReturnType,
|
| this._parameterIndices,
|
| this._reflector,
|
| this._metadata);
|
| @@ -1138,6 +1169,17 @@ class MethodMirrorImpl extends _DataCaching implements MethodMirror {
|
| }
|
|
|
| @override
|
| + bool get hasDynamicReflectedReturnType =>
|
| + _dynamicReflectedReturnType != null || hasReflectedReturnType;
|
| +
|
| + @override
|
| + Type get dynamicReflectedReturnType {
|
| + return _dynamicReflectedReturnType != null
|
| + ? _dynamicReflectedReturnType
|
| + : reflectedReturnType;
|
| + }
|
| +
|
| + @override
|
| String get simpleName => isConstructor
|
| ? (_name == '' ? "${owner.simpleName}" : "${owner.simpleName}.$_name")
|
| : _name;
|
| @@ -1154,6 +1196,7 @@ abstract class ImplicitAccessorMirrorImpl extends _DataCaching
|
| final ReflectableImpl _reflector;
|
| final int _variableMirrorIndex;
|
| final Type _reflectedType;
|
| + final Type _dynamicReflectedType;
|
|
|
| /// Index of this [ImplicitAccessorMirrorImpl] in `_data.memberMirrors`.
|
| final int _selfIndex;
|
| @@ -1162,7 +1205,7 @@ abstract class ImplicitAccessorMirrorImpl extends _DataCaching
|
| _data.memberMirrors[_variableMirrorIndex];
|
|
|
| ImplicitAccessorMirrorImpl(this._reflector, this._variableMirrorIndex,
|
| - this._reflectedType, this._selfIndex);
|
| + this._reflectedType, this._dynamicReflectedType, this._selfIndex);
|
|
|
| int get kind => constants.kindFromEncoding(_variableMirror._descriptor);
|
|
|
| @@ -1224,13 +1267,21 @@ abstract class ImplicitAccessorMirrorImpl extends _DataCaching
|
| Type get reflectedReturnType => _variableMirror.reflectedType;
|
|
|
| @override
|
| + bool get hasDynamicReflectedReturnType =>
|
| + _variableMirror.hasDynamicReflectedType;
|
| +
|
| + @override
|
| + Type get dynamicReflectedReturnType => _variableMirror.dynamicReflectedType;
|
| +
|
| + @override
|
| String get source => null;
|
| }
|
|
|
| class ImplicitGetterMirrorImpl extends ImplicitAccessorMirrorImpl {
|
| ImplicitGetterMirrorImpl(ReflectableImpl reflector, int variableMirrorIndex,
|
| - Type reflectedType, int selfIndex)
|
| - : super(reflector, variableMirrorIndex, reflectedType, selfIndex);
|
| + Type reflectedType, Type dynamicReflectedType, int selfIndex)
|
| + : super(reflector, variableMirrorIndex, reflectedType,
|
| + dynamicReflectedType, selfIndex);
|
|
|
| @override
|
| bool get isGetter => true;
|
| @@ -1253,8 +1304,9 @@ class ImplicitGetterMirrorImpl extends ImplicitAccessorMirrorImpl {
|
|
|
| class ImplicitSetterMirrorImpl extends ImplicitAccessorMirrorImpl {
|
| ImplicitSetterMirrorImpl(ReflectableImpl reflector, int variableMirrorIndex,
|
| - Type reflectedType, int selfIndex)
|
| - : super(reflector, variableMirrorIndex, reflectedType, selfIndex);
|
| + Type reflectedType, Type dynamicReflectedType, int selfIndex)
|
| + : super(reflector, variableMirrorIndex, reflectedType,
|
| + dynamicReflectedType, selfIndex);
|
|
|
| @override
|
| bool get isGetter => false;
|
| @@ -1283,6 +1335,7 @@ class ImplicitSetterMirrorImpl extends ImplicitAccessorMirrorImpl {
|
| _variableMirror._reflector,
|
| _variableMirror._classMirrorIndex,
|
| _variableMirror._reflectedType,
|
| + _variableMirror._dynamicReflectedType,
|
| <Object>[],
|
| null)
|
| ];
|
| @@ -1306,6 +1359,7 @@ abstract class VariableMirrorBase extends _DataCaching
|
| final ReflectableImpl _reflector;
|
| final int _classMirrorIndex;
|
| final Type _reflectedType;
|
| + final Type _dynamicReflectedType;
|
| final List<Object> _metadata;
|
|
|
| VariableMirrorBase(
|
| @@ -1315,6 +1369,7 @@ abstract class VariableMirrorBase extends _DataCaching
|
| this._reflector,
|
| this._classMirrorIndex,
|
| this._reflectedType,
|
| + this._dynamicReflectedType,
|
| this._metadata);
|
|
|
| int get kind => constants.kindFromEncoding(_descriptor);
|
| @@ -1382,6 +1437,14 @@ abstract class VariableMirrorBase extends _DataCaching
|
| return _reflectedType;
|
| }
|
|
|
| + @override
|
| + bool get hasDynamicReflectedType =>
|
| + _dynamicReflectedType != null || hasReflectedType;
|
| +
|
| + @override
|
| + Type get dynamicReflectedType =>
|
| + _dynamicReflectedType != null ? _dynamicReflectedType : reflectedType;
|
| +
|
| // Note that [operator ==] is redefined slightly differently in the two
|
| // subtypes of this class, but they share this [hashCode] implementation.
|
| @override
|
| @@ -1414,9 +1477,10 @@ class VariableMirrorImpl extends VariableMirrorBase {
|
| ReflectableImpl reflectable,
|
| int classMirrorIndex,
|
| Type reflectedType,
|
| + Type dynamicReflectedType,
|
| List<Object> metadata)
|
| : super(name, descriptor, ownerIndex, reflectable, classMirrorIndex,
|
| - reflectedType, metadata);
|
| + reflectedType, dynamicReflectedType, metadata);
|
|
|
| // Note that the corresponding implementation of [hashCode] is inherited from
|
| // [VariableMirrorBase].
|
| @@ -1457,10 +1521,11 @@ class ParameterMirrorImpl extends VariableMirrorBase
|
| ReflectableImpl reflectable,
|
| int classMirrorIndex,
|
| Type reflectedType,
|
| + Type dynamicReflectedType,
|
| List<Object> metadata,
|
| this.defaultValue)
|
| : super(name, descriptor, ownerIndex, reflectable, classMirrorIndex,
|
| - reflectedType, metadata);
|
| + reflectedType, dynamicReflectedType, metadata);
|
|
|
| // Note that the corresponding implementation of [hashCode] is inherited from
|
| // [VariableMirrorBase].
|
| @@ -1538,7 +1603,7 @@ class VoidMirrorImpl implements TypeMirror {
|
|
|
| @override
|
| Type get reflectedType =>
|
| - throw new UnsupportedError("Attempt to get the reflected type of 'void'");
|
| + throw new UnsupportedError("Attempt to get the reflected type of `void`");
|
|
|
| @override
|
| String get simpleName => "void";
|
|
|