google / google/reflectable.dart
call-function has no invoke capability
- Dominant language
- Dart
- Stars
- 386
- Forks
- 67
- PR merge metrics
- No merged PRs in 30d
Description
I have a Formatter class like this:
```
@inject
class Formatter {
final NumberFormatter number = new NumberFormatter();
final DecoratorFormatter decorate = new DecoratorFormatter();
final UpperCaseFormatter uppercase = new UpperCaseFormatter();
final LowerCaseFormatter lowercase = new LowerCaseFormatter();
final ChooseFormatter choose = new ChooseFormatter();
}
```
NumberFormatter, DecoratorFormatter... they are all marked with @inject
@inject has these capabilities:
```dart
class InjectAnnotation extends Reflectable {
const InjectAnnotation() : super(
// instanceInvokeCapability,
invokingCapability,
reflectedTypeCapability,
typeCapability,
typingCapability,
metadataCapability,
// newInstanceCapability,
);
}
```
I invoke the call-operator via:
```
final InstanceMirror instance = inject.reflect(new Formatter());
// This should call uppercase("a") which should transform to uppercase.call("a")
instance.invoke("uppercase",["a"]);
```
This gives me:
```bash
(NoSuchCapabilityError: no capability to invoke the method 'uppercase'
Receiver: Instance of 'Formatter'
Arguments: [a]
)
```
I have a workaround for this problem but I'm just curious if I'm doing something wrong if if this is by design?
Contributor guide
Assessment
This issue has not been assessed yet.