native test framework
This commit is contained in:
@@ -18,6 +18,8 @@ roadmap and milestone history.
|
||||
- `hide` makes any named top-level declaration file-local; declarations are public by default,
|
||||
leading underscores are ordinary identifier characters, and imports are always file-local
|
||||
- relative `.h` imports as synthetic C header package namespaces
|
||||
- native `name test { ... }` declarations with implicit fallible-void results, plus anonymous
|
||||
transitive `test import "..."` discovery used only by test builds
|
||||
- root `main` validation with trap executable recovery for missing or unusable entry points
|
||||
|
||||
### scalar, aggregate, and pointer types
|
||||
@@ -180,6 +182,8 @@ as `math.divfloor(a, b)` resolve to ordinary functions.
|
||||
- `std/io` explicit `Io` capabilities, provider-bound `Reader`/`Writer` handles, existing-file open/close operations, allocation-free `write_all`, and comptime-expanded writer-first `print`; formatting supports natural `{}`, byte `{s}`, decimal `{d}`, integer `{b}` / `{o}` / `{x}` / `{X}`, byte-character `{c}`, scientific float `{e}`, and `{{` / `}}`, with malformed formats and incompatible tuple fields rejected at comptime
|
||||
- entry points are either `main func() ...` or `main func(init process.Init) ...`; `std/process.Init` carries startup capabilities, currently only `io`, while the system provider remains hidden inside `std/io`
|
||||
- `std/debug.print` is an allocation-free, failure-ignoring stderr escape hatch independent of `process.Init`
|
||||
- `std/testing` supplies fallible `expect` and expected-first `expect_equal`; direct calls through
|
||||
an alias of exactly `@std/testing` receive compiler-injected source locations
|
||||
|
||||
### compiler behavior
|
||||
|
||||
@@ -188,6 +192,8 @@ as `math.divfloor(a, b)` resolve to ordinary functions.
|
||||
- static, eager runtime, mutable runtime, and deferred problematic globals with cycle diagnostics
|
||||
- demand-driven LLVM declarations for referenced foreign functions
|
||||
- root `main` may be parameterless or accept canonical `@std/process Init`; the generated C entry point obtains the hidden system I/O provider and constructs the init value
|
||||
- `brolang test [root]` reuses `build.bro`, discovers only explicit test-import edges, skips the
|
||||
application entry point, and runs tests sequentially while continuing after assertion failures
|
||||
- replaceable dynamically loaded libclang C-import backend
|
||||
- C-header import caching by canonical path, target, include paths, and defines
|
||||
|
||||
|
||||
Reference in New Issue
Block a user