This commit is contained in:
nora 2023-12-15 18:32:53 +01:00
parent bf9fbcc069
commit 7ca78530a1
4 changed files with 58 additions and 36 deletions

View file

@ -10,7 +10,7 @@ A Riverdelta program consists of many items, like functions. Every item ends wit
semicolon. semicolon.
```js ```js
item = item_function | item_type | item_import | item_extern | item_mod item = item_function | item_type | item_import | item_extern | item_mod;
``` ```
### Functions ### Functions
@ -25,6 +25,7 @@ item_function := "function" function_sig "=" expr ";"
```js ```js
function helloWorld() = ; function helloWorld() = ;
``` ```
```js ```js
function block() = ( function block() = (
1; 1;
@ -136,7 +137,6 @@ the module statement.
`.nil` files cannot declare file submodules but only inline modules. `.nil` files cannot declare file submodules but only inline modules.
If the current file is `a/a.mod.nil`, then `mod foo;` will look for `a/b.nil` or `a/b/b.mod.nil`. If the current file is `a/a.mod.nil`, then `mod foo;` will look for `a/b.nil` or `a/b/b.mod.nil`.
### Globals ### Globals
Globals are mutable values. Globals are mutable values.

View file

@ -29,7 +29,15 @@ import {
import { CompilerError, ErrorEmitted, Span, unreachable } from "../error"; import { CompilerError, ErrorEmitted, Span, unreachable } from "../error";
import { printTy } from "../printer"; import { printTy } from "../printer";
import { InferContext } from "./infer"; import { InferContext } from "./infer";
import { TypeckCtx, emitError, lowerAstTy, mkTyFn, tyError, tyErrorFrom, typeOfItem } from "./item"; import {
TypeckCtx,
emitError,
lowerAstTy,
mkTyFn,
tyError,
tyErrorFrom,
typeOfItem,
} from "./item";
export function exprError(err: ErrorEmitted, span: Span): Expr<Typecked> { export function exprError(err: ErrorEmitted, span: Span): Expr<Typecked> {
return { return {
@ -71,7 +79,6 @@ type FuncCtx = {
} }
} }
export function typeOfBuiltinValue( export function typeOfBuiltinValue(
fcx: FuncCtx, fcx: FuncCtx,
name: BuiltinName, name: BuiltinName,

View file

@ -1,4 +1,19 @@
import { Crate, Expr, Folder, Item, ItemId, Resolved, TY_I32, TY_INT, Ty, TyFn, Typecked, foldAst, mkDefaultFolder, tyIsUnit } from "../ast"; import {
Crate,
Expr,
Folder,
Item,
ItemId,
Resolved,
TY_I32,
TY_INT,
Ty,
TyFn,
Typecked,
foldAst,
mkDefaultFolder,
tyIsUnit,
} from "../ast";
import { GlobalContext } from "../context"; import { GlobalContext } from "../context";
import { CompilerError, ErrorEmitted, Span } from "../error"; import { CompilerError, ErrorEmitted, Span } from "../error";
import { ComplexMap } from "../utils"; import { ComplexMap } from "../utils";