mirror of
https://github.com/Noratrieb/riverdelta.git
synced 2026-01-17 01:45:03 +01:00
fmt
This commit is contained in:
parent
bf9fbcc069
commit
7ca78530a1
4 changed files with 58 additions and 36 deletions
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -228,7 +228,7 @@ function resolveModule(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case "type": {
|
case "type": {
|
||||||
tyParamScopes = item.generics.map(({name}) => name);
|
tyParamScopes = item.generics.map(({ name }) => name);
|
||||||
|
|
||||||
const type = { ...superFoldItem(item, this) };
|
const type = { ...superFoldItem(item, this) };
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
@ -46,11 +54,11 @@ type FuncCtx = {
|
||||||
localTys: Ty[];
|
localTys: Ty[];
|
||||||
loopState: LoopState[];
|
loopState: LoopState[];
|
||||||
checkExpr: (expr: Expr<Resolved>) => Expr<Typecked>;
|
checkExpr: (expr: Expr<Resolved>) => Expr<Typecked>;
|
||||||
};
|
};
|
||||||
|
|
||||||
type LoopState = { hasBreak: boolean; loopId: LoopId };
|
type LoopState = { hasBreak: boolean; loopId: LoopId };
|
||||||
|
|
||||||
function typeOfValue(fcx: FuncCtx, res: Resolution, span: Span): Ty {
|
function typeOfValue(fcx: FuncCtx, res: Resolution, span: Span): Ty {
|
||||||
switch (res.kind) {
|
switch (res.kind) {
|
||||||
case "local": {
|
case "local": {
|
||||||
const idx = fcx.localTys.length - 1 - res.index;
|
const idx = fcx.localTys.length - 1 - res.index;
|
||||||
|
|
@ -69,8 +77,7 @@ type FuncCtx = {
|
||||||
case "error":
|
case "error":
|
||||||
return tyErrorFrom(res);
|
return tyErrorFrom(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function typeOfBuiltinValue(
|
export function typeOfBuiltinValue(
|
||||||
fcx: FuncCtx,
|
fcx: FuncCtx,
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue