Introduce typed semantic analysis pipeline
This commit is contained in:
parent
117d188194
commit
f4cd4f4458
30 changed files with 2079 additions and 2381 deletions
14
README.md
14
README.md
|
|
@ -8,6 +8,11 @@ This is the practical boundary of the prototype:
|
|||
- It targets the Go toolchain by generating valid Go source and building through `go build`.
|
||||
- It is not a direct integration into Go's internal `cmd/compile` backend APIs.
|
||||
|
||||
The compiler keeps source spelling in its syntax AST, then builds lexical
|
||||
symbols, structural semantic types, resolved expression meanings, and typed
|
||||
HIR before Go emission. Class reference semantics live in `ClassType`; only
|
||||
the semantic Type-to-Go mapping turns a class such as `User` into `*User`.
|
||||
|
||||
## Supported language slice
|
||||
|
||||
- `fun` declarations
|
||||
|
|
@ -170,8 +175,8 @@ destructuring, or `.unwrap()`.
|
|||
|
||||
Gotlin-defined `class` and `data class` values are references automatically,
|
||||
including nested generic types such as `List<User>`. Explicit pointer syntax is
|
||||
still supported for compatibility. Go interop remains explicit, for example
|
||||
`*http.Request` and `*pgxpool.Pool`.
|
||||
reserved for Go interop, for example `*http.Request` and `*pgxpool.Pool`;
|
||||
applying `*` to a Gotlin class is a compile error.
|
||||
|
||||
Enums whose variants carry no payload are represented as string-backed values.
|
||||
The exact variant identifier is used for JSON and PostgreSQL text values:
|
||||
|
|
@ -251,8 +256,9 @@ go run ./cmd/gotlinc run ./examples/hello.gt
|
|||
|
||||
Gotlin coroutines use Go goroutines underneath, but expose only structured
|
||||
scopes. A scope waits for its children, propagates child failures, and cancels
|
||||
sibling coroutine contexts. The removed `worker` and bare `go` forms are not
|
||||
valid Gotlin syntax.
|
||||
sibling coroutine contexts. The removed `worker`, bare `go`, and channel
|
||||
`select` forms are not valid Gotlin syntax; use coroutine scopes, `delay`, and
|
||||
explicit channel `read()`/`send()` operations.
|
||||
|
||||
```kotlin
|
||||
suspend fun load(): Int {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue