You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2025-09-01-AST-me-anything.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -245,5 +245,5 @@ The main body of the `Compiler.Analyze` method just steps through a series of te
245
245
The node types mentioned in this list from a very small subset of the all the node types.
246
246
Here we see pretty much a few data-oriented node types. Clearly the `Symbol` and `ISeq` analyzers are doing the heavy lifting. Enough that each gets its own post:
247
247
248
-
-__Symbolic of what?__
249
-
-__ISeq clarity__
248
+
-[C4: Symbolic of what?]({{site.baseurl}}{% post_url 2025-09-02-symbolic-of-what %}) - A little digression on what symbols represent
249
+
-[C4: ISeq clarity]({{site.baseurl}}{% post_url 2025-09-03-iseq-clarity %}) - How to analyze an `ISeq`
Copy file name to clipboardExpand all lines: _posts/2025-09-02-symbolic-of-what.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -258,12 +258,12 @@ 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__.
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
265
265
Looking up types corresponding to names is done in `HostExpr.MaybeType` and `HostExpr.MaybeArrayType`.
266
-
I've written about these in __Are you my type?__.
266
+
I've written about these in [Are you my type?]({{site.baseurl}}{% post_url 2025-03-01-are-you-my-type %}).
267
267
268
268
## I'm feeling a little testy
269
269
@@ -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__. 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