Type Alias AspectTyping<atom, runtime>
AspectTyping<atom, runtime>: { apply@around: { advice: ((state: runtime["State"],
callee: runtime["StackValue"],
this_: runtime["StackValue"],
arguments_: runtime["StackValue"][],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; await@after: { advice: ((state: runtime["State"],
value: runtime["OtherValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; await@before: { advice: ((state: runtime["State"],
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; block@declaration: { advice: ((state: runtime["State"],
kind: ControlKind,
frame: Frame<atom["Variable"], runtime["ScopeValue"]>,
tag: atom["Tag"]) => void); pointcut: ((kind: ControlKind,
tag: atom["Tag"]) => boolean); }; block@declaration-overwrite: { advice: (<kind>(state: runtime["State"],
kind: kind,
frame: Frame<atom["Variable"], runtime["ScopeValue"]>,
tag: atom["Tag"]) => Frame<atom["Variable"], runtime["ScopeValue"]>); pointcut: ((kind: ControlKind,
tag: atom["Tag"]) => boolean); }; block@setup: { advice: ((state: runtime["State"],
kind: ControlKind,
tag: atom["Tag"]) => runtime["State"]); pointcut: ((kind: ControlKind,
tag: atom["Tag"]) => boolean); }; block@teardown: { advice: ((state: runtime["State"],
kind: ControlKind,
tag: atom["Tag"]) => void); pointcut: ((kind: ControlKind,
tag: atom["Tag"]) => boolean); }; block@throwing: { advice: ((state: runtime["State"],
kind: ControlKind,
value: runtime["OtherValue"],
tag: atom["Tag"]) => void); pointcut: ((kind: ControlKind,
tag: atom["Tag"]) => boolean); }; break@before: { advice: ((state: runtime["State"],
label: atom["Label"],
tag: atom["Tag"]) => void); pointcut: ((label: atom["Label"],
tag: atom["Tag"]) => boolean); }; closure-block@after: { advice: ((state: runtime["State"],
kind: ClosureKind,
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((kind: ClosureKind,
tag: atom["Tag"]) => boolean); }; closure-block@before: { advice: ((state: runtime["State"],
kind: ClosureKind,
tag: atom["Tag"]) => void); pointcut: ((kind: ClosureKind,
tag: atom["Tag"]) => boolean); }; closure@after: { advice: ((state: runtime["State"],
kind: ClosureKind,
closure: runtime["OtherValue"] & Function,
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((kind: ClosureKind,
tag: atom["Tag"]) => boolean); }; construct@around: { advice: ((state: runtime["State"],
callee: runtime["StackValue"],
arguments_: runtime["StackValue"][],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; drop@before: { advice: ((state: runtime["State"],
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; eval@after: { advice: ((state: runtime["State"],
value: runtime["OtherValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; eval@before: { advice: ((state: runtime["State"],
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((tag: atom["Tag"]) => boolean); }; export@before: { advice: ((state: runtime["State"],
specifier: atom["Specifier"],
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((specifier: atom["Specifier"],
tag: atom["Tag"]) => boolean); }; generator-block@resumption: { advice: ((state: runtime["State"],
kind: GeneratorKind,
tag: atom["Tag"]) => void); pointcut: ((kind: GeneratorKind,
tag: atom["Tag"]) => boolean); }; generator-block@suspension: { advice: ((state: runtime["State"],
kind: GeneratorKind,
tag: atom["Tag"]) => void); pointcut: ((kind: GeneratorKind,
tag: atom["Tag"]) => boolean); }; import@after: { advice: ((state: runtime["State"],
source: atom["Source"],
specifier: atom["Specifier"] | null,
value: runtime["OtherValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((source: atom["Source"],
specifier: atom["Specifier"] | null,
tag: atom["Tag"]) => boolean); }; intrinsic@after: { advice: ((state: runtime["State"],
name: Intrinsic,
value: runtime["OtherValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((name: Intrinsic,
tag: atom["Tag"]) => boolean); }; primitive@after: { advice: ((state: runtime["State"],
value: RuntimePrimitive & runtime["OtherValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((primitive: RuntimePrimitive,
tag: atom["Tag"]) => boolean); }; program-block@after: { advice: ((state: runtime["State"],
kind: ProgramKind,
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((kind: ProgramKind,
tag: atom["Tag"]) => boolean); }; program-block@before: { advice: ((state: runtime["State"],
kind: ProgramKind,
head: Header[],
tag: atom["Tag"]) => void); pointcut: ((kind: ProgramKind,
tag: atom["Tag"]) => boolean); }; read@after: { advice: ((state: runtime["State"],
identifier: Parameter | atom["Variable"],
value: runtime["ScopeValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((identifier: Parameter | atom["Variable"],
tag: atom["Tag"]) => boolean); }; segment-block@after: { advice: ((state: runtime["State"],
kind: SegmentKind,
tag: atom["Tag"]) => void); pointcut: ((kind: SegmentKind,
tag: atom["Tag"]) => boolean); }; segment-block@before: { advice: ((state: runtime["State"],
kind: SegmentKind,
labels: atom["Label"][],
tag: atom["Tag"]) => void); pointcut: ((kind: SegmentKind,
tag: atom["Tag"]) => boolean); }; test@before: { advice: ((state: runtime["State"],
kind: TestKind,
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((kind: TestKind,
tag: atom["Tag"]) => boolean); }; write@before: { advice: ((state: runtime["State"],
identifier: Parameter | atom["Variable"],
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["ScopeValue"]); pointcut: ((identifier: Parameter | atom["Variable"],
tag: atom["Tag"]) => boolean); }; yield@after: { advice: ((state: runtime["State"],
delegate: boolean,
value: runtime["OtherValue"],
tag: atom["Tag"]) => runtime["StackValue"]); pointcut: ((delegate: boolean,
tag: atom["Tag"]) => boolean); }; yield@before: { advice: ((state: runtime["State"],
delegate: boolean,
value: runtime["StackValue"],
tag: atom["Tag"]) => runtime["OtherValue"]); pointcut: ((delegate: boolean,
tag: atom["Tag"]) => boolean); }; } Type declaration
apply@around: {
advice: ((state: runtime["State"], callee: runtime["StackValue"], this_: runtime["StackValue"], arguments_: runtime["StackValue"][], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], callee: runtime["StackValue"], this_: runtime["StackValue"], arguments_: runtime["StackValue"][], tag: atom["Tag"]) => runtime["StackValue"])
- (state, callee, this_, arguments_, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
await@after: {
advice: ((state: runtime["State"], value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"])
- (state, value, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
await@before: {
advice: ((state: runtime["State"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"])
- (state, value, tag): runtime["OtherValue"]
Returns runtime["OtherValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
block@declaration: {
advice: ((state: runtime["State"], kind: ControlKind, frame: Frame<atom["Variable"], runtime["ScopeValue"]>, tag: atom["Tag"]) => void);
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: ControlKind, frame: Frame<atom["Variable"], runtime["ScopeValue"]>, tag: atom["Tag"]) => void)
- (state, kind, frame, tag): void
Returns void
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
block@declaration-overwrite: {
advice: (<kind>(state: runtime["State"], kind: kind, frame: Frame<atom["Variable"], runtime["ScopeValue"]>, tag: atom["Tag"]) => Frame<atom["Variable"], runtime["ScopeValue"]>);
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean);
}
block@setup: {
advice: ((state: runtime["State"], kind: ControlKind, tag: atom["Tag"]) => runtime["State"]);
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean);
}
block@teardown: {
advice: ((state: runtime["State"], kind: ControlKind, tag: atom["Tag"]) => void);
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: ControlKind, tag: atom["Tag"]) => void)
- (state, kind, tag): void
Returns void
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
block@throwing: {
advice: ((state: runtime["State"], kind: ControlKind, value: runtime["OtherValue"], tag: atom["Tag"]) => void);
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: ControlKind, value: runtime["OtherValue"], tag: atom["Tag"]) => void)
- (state, kind, value, tag): void
Returns void
pointcut: ((kind: ControlKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
break@before: {
advice: ((state: runtime["State"], label: atom["Label"], tag: atom["Tag"]) => void);
pointcut: ((label: atom["Label"], tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], label: atom["Label"], tag: atom["Tag"]) => void)
- (state, label, tag): void
Returns void
pointcut: ((label: atom["Label"], tag: atom["Tag"]) => boolean)
- (label, tag): boolean
Returns boolean
closure-block@after: {
advice: ((state: runtime["State"], kind: ClosureKind, value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((kind: ClosureKind, tag: atom["Tag"]) => boolean);
}
closure-block@before: {
advice: ((state: runtime["State"], kind: ClosureKind, tag: atom["Tag"]) => void);
pointcut: ((kind: ClosureKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: ClosureKind, tag: atom["Tag"]) => void)
- (state, kind, tag): void
Returns void
pointcut: ((kind: ClosureKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
closure@after: {
advice: ((state: runtime["State"], kind: ClosureKind, closure: runtime["OtherValue"] & Function, tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((kind: ClosureKind, tag: atom["Tag"]) => boolean);
}
construct@around: {
advice: ((state: runtime["State"], callee: runtime["StackValue"], arguments_: runtime["StackValue"][], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], callee: runtime["StackValue"], arguments_: runtime["StackValue"][], tag: atom["Tag"]) => runtime["StackValue"])
- (state, callee, arguments_, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
drop@before: {
advice: ((state: runtime["State"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"])
- (state, value, tag): runtime["OtherValue"]
Returns runtime["OtherValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
eval@after: {
advice: ((state: runtime["State"], value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"])
- (state, value, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
eval@before: {
advice: ((state: runtime["State"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"])
- (state, value, tag): runtime["OtherValue"]
Returns runtime["OtherValue"]
pointcut: ((tag: atom["Tag"]) => boolean)
- (tag): boolean
Returns boolean
export@before: {
advice: ((state: runtime["State"], specifier: atom["Specifier"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((specifier: atom["Specifier"], tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], specifier: atom["Specifier"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"])
- (state, specifier, value, tag): runtime["OtherValue"]
Returns runtime["OtherValue"]
pointcut: ((specifier: atom["Specifier"], tag: atom["Tag"]) => boolean)
- (specifier, tag): boolean
Parameters
- specifier: atom["Specifier"]
- tag: atom["Tag"]
Returns boolean
generator-block@resumption: {
advice: ((state: runtime["State"], kind: GeneratorKind, tag: atom["Tag"]) => void);
pointcut: ((kind: GeneratorKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: GeneratorKind, tag: atom["Tag"]) => void)
- (state, kind, tag): void
Returns void
pointcut: ((kind: GeneratorKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
generator-block@suspension: {
advice: ((state: runtime["State"], kind: GeneratorKind, tag: atom["Tag"]) => void);
pointcut: ((kind: GeneratorKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: GeneratorKind, tag: atom["Tag"]) => void)
- (state, kind, tag): void
Returns void
pointcut: ((kind: GeneratorKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
import@after: {
advice: ((state: runtime["State"], source: atom["Source"], specifier: atom["Specifier"] | null, value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((source: atom["Source"], specifier: atom["Specifier"] | null, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], source: atom["Source"], specifier: atom["Specifier"] | null, value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"])
- (state, source, specifier, value, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((source: atom["Source"], specifier: atom["Specifier"] | null, tag: atom["Tag"]) => boolean)
- (source, specifier, tag): boolean
Parameters
- source: atom["Source"]
- specifier: atom["Specifier"] | null
- tag: atom["Tag"]
Returns boolean
intrinsic@after: {
advice: ((state: runtime["State"], name: Intrinsic, value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((name: Intrinsic, tag: atom["Tag"]) => boolean);
}
primitive@after: {
advice: ((state: runtime["State"], value: RuntimePrimitive & runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((primitive: RuntimePrimitive, tag: atom["Tag"]) => boolean);
}
program-block@after: {
advice: ((state: runtime["State"], kind: ProgramKind, value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((kind: ProgramKind, tag: atom["Tag"]) => boolean);
}
program-block@before: {
advice: ((state: runtime["State"], kind: ProgramKind, head: Header[], tag: atom["Tag"]) => void);
pointcut: ((kind: ProgramKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: ProgramKind, head: Header[], tag: atom["Tag"]) => void)
- (state, kind, head, tag): void
Returns void
pointcut: ((kind: ProgramKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
read@after: {
advice: ((state: runtime["State"], identifier: Parameter | atom["Variable"], value: runtime["ScopeValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((identifier: Parameter | atom["Variable"], tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], identifier: Parameter | atom["Variable"], value: runtime["ScopeValue"], tag: atom["Tag"]) => runtime["StackValue"])
- (state, identifier, value, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((identifier: Parameter | atom["Variable"], tag: atom["Tag"]) => boolean)
- (identifier, tag): boolean
Returns boolean
segment-block@after: {
advice: ((state: runtime["State"], kind: SegmentKind, tag: atom["Tag"]) => void);
pointcut: ((kind: SegmentKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: SegmentKind, tag: atom["Tag"]) => void)
- (state, kind, tag): void
Returns void
pointcut: ((kind: SegmentKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
segment-block@before: {
advice: ((state: runtime["State"], kind: SegmentKind, labels: atom["Label"][], tag: atom["Tag"]) => void);
pointcut: ((kind: SegmentKind, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], kind: SegmentKind, labels: atom["Label"][], tag: atom["Tag"]) => void)
- (state, kind, labels, tag): void
Returns void
pointcut: ((kind: SegmentKind, tag: atom["Tag"]) => boolean)
- (kind, tag): boolean
Returns boolean
test@before: {
advice: ((state: runtime["State"], kind: TestKind, value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((kind: TestKind, tag: atom["Tag"]) => boolean);
}
write@before: {
advice: ((state: runtime["State"], identifier: Parameter | atom["Variable"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["ScopeValue"]);
pointcut: ((identifier: Parameter | atom["Variable"], tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], identifier: Parameter | atom["Variable"], value: runtime["StackValue"], tag: atom["Tag"]) => runtime["ScopeValue"])
- (state, identifier, value, tag): runtime["ScopeValue"]
Returns runtime["ScopeValue"]
pointcut: ((identifier: Parameter | atom["Variable"], tag: atom["Tag"]) => boolean)
- (identifier, tag): boolean
Returns boolean
yield@after: {
advice: ((state: runtime["State"], delegate: boolean, value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"]);
pointcut: ((delegate: boolean, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], delegate: boolean, value: runtime["OtherValue"], tag: atom["Tag"]) => runtime["StackValue"])
- (state, delegate, value, tag): runtime["StackValue"]
Returns runtime["StackValue"]
pointcut: ((delegate: boolean, tag: atom["Tag"]) => boolean)
- (delegate, tag): boolean
Parameters
- delegate: boolean
- tag: atom["Tag"]
Returns boolean
yield@before: {
advice: ((state: runtime["State"], delegate: boolean, value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"]);
pointcut: ((delegate: boolean, tag: atom["Tag"]) => boolean);
}
advice: ((state: runtime["State"], delegate: boolean, value: runtime["StackValue"], tag: atom["Tag"]) => runtime["OtherValue"])
- (state, delegate, value, tag): runtime["OtherValue"]
Returns runtime["OtherValue"]
pointcut: ((delegate: boolean, tag: atom["Tag"]) => boolean)
- (delegate, tag): boolean
Parameters
- delegate: boolean
- tag: atom["Tag"]
Returns boolean
The standard weaving API expects a global value at
config.advice_variable
that holds all the advice functions. It is simpler to use than the flexible weaving API but it does let the user define the static information provided to the advice functions.