mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-27 06:43:19 +08:00
37 lines
691 B
TypeScript
37 lines
691 B
TypeScript
// Int32 contracts that do not hold: each write that is not an int32 by
|
|
// construction is reported with the expression and the `| 0` fix.
|
|
import type { Int32 } from "@scriptc/types";
|
|
|
|
class Span {
|
|
pos: Int32 = 0;
|
|
end: Int32 = 0;
|
|
readonly id: Int32;
|
|
constructor(id: number) {
|
|
this.id = id;
|
|
}
|
|
advance(): void {
|
|
this.pos++;
|
|
}
|
|
}
|
|
|
|
function width(span: Span): Int32 {
|
|
return span.end - span.pos;
|
|
}
|
|
|
|
function half(x: Int32): Int32 {
|
|
return x / 2;
|
|
}
|
|
|
|
let count: Int32 = 0;
|
|
function bump(): void {
|
|
count += 1;
|
|
}
|
|
|
|
const sizes = [1, 2, 3];
|
|
const len: Int32 = sizes.length;
|
|
|
|
const span = new Span(1.5);
|
|
span.advance();
|
|
bump();
|
|
console.log(width(span), half(7), count, len);
|