|
1 | 1 | --- |
2 | 2 | layout: post |
3 | 3 | title: C4 - Symbolic of what? |
4 | | -date: 2025-10-02 00:00:00 -0500 |
| 4 | +date: 2025-09-02 00:00:00 -0500 |
5 | 5 | categories: general |
6 | 6 | --- |
7 | 7 |
|
@@ -258,7 +258,7 @@ private static object ResolveIn(Namespace n, Symbol symbol, bool allowPrivate) |
258 | 258 |
|
259 | 259 | To finish of this code, some brief comments on a few of the auxiliary methods mentioned above. |
260 | 260 |
|
261 | | -`Compiler.ReferenceLocal` is called when we have identified a reference to a local binding. It does some bookkeeping needed for code-gen. Specifically, it notes the usage of the local binding in the containing function (if there is one) and any functions above that is might be nested in. This is so that we know to close over those variables when creating an instance of the function. It also notes if the local variable is the `this` variable; reference to `this` precludes static linking. But more about that in [C4: Functional anatomy]({{site.baseurl}}{% post_url 2025-10-04-functional-anatomy}). |
| 261 | +`Compiler.ReferenceLocal` is called when we have identified a reference to a local binding. It does some bookkeeping needed for code-gen. Specifically, it notes the usage of the local binding in the containing function (if there is one) and any functions above that is might be nested in. This is so that we know to close over those variables when creating an instance of the function. It also notes if the local variable is the `this` variable; reference to `this` precludes static linking. But more about that in [C4: Functional anatomy]({{site.baseurl}}{% post_url 2025-09-04-functional-anatomy}). |
262 | 262 |
|
263 | 263 | `Compiler.RegisterVar` is similar. It just notes the reference to the `Var` in the containing function (if there is one). A field in the class implementing the function will be created and initialized to the `Var` in question. |
264 | 264 |
|
@@ -288,7 +288,7 @@ These are when the symbol does not have a namespace: |
288 | 288 | - `ns` -- treated as a special case -- always found |
289 | 289 | - name found in current namespace (return var) (there are variants in the resolve/lookup code that will create the `Var` if not found) |
290 | 290 |
|
291 | | -Several kinds of AST nodes can be created from symbols. The details of node types are covered in [C4: AST me anything]({{site.baseurl}}{% post_url 2025-10-01-AST-me-anything}). For symbols with a namespace: |
| 291 | +Several kinds of AST nodes can be created from symbols. The details of node types are covered in [C4: AST me anything]({{site.baseurl}}{% post_url 2025-09-01-AST-me-anything}). For symbols with a namespace: |
292 | 292 |
|
293 | 293 | - ns/name, ns names a `Type`, that type has a field or property with the given name => `StaticFieldExpr` or `StaticPropertyExpr` |
294 | 294 | - ns/name, ns names a `Type`, no field or property found, name does not start with a period => `QualifiedMethodExpr`, Static |
|
0 commit comments