• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

forst-lang / forst / 24033636202
62%
main: 76%

Build:
Build:
LAST BUILD BRANCH: feat/full-request-sidecar
DEFAULT BRANCH: main
Ran 06 Apr 2026 01:29PM UTC
Jobs 1
Files 176
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Apr 2026 01:26PM UTC coverage: 61.354% (+0.05%) from 61.303%
24033636202

Pull #57

github

haveyaseen
feat(compiler): variable slice indexing and indexed assignment

Add IndexExpressionNode, parse `expr[i]` chains and `xs[i] = v` as assignment
(not comparison). Extend AssignmentNode LValues to []ExpressionNode; typecheck
slice element reads (Int index) and `=` into index expressions; emit Go
index expressions and assignments.

Example:
```forst
func pick(xs []String, i Int): String {
	return xs[i]
}
func write(xs []String, i Int) {
	xs[i] = "x"
}
```

fix(transformer): correct Go types for slices and named returns

Use transformType for shape fields and function parameters so []T becomes a
real Go slice type, not a hash alias. When returning a user-defined struct
type, transform call expressions (e.g. `return inner()`) after the ident→
composite pass. Treat TypeArray, TypeMap, and TypeObject as builtins when
normalizing function return types so `return out` for `[]String` is not fed
through struct wrapping.

Example:
```forst
type R = { ok: Bool }
func inner(): R { return { ok: true } }
funouter(): R { return inner() }
```

feat(examples): add tic-tac-toe multi-file sample

Add engine, types, server, and ftconfig under examples/in/tictactoe using
variable subscripts and slice updates.

test: add slice index and pipeline coverage; update AST tests for ExpressionNode LValues

chore(cursor): refine generate-commit-message skill wording and example rules
Pull Request #57: feat(compiler): variable slice indexing and indexed assignment

238 of 389 new or added lines in 20 files covered. (61.18%)

8 existing lines in 5 files now uncovered.

15012 of 24468 relevant lines covered (61.35%)

14.73 hits per line

Uncovered Changes

Lines Coverage ∆ File
39
55.92
10.47% forst/internal/parser/expression.go
18
64.59
-1.49% forst/internal/printer/printer.go
15
57.3
-1.17% forst/internal/hasher/hasher.go
15
39.42
1.77% forst/internal/transformer/go/statement.go
15
85.22
-12.63% forst/internal/typechecker/infer_assignment.go
12
55.79
-0.31% forst/internal/typechecker/infer_expression.go
11
19.2
-0.12% forst/cmd/forst/lsp/navigation_locals.go
7
83.56
-10.28% forst/internal/parser/assignment.go
6
80.65
-19.35% forst/internal/ast/expression.go
4
84.38
-15.63% forst/internal/ast/assignment.go
4
60.84
0.73% forst/internal/transformer/go/expression.go
2
76.29
-4.96% forst/internal/parser/statement.go
1
84.13
0.0% forst/internal/parser/var.go
1
65.55
0.0% forst/internal/transformer/go/function.go
1
34.08
-0.7% forst/internal/transformer/go/shape.go

Coverage Regressions

Lines Coverage ∆ File
3
76.29
-4.96% forst/internal/parser/statement.go
2
55.92
10.47% forst/internal/parser/expression.go
1
19.2
-0.12% forst/cmd/forst/lsp/navigation_locals.go
1
84.38
-15.63% forst/internal/ast/assignment.go
1
83.56
-10.28% forst/internal/parser/assignment.go
Subprojects
ID Flag name Job ID Ran Files Coverage
1 /jobs/179825862 24033636202.1 06 Apr 2026 01:29PM UTC 176
61.35
GitHub Action Run
Source Files on build 24033636202
  • Tree
  • List 176
  • Changed 18
  • Source Changed 0
  • Coverage Changed 18
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #57
  • PR Base - main (#24032070662)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc