1.1 --- a/docs/invocation.txt Sat Jun 28 20:46:45 2008 +0200
1.2 +++ b/docs/invocation.txt Mon Jun 30 00:32:54 2008 +0200
1.3 @@ -53,7 +53,7 @@
1.4 # f(obj, 1, 2)
1.5 # f known as C.m at compile-time:
1.6 # m(obj "assert isinstance(obj, C)", 1, 2)
1.7 - # f not known at compiler-time:
1.8 + # f not known at compile-time:
1.9 # f(<context>, obj, 1, 2) for instance-accessed methods
1.10 # f(obj, 1, 2) for class-accessed methods
1.11 # f(obj, 1, 2) for functions
1.12 @@ -61,6 +61,51 @@
1.13 (Could either have universal context usage even for functions, which would
1.14 ignore them, or attempt to remove contexts when functions are called.)
1.15
1.16 +Argument lists for functions:
1.17 +
1.18 + f(obj, 1, 2) # f known as function at compile-time
1.19 +
1.20 + f -> don't get any context information
1.21 + obj -> argument #1
1.22 + 1 -> argument #2
1.23 + 2 -> argument #3
1.24 +
1.25 +Argument lists for methods:
1.26 +
1.27 + f(obj, 1, 2) # f known as C.m at compile-time (context is C)
1.28 +
1.29 + f -> C.m - don't get any context information
1.30 + obj -> argument #1
1.31 + 1 -> argument #2
1.32 + 2 -> argument #3
1.33 +
1.34 +Argument lists for methods:
1.35 +
1.36 + f(obj, 1, 2) # f known as C.m at compile-time (context is an instance)
1.37 +
1.38 + f -> C.m
1.39 + -> context is argument #1
1.40 + obj -> argument #2
1.41 + 1 -> argument #3
1.42 + 2 -> argument #4
1.43 +
1.44 +Argument lists for unknown callables:
1.45 +
1.46 + f(obj, 1, 2) # f not known at compile-time
1.47 +
1.48 + f -> f
1.49 + -> load context for argument #1
1.50 + obj -> argument #2
1.51 + 1 -> argument #3
1.52 + 2 -> argument #4
1.53 +
1.54 + Then, check the context and shift the frame if necessary:
1.55 +
1.56 + <context> is module or class:
1.57 + (<context>, obj, 1, 2) -> (obj, 1, 2)
1.58 +
1.59 + <context> is instance: no change
1.60 +
1.61 Functions as methods:
1.62
1.63 def f(x, y, z): ...