Skip to content

Commit a19d820

Browse files
committedJul 17, 2023
Update to compile under J* 1.9
1 parent ecb5b57 commit a19d820

18 files changed

+104
-104
lines changed
 

‎pulsar/errors/buffered_reporter.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import pulsar.errors.reporter for IReporter, Severity
66
// - `formatter`: an object that provides a method format(pulsar.errors.Severity, String, parse.token.Token) -> String
77
// - `writer`: an object that provides a method write(string) -> void
88
class BufferedReporter is IReporter
9-
fun new(formatter, writer)
9+
construct(formatter, writer)
1010
this._formatter = formatter
1111
this._writer = writer
1212
this._errors = []

‎pulsar/errors/pretty_formatter.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class PrettyFormatter
2323
errorBuilder.add("\n")
2424

2525
for var i = 0; i < colStart; i += 1
26-
errorBuilder.add("\t" if line.charAt(i) == char("\t") else " ")
26+
errorBuilder.add("\t" if line.charAt(i) == std.char("\t") else " ")
2727
end
2828

2929
errorBuilder.add("^")

‎pulsar/opt_parse.jsr

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ static fun popn(stack, num)
8181
end
8282

8383
class OptParser
84-
fun new(usage, description, options)
84+
construct(usage, description, options)
8585
this._options = options
8686
this._optMap = buildMapFromOptions(options)
8787
this._helpMsg = buildHelpMessage(usage, description, options)
@@ -156,7 +156,7 @@ class OptParser
156156
end
157157

158158
class Option
159-
fun new(long, short, description, args=0, argNames=null, default=null, required=false)
159+
construct(long, short, description, args=0, argNames=null, default=null, required=false)
160160
assert(#long > 1, "Long option must have length greater than one", InvalidArgException)
161161
assert(#short == 1, "Short option must have length equal to one", InvalidArgException)
162162
assert(args == 0 or args == #argNames, "Not enough argument names given", InvalidArgException)

‎pulsar/parse/ast.jsr

+39-39
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Stmt is Node end
1818
class Expr is Node end
1919

2020
class AstModule is Node
21-
fun new(statements)
21+
construct(statements)
2222
this.statements = statements
2323
end
2424

@@ -32,7 +32,7 @@ class AstModule is Node
3232
end
3333

3434
static class Decl is Stmt
35-
fun new()
35+
construct()
3636
this._static = false
3737
end
3838

@@ -46,7 +46,7 @@ static class Decl is Stmt
4646
end
4747

4848
class FuncDecl is Decl
49-
fun new(funTok, name, leftBracket, arguments, defaults, vararg, rightBracket, body)
49+
construct(funTok, name, leftBracket, arguments, defaults, vararg, rightBracket, body)
5050
super()
5151
this.funTok = funTok
5252
this.name = name
@@ -68,7 +68,7 @@ class FuncDecl is Decl
6868
end
6969

7070
class NativeDecl is Decl
71-
fun new(nativeTok, name, leftBracket, arguments, defaults, vararg, rightBracket)
71+
construct(nativeTok, name, leftBracket, arguments, defaults, vararg, rightBracket)
7272
super()
7373
this.nativeTok = nativeTok
7474
this.name = name
@@ -89,7 +89,7 @@ class NativeDecl is Decl
8989
end
9090

9191
class ClassDecl is Decl
92-
fun new(classTok, name, superClass, methods)
92+
construct(classTok, name, superClass, methods)
9393
super()
9494
this.classTok = classTok
9595
this.name = name
@@ -107,7 +107,7 @@ class ClassDecl is Decl
107107
end
108108

109109
class VarDecl is Decl
110-
fun new(varTok, names, equal, init, unpack)
110+
construct(varTok, names, equal, init, unpack)
111111
super()
112112
this.varTok = varTok
113113
this.names = names
@@ -126,7 +126,7 @@ class VarDecl is Decl
126126
end
127127

128128
class BlockStmt is Stmt
129-
fun new(statements)
129+
construct(statements)
130130
this.statements = statements
131131
end
132132

@@ -140,7 +140,7 @@ class BlockStmt is Stmt
140140
end
141141

142142
class IfStmt is Stmt
143-
fun new(ifTok, cond, thenBody, elseBody)
143+
construct(ifTok, cond, thenBody, elseBody)
144144
this.ifTok = ifTok
145145
this.cond = cond
146146
this.thenBody = thenBody
@@ -157,7 +157,7 @@ class IfStmt is Stmt
157157
end
158158

159159
class ForStmt is Stmt
160-
fun new(forTok, init, cond, action, body)
160+
construct(forTok, init, cond, action, body)
161161
this.forTok = forTok
162162
this.init = init
163163
this.cond = cond
@@ -175,7 +175,7 @@ class ForStmt is Stmt
175175
end
176176

177177
class ForEachStmt is Stmt
178-
fun new(forTok, variable, inTok, iter, body)
178+
construct(forTok, variable, inTok, iter, body)
179179
this.forTok = forTok
180180
this.variable, this.iter = variable, iter
181181
this.inTok = inTok
@@ -192,7 +192,7 @@ class ForEachStmt is Stmt
192192
end
193193

194194
class WhileStmt is Stmt
195-
fun new(whileTok, cond, body)
195+
construct(whileTok, cond, body)
196196
this.whileTok = whileTok
197197
this.cond = cond
198198
this.body = body
@@ -208,7 +208,7 @@ class WhileStmt is Stmt
208208
end
209209

210210
class ReturnStmt is Stmt
211-
fun new(returnTok, expr)
211+
construct(returnTok, expr)
212212
this.returnTok = returnTok
213213
this.expr = expr
214214
end
@@ -223,7 +223,7 @@ class ReturnStmt is Stmt
223223
end
224224

225225
class ImportStmt is Stmt
226-
fun new(importTok, modules, asName, names)
226+
construct(importTok, modules, asName, names)
227227
this.importTok = importTok
228228
this.modules = modules
229229
this.asName = asName
@@ -240,7 +240,7 @@ class ImportStmt is Stmt
240240
end
241241

242242
class TryStmt is Stmt
243-
fun new(tokTry, tryBlock, excepts, ensureBlock)
243+
construct(tokTry, tryBlock, excepts, ensureBlock)
244244
this.tokTry = tokTry
245245
this.tryBlock = tryBlock
246246
this.excepts = excepts
@@ -257,7 +257,7 @@ class TryStmt is Stmt
257257
end
258258

259259
class ExceptStmt is Stmt
260-
fun new(exceptTok, expression, name, body)
260+
construct(exceptTok, expression, name, body)
261261
this.exceptTok = exceptTok
262262
this.expression = expression
263263
this.name = name
@@ -274,7 +274,7 @@ class ExceptStmt is Stmt
274274
end
275275

276276
class RaiseStmt is Stmt
277-
fun new(raiseTok, expression)
277+
construct(raiseTok, expression)
278278
this.raiseTok = raiseTok
279279
this.expression = expression
280280
end
@@ -289,7 +289,7 @@ class RaiseStmt is Stmt
289289
end
290290

291291
class WithStmt is Stmt
292-
fun new(withTok, expression, name, body)
292+
construct(withTok, expression, name, body)
293293
this.withTok = withTok
294294
this.expression = expression
295295
this.name = name
@@ -306,7 +306,7 @@ class WithStmt is Stmt
306306
end
307307

308308
class BreakStmt is Stmt
309-
fun new(token)
309+
construct(token)
310310
this.token = token
311311
end
312312

@@ -320,7 +320,7 @@ class BreakStmt is Stmt
320320
end
321321

322322
class ContinueStmt is Stmt
323-
fun new(token)
323+
construct(token)
324324
this.token = token
325325
end
326326

@@ -334,7 +334,7 @@ class ContinueStmt is Stmt
334334
end
335335

336336
class AssignmentExpr is Expr
337-
fun new(lvals, equal, rval)
337+
construct(lvals, equal, rval)
338338
this.lvals = lvals
339339
this.equal = equal
340340
this.rval = rval
@@ -350,7 +350,7 @@ class AssignmentExpr is Expr
350350
end
351351

352352
class CompoundAssExpr is Expr
353-
fun new(lval, op, rval)
353+
construct(lval, op, rval)
354354
this.lval = lval
355355
this.op = op
356356
this.rval = rval
@@ -366,7 +366,7 @@ class CompoundAssExpr is Expr
366366
end
367367

368368
class BinaryExpr is Expr
369-
fun new(l, op, r)
369+
construct(l, op, r)
370370
this.op = op
371371
this.l, this.r = l ,r
372372
end
@@ -381,7 +381,7 @@ class BinaryExpr is Expr
381381
end
382382

383383
class UnaryExpr is Expr
384-
fun new(op, operand)
384+
construct(op, operand)
385385
this.op = op
386386
this.operand = operand
387387
end
@@ -396,7 +396,7 @@ class UnaryExpr is Expr
396396
end
397397

398398
class ExponentExpr is Expr
399-
fun new(base, pow, exponent)
399+
construct(base, pow, exponent)
400400
this.base = base
401401
this.pow = pow
402402
this.exponent = exponent
@@ -412,7 +412,7 @@ class ExponentExpr is Expr
412412
end
413413

414414
class TernaryExpr is Expr
415-
fun new(thenExp, ifTok, cond, elseTok, elseExp)
415+
construct(thenExp, ifTok, cond, elseTok, elseExp)
416416
this.ifTok, this.elseTok = ifTok, elseTok
417417
this.cond = cond
418418
this.thenExp = thenExp
@@ -429,7 +429,7 @@ class TernaryExpr is Expr
429429
end
430430

431431
class FuncLit is Expr
432-
fun new(funTok, leftBracket, arguments, defaults, vararg, rightBracket, body)
432+
construct(funTok, leftBracket, arguments, defaults, vararg, rightBracket, body)
433433
this.funTok = funTok
434434
this.name = null
435435
this.leftBracket = leftBracket
@@ -450,7 +450,7 @@ class FuncLit is Expr
450450
end
451451

452452
class AttributeExpr is Expr
453-
fun new(l, dot, name)
453+
construct(l, dot, name)
454454
this.l, this.dot, this.name = l, dot, name
455455
end
456456

@@ -464,7 +464,7 @@ class AttributeExpr is Expr
464464
end
465465

466466
class CallExpr is Expr
467-
fun new(l, leftBracket, expressions, rightBracket, isUnpack=false)
467+
construct(l, leftBracket, expressions, rightBracket, isUnpack=false)
468468
this.l = l
469469
this.leftBracket = leftBracket
470470
this.expressions = expressions
@@ -482,7 +482,7 @@ class CallExpr is Expr
482482
end
483483

484484
class ArrayAccessExpr is Expr
485-
fun new(l, leftBracket, expression, rightBracket)
485+
construct(l, leftBracket, expression, rightBracket)
486486
this.l = l
487487
this.leftBracket = leftBracket
488488
this.expression = expression
@@ -499,7 +499,7 @@ class ArrayAccessExpr is Expr
499499
end
500500

501501
class NumLit is Expr
502-
fun new(num)
502+
construct(num)
503503
this.num = num
504504
end
505505

@@ -513,7 +513,7 @@ class NumLit is Expr
513513
end
514514

515515
class StringLit is Expr
516-
fun new(str)
516+
construct(str)
517517
this.str = str
518518
end
519519

@@ -527,7 +527,7 @@ class StringLit is Expr
527527
end
528528

529529
class BoolLit is Expr
530-
fun new(bool)
530+
construct(bool)
531531
this.bool = bool
532532
end
533533

@@ -541,7 +541,7 @@ class BoolLit is Expr
541541
end
542542

543543
class NullLit is Expr
544-
fun new(nil)
544+
construct(nil)
545545
this.nil = nil
546546
end
547547

@@ -555,7 +555,7 @@ class NullLit is Expr
555555
end
556556

557557
class VarLit is Expr
558-
fun new(id)
558+
construct(id)
559559
this.id = id
560560
end
561561

@@ -569,7 +569,7 @@ class VarLit is Expr
569569
end
570570

571571
class SuperLit is Expr
572-
fun new(superTok, name, leftBracket, arguments, rightBracket, isUnpack = false)
572+
construct(superTok, name, leftBracket, arguments, rightBracket, isUnpack = false)
573573
this.superTok = superTok
574574
this.name = name
575575
this.leftBracket = leftBracket
@@ -588,7 +588,7 @@ class SuperLit is Expr
588588
end
589589

590590
class ListLit is Expr
591-
fun new(leftBracket, expressions, rightBracket)
591+
construct(leftBracket, expressions, rightBracket)
592592
this.leftBracket = leftBracket
593593
this.expressions = expressions
594594
this.rightBracket = rightBracket
@@ -604,7 +604,7 @@ class ListLit is Expr
604604
end
605605

606606
class TupleLit is Expr
607-
fun new(expressions, leftBracket=null, rightBracket=null)
607+
construct(expressions, leftBracket=null, rightBracket=null)
608608
this.expressions = expressions
609609
this.leftBracket, this.rightBracket = leftBracket, rightBracket
610610
end
@@ -619,13 +619,13 @@ class TupleLit is Expr
619619
end
620620

621621
class TableEntry
622-
fun new(key, val)
622+
construct(key, val)
623623
this.key, this.val = key, val
624624
end
625625
end
626626

627627
class TableLit is Expr
628-
fun new(leftBracket, entries, rightBracket)
628+
construct(leftBracket, entries, rightBracket)
629629
this.leftBracket = leftBracket
630630
this.entries = entries
631631
this.rightBracket = rightBracket

‎pulsar/parse/lexer.jsr

+43-43
Original file line numberDiff line numberDiff line change
@@ -34,48 +34,48 @@ static var KEYWORDS = {
3434
}
3535

3636
static var Char = Enum{
37-
.nul : char('\0'),
38-
.zero : char('0'),
39-
.nine : char('9'),
40-
.a : char('a'),
41-
.e : char('e'),
42-
.f : char('f'),
43-
.x : char('x'),
44-
.z : char('z'),
45-
.A : char('A'),
46-
.Z : char('Z'),
47-
.hash : char('#'),
48-
.bang : char('!'),
49-
.lparen : char('('),
50-
.rparen : char(')'),
51-
.semicol : char(';'),
52-
.colon : char(':'),
53-
.pipe : char('|'),
54-
.amper : char('&'),
55-
.tilde : char('~'),
56-
.comma : char(','),
57-
.lsquare : char('['),
58-
.rsquare : char(']'),
59-
.lcurly : char('{'),
60-
.rcurly : char('}'),
61-
.uparrow : char('^'),
62-
.quote : char("'"),
63-
.dquote : char('"'),
64-
.minus : char('-'),
65-
.plus : char('+'),
66-
.star : char('*'),
67-
.slash : char('/'),
68-
.perc : char('%'),
69-
.lt : char('<'),
70-
.gt : char('>'),
71-
.eq : char('='),
72-
.under : char('_'),
73-
.dot : char('.'),
74-
.bslash : char('\\'),
75-
.space : char(' '),
76-
.tab : char('\t'),
77-
.nl : char('\n'),
78-
.cr : char('\r')
37+
.nul : std.char('\0'),
38+
.zero : std.char('0'),
39+
.nine : std.char('9'),
40+
.a : std.char('a'),
41+
.e : std.char('e'),
42+
.f : std.char('f'),
43+
.x : std.char('x'),
44+
.z : std.char('z'),
45+
.A : std.char('A'),
46+
.Z : std.char('Z'),
47+
.hash : std.char('#'),
48+
.bang : std.char('!'),
49+
.lparen : std.char('('),
50+
.rparen : std.char(')'),
51+
.semicol : std.char(';'),
52+
.colon : std.char(':'),
53+
.pipe : std.char('|'),
54+
.amper : std.char('&'),
55+
.tilde : std.char('~'),
56+
.comma : std.char(','),
57+
.lsquare : std.char('['),
58+
.rsquare : std.char(']'),
59+
.lcurly : std.char('{'),
60+
.rcurly : std.char('}'),
61+
.uparrow : std.char('^'),
62+
.quote : std.char("'"),
63+
.dquote : std.char('"'),
64+
.minus : std.char('-'),
65+
.plus : std.char('+'),
66+
.star : std.char('*'),
67+
.slash : std.char('/'),
68+
.perc : std.char('%'),
69+
.lt : std.char('<'),
70+
.gt : std.char('>'),
71+
.eq : std.char('='),
72+
.under : std.char('_'),
73+
.dot : std.char('.'),
74+
.bslash : std.char('\\'),
75+
.space : std.char(' '),
76+
.tab : std.char('\t'),
77+
.nl : std.char('\n'),
78+
.cr : std.char('\r')
7979
}
8080

8181
static fun isAlpha(c)
@@ -97,7 +97,7 @@ end
9797
// Lexer for the J* language
9898
// Mimicst the structure of the c lexer
9999
class Lexer
100-
fun new(src)
100+
construct(src)
101101
this._src = src
102102
this._ptr = 0
103103
this._line = 1

‎pulsar/parse/parser.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ end
152152
// Recursive descent parser for the J* language
153153
// Basically mimics the C parser
154154
class Parser
155-
fun new(sourceFile, errorCallback)
155+
construct(sourceFile, errorCallback)
156156
typeAssert(sourceFile, SourceFile, "sourceFile")
157157
typeAssert(errorCallback, Function, "errorCallback")
158158
this._lex = Lexer(sourceFile)

‎pulsar/parse/source.jsr

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import re
44
// Returns a list containing the offsets of all newlines present in the string
55
static fun getLines(string)
66
// Capture all newlines offsets with `()` syntax
7-
var lines = re.gmatch(string, "()\n")
7+
var lines = re.matchAll(string, "()\n")
88
// Add syntethic newlines before the start and at the end
99
lines.insert(0, -1)
1010
lines.insert(#lines, #string)
@@ -13,7 +13,7 @@ end
1313

1414
// Class that represent a single J* source file
1515
class SourceFile
16-
fun new(path, src)
16+
construct(path, src)
1717
this.path = path
1818
this._src = src
1919
this._lines = getLines(src)
@@ -24,7 +24,7 @@ class SourceFile
2424
fun lineAt(off)
2525
var lo, hi = 0, #this._lines - 1
2626
while lo < hi - 1
27-
var m = lo + int((hi - lo) / 2)
27+
var m = lo + std.int((hi - lo) / 2)
2828
if off > this._lines[m]
2929
lo = m
3030
else

‎pulsar/parse/token.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ var Type = Enum(
8888

8989
// A J* lexical token
9090
class Token
91-
fun new(source, type, start, length)
91+
construct(source, type, start, length)
9292
this.type = type
9393
this._source = source
9494
this._start = start

‎pulsar/passes/check_access.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ static fun isInstanceAttribute(expr)
1212
end
1313

1414
class AccessChecker is PassVisitor
15-
fun new(reporter)
15+
construct(reporter)
1616
super(reporter)
1717
this._classDepth = 0
1818
this._functions = []

‎pulsar/passes/check_return.jsr

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import pulsar.passes.pass_visitor for PassVisitor
33

44
// Stores information about an encountered function
55
static class FuncItem
6-
fun new(node)
6+
construct(node)
77
this._node = node
88
this._returns = false
99
end
@@ -18,7 +18,7 @@ static class FuncItem
1818
end
1919

2020
class ReturnChecker is PassVisitor
21-
fun new(reporter)
21+
construct(reporter)
2222
super(reporter)
2323
this._functions = []
2424
end

‎pulsar/passes/check_semantics.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ end
2020
// - return statements outside of a function or in a constructor
2121
// - illegal unpacking declarations/assignments (either unbalanced, or using an invalid type)
2222
class SemanticChecker is PassVisitor
23-
fun new(reporter)
23+
construct(reporter)
2424
super(reporter)
2525
this._scopeDepth = 0
2626
this._classDepth = 0

‎pulsar/passes/check_unreach.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pulsar.passes.pass_visitor for PassVisitor
22

33
class UnreachableCodeChecker is PassVisitor
4-
fun new(reporter)
4+
construct(reporter)
55
super(reporter)
66
this._loopDepth = 0
77
end

‎pulsar/passes/check_unused.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import pulsar.passes.symtable for SymbolTable
55
import pulsar.passes.token_utils as token_utils
66

77
class UnusedChecker is PassVisitor
8-
fun new(reporter, ignoreUnusedArg=false)
8+
construct(reporter, ignoreUnusedArg=false)
99
super(reporter)
1010
this._variables = SymbolTable() // Symbol table of Identifier -> Boolean (usage status)
1111
this._ignoreUnusedArg = ignoreUnusedArg

‎pulsar/passes/pass_visitor.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import pulsar.errors.reporter for Severity
22
import pulsar.parse.visitor for Visitor
33

44
class PassVisitor is Visitor
5-
fun new(reporter)
5+
construct(reporter)
66
this._reporter = reporter
77
end
88

‎pulsar/passes/resolve_var.jsr

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ end
2828

2929
// Stores information about a declared variable
3030
static class Variable
31-
fun new(name, line, scope)
31+
construct(name, line, scope)
3232
this.name = name
3333
this.line = line
3434
this.scope = scope
@@ -48,7 +48,7 @@ end
4848
// It also detects and reports some common errors, such as use before declaration of
4949
// static globals, possibly uninitialized variables and unused variables
5050
class VariableResolver is PassVisitor
51-
fun new(reporter, ignoreGlobalRedef=false)
51+
construct(reporter, ignoreGlobalRedef=false)
5252
super(reporter)
5353
this._scopes = SymbolTable() // Symboltable String (variable name) -> Variable
5454
this._initialized = SymbolTable() // Symboltalbe Variable -> Boolean (init status)

‎pulsar/passes/symtable.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Scoped symbol table
22
// Mantains association between a symbol and some data
33
class SymbolTable
4-
fun new()
4+
construct()
55
this._scopes = []
66
end
77

‎pulsar/passes/token_utils.jsr

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ fun isConstant(token)
3434
for var i = 0; i < #lexeme; i += 1
3535
var lexChar = lexeme.charAt(i)
3636
if !capsEncountered
37-
capsEncountered = lexChar >= char("A") and lexChar <= char("Z")
37+
capsEncountered = lexChar >= std.char("A") and lexChar <= std.char("Z")
3838
end
39-
if lexChar >= char("a") and lexChar <= char("z")
39+
if lexChar >= std.char("a") and lexChar <= std.char("z")
4040
return false
4141
end
4242
end

‎pulsar/pulsar.jsr

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Pulsar
1313
// Construct a new Pulsar object configured with `opts`.
1414
// `opts` is a set of strings that determines which passes will be run.
1515
// Valid values for opts are the same as the cli options, and have the same effects.
16-
fun new(opts)
16+
construct(opts)
1717
this._opts = opts
1818
end
1919

0 commit comments

Comments
 (0)
Please sign in to comment.