google / google/reflectable.dart

call-function has no invoke capability

Open
#135 5 comments 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.