Skip to content

types.aug ​

Generic dependency injection · Source and specification

Files in this project

Code ​

aug
// aug-spec: "types.aug.md" explains this file. Read it before changes; refresh with aug spec.
import Console from august.io
interface Repository<T>:
    get() returns T
NumberRepository() implements Repository<int>:
    get():
        return 7
Program(resolve Repository<int> repository) implements IProgram:
    start(resolve Console console):
        console.write(value=repository.get())
interface IProgram:
    start(resolve Console console) uses Console.write
aug
// aug-spec: "types.aug.md" explains this file. Read it before changes; refresh with aug spec.
import Console from august.io
interface Repository<T> {
    get() returns T
}
NumberRepository() implements Repository<int> {
    get() {
        return 7
    }
}
Program(resolve Repository<int> repository) implements IProgram {
    start(resolve Console console) {
        console.write(value=repository.get())
    }
}
interface IProgram {
    start(resolve Console console) uses Console.write
}

Compiled specification ​

Interactions and sequences

Repository · interface · source ​

The type parameters are T.

Repository.get · source ​

It returns T.

NumberRepository · class · source ​

It implements Repository<int>.

NumberRepository.get · source ​

It returns 7. source

Checked interface
text
get() returns int

Program · class · source ​

It implements IProgram. The repository dependency is injected as Repository<int> and stored read-only.

Program.start · source ​

It gets console (Console) from dependency injection. It can call Console.write. It passes repository.get to console.write. source

Checked interface
text
start(resolve Console console) returns void uses Console.write

It gets console (Console) from dependency injection. It can call Console.write.

IProgram · interface · source ​

IProgram.start · source ​

It gets console (Console) from dependency injection. It can call Console.write.

Dependencies ​

It uses Console (write) from august.io.

Last updated:

The world runs on language