1
1
package effekt
2
2
3
3
import effekt .lexer .TokenKind .*
4
- import effekt .lexer .{Lexer , Token , TokenKind }
4
+ import effekt .lexer .{Token , TokenKind }
5
5
import effekt .source .*
6
6
import effekt .source .Origin .Synthesized
7
- import kiama .util .{Positions , Source , StringSource }
7
+ import kiama .util .{Source , StringSource }
8
8
import munit .Location
9
9
10
10
// DSL for creating code snippets with span annotations
@@ -69,16 +69,16 @@ object SpanSyntax {
69
69
70
70
class ParserTests extends munit.FunSuite {
71
71
72
- def parser (input : String , positions : Positions )(using munit.Location ): Parser = {
72
+ def parser (input : String )(using munit.Location ): Parser = {
73
73
val source = StringSource (input, " " )
74
74
val tokens = effekt.lexer.Lexer .lex(source)
75
75
// TODO catch LexerError exception?
76
- new Parser (positions, tokens, source)
76
+ new Parser (tokens, source)
77
77
}
78
78
79
- def parse [R ](input : String , f : Parser => R , positions : Positions = new Positions () )(using munit.Location ): R =
79
+ def parse [R ](input : String , f : Parser => R )(using munit.Location ): R =
80
80
try {
81
- val p = parser(input, positions )
81
+ val p = parser(input)
82
82
val result = f(p)
83
83
assert(p.peek(TokenKind .EOF ), s " Did not consume everything: ${p.peek}" )
84
84
result
@@ -87,64 +87,64 @@ class ParserTests extends munit.FunSuite {
87
87
fail(s " Unexpected parse error (token index ${pos}): ${msg}" )
88
88
}
89
89
90
- def parseExpr (input : String , positions : Positions = new Positions () )(using munit.Location ): Term =
90
+ def parseExpr (input : String )(using munit.Location ): Term =
91
91
parse(input, _.expr())
92
92
93
- def parseStmt (input : String , positions : Positions = new Positions () )(using munit.Location ): Stmt =
93
+ def parseStmt (input : String )(using munit.Location ): Stmt =
94
94
parse(input, _.stmt())
95
95
96
- def parseStmts (input : String , positions : Positions = new Positions () )(using munit.Location ): Stmt =
96
+ def parseStmts (input : String )(using munit.Location ): Stmt =
97
97
parse(input, _.stmts(inBraces = true ))
98
98
99
- def parseMatchPattern (input : String , positions : Positions = new Positions () )(using munit.Location ): MatchPattern =
99
+ def parseMatchPattern (input : String )(using munit.Location ): MatchPattern =
100
100
parse(input, _.matchPattern())
101
101
102
- def parseMatchClause (input : String , positions : Positions = new Positions () )(using munit.Location ): MatchClause =
102
+ def parseMatchClause (input : String )(using munit.Location ): MatchClause =
103
103
parse(input, _.matchClause())
104
104
105
- def parseValueTypeAnnotation (input : String , positions : Positions = new Positions () )(using munit.Location ): ValueType =
105
+ def parseValueTypeAnnotation (input : String )(using munit.Location ): ValueType =
106
106
parse(input, _.valueTypeAnnotation())
107
107
108
- def parseReturnAnnotation (input : String , positions : Positions = new Positions () )(using munit.Location ): Effectful =
108
+ def parseReturnAnnotation (input : String )(using munit.Location ): Effectful =
109
109
parse(input, _.returnAnnotation())
110
110
111
- def parseValueType (input : String , positions : Positions = new Positions () )(using munit.Location ): ValueType =
111
+ def parseValueType (input : String )(using munit.Location ): ValueType =
112
112
parse(input, _.valueType())
113
113
114
- def parseBlockType (input : String , positions : Positions = new Positions () )(using munit.Location ): BlockType =
114
+ def parseBlockType (input : String )(using munit.Location ): BlockType =
115
115
parse(input, _.blockType())
116
116
117
- def parseOpClause (input : String , positions : Positions = new Positions () )(using munit.Location ): OpClause =
117
+ def parseOpClause (input : String )(using munit.Location ): OpClause =
118
118
parse(input, _.opClause())
119
119
120
- def parseImplementation (input : String , positions : Positions = new Positions () )(using munit.Location ): Implementation =
120
+ def parseImplementation (input : String )(using munit.Location ): Implementation =
121
121
parse(input, _.implementation())
122
122
123
- def parseTry (input : String , positions : Positions = new Positions () )(using munit.Location ): Term =
123
+ def parseTry (input : String )(using munit.Location ): Term =
124
124
parse(input, _.tryExpr())
125
125
126
- def parseParams (input : String , positions : Positions = new Positions () )(using munit.Location ): (Many [Id ], Many [ValueParam ], Many [BlockParam ]) =
126
+ def parseParams (input : String )(using munit.Location ): (Many [Id ], Many [ValueParam ], Many [BlockParam ]) =
127
127
parse(input, _.params())
128
128
129
- def parseLambdaParams (input : String , positions : Positions = new Positions () )(using munit.Location ): (List [Id ], List [ValueParam ], List [BlockParam ]) =
129
+ def parseLambdaParams (input : String )(using munit.Location ): (List [Id ], List [ValueParam ], List [BlockParam ]) =
130
130
parse(input, _.lambdaParams())
131
131
132
- def parseDefinition (input : String , positions : Positions = new Positions () )(using munit.Location ): Def =
132
+ def parseDefinition (input : String )(using munit.Location ): Def =
133
133
parse(input, _.definition())
134
134
135
- def parseDefinitions (input : String , positions : Positions = new Positions () )(using munit.Location ): List [Def ] =
135
+ def parseDefinitions (input : String )(using munit.Location ): List [Def ] =
136
136
parse(input, _.definitions())
137
137
138
- def parseToplevel (input : String , positions : Positions = new Positions () )(using munit.Location ): Def =
138
+ def parseToplevel (input : String )(using munit.Location ): Def =
139
139
parse(input, _.toplevel())
140
140
141
- def parseProgram (input : String , positions : Positions = new Positions () )(using munit.Location ): ModuleDecl =
141
+ def parseProgram (input : String )(using munit.Location ): ModuleDecl =
142
142
parse(input, _.program())
143
143
144
- def parseExternDef (input : String , positions : Positions = new Positions () )(using munit.Location ): Def =
144
+ def parseExternDef (input : String )(using munit.Location ): Def =
145
145
parse(input, _.externDef())
146
146
147
- def parseInfo (input : String , positions : Positions = new Positions () )(using munit.Location ): Info =
147
+ def parseInfo (input : String )(using munit.Location ): Info =
148
148
parse(input, _.info(parseCaptures = true ))
149
149
150
150
// Custom asserts
@@ -251,7 +251,7 @@ class ParserTests extends munit.FunSuite {
251
251
test(" Peeking" ) {
252
252
implicit def toToken (t : TokenKind ): Token = Token (0 , 0 , t)
253
253
def peek (tokens : Seq [Token ], offset : Int ): Token =
254
- new Parser (new Positions , tokens, StringSource (" " , " test" )).peek(offset)
254
+ new Parser (tokens, StringSource (" " , " test" )).peek(offset)
255
255
256
256
val tokens = List [Token ](`(`, Space , Newline , `)`, Space , `=>`, EOF )
257
257
assertEquals(peek(tokens, 0 ).kind, `(`)
0 commit comments