Skip to content

Commit bd28279

Browse files
fix: convert all handlers to closure-typed HandlerAsync for Nim 2.0
Nim 2.0 doesn't implicitly convert top-level procs to closures. Prologue's addRoute expects HandlerAsync (a closure type), but top-level `proc` declarations have `{.nimcall.}` convention. Previous fix only converted the middleware — now all handlers are `let` variables typed `HandlerAsync`, which forces the proc literal to be treated as a closure. Fixes the gcsafe/nimcall mismatch build error.
1 parent da0b2c4 commit bd28279

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

frameworks/prologue/src/server.nim

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,11 @@ proc parseQuerySum(query: string): int =
135135
except ValueError:
136136
discard
137137

138-
proc pipelineHandler(ctx: Context) {.async.} =
138+
let pipelineHandler: HandlerAsync = proc(ctx: Context) {.async.} =
139139
ctx.response.setHeader("Content-Type", "text/plain")
140140
resp "ok"
141141

142-
proc baseline11Handler(ctx: Context) {.async.} =
142+
let baseline11Handler: HandlerAsync = proc(ctx: Context) {.async.} =
143143
var sum = 0
144144
let query = ctx.request.query
145145
if query.len > 0:
@@ -155,20 +155,20 @@ proc baseline11Handler(ctx: Context) {.async.} =
155155
ctx.response.setHeader("Content-Type", "text/plain")
156156
resp $sum
157157

158-
proc baseline2Handler(ctx: Context) {.async.} =
158+
let baseline2Handler: HandlerAsync = proc(ctx: Context) {.async.} =
159159
var sum = 0
160160
let query = ctx.request.query
161161
if query.len > 0:
162162
sum = parseQuerySum(query)
163163
ctx.response.setHeader("Content-Type", "text/plain")
164164
resp $sum
165165

166-
proc jsonHandler(ctx: Context) {.async.} =
166+
let jsonHandler: HandlerAsync = proc(ctx: Context) {.async.} =
167167
let jsonStr = buildProcessedJson(dataset)
168168
ctx.response.setHeader("Content-Type", "application/json")
169169
resp jsonStr
170170

171-
proc compressionHandler(ctx: Context) {.async.} =
171+
let compressionHandler: HandlerAsync = proc(ctx: Context) {.async.} =
172172
let headers = ctx.request.headers
173173
let acceptEncoding = if headers.hasKey("Accept-Encoding"): $headers["Accept-Encoding"] else: ""
174174
ctx.response.setHeader("Content-Type", "application/json")
@@ -183,12 +183,12 @@ proc compressionHandler(ctx: Context) {.async.} =
183183
else:
184184
resp jsonLargeResponse
185185

186-
proc uploadHandler(ctx: Context) {.async.} =
186+
let uploadHandler: HandlerAsync = proc(ctx: Context) {.async.} =
187187
let body = ctx.request.body
188188
ctx.response.setHeader("Content-Type", "text/plain")
189189
resp $body.len
190190

191-
proc dbHandler(ctx: Context) {.async.} =
191+
let dbHandler: HandlerAsync = proc(ctx: Context) {.async.} =
192192
if not dbAvailable:
193193
ctx.response.setHeader("Content-Type", "application/json")
194194
resp "{\"items\":[],\"count\":0}"
@@ -219,7 +219,7 @@ proc dbHandler(ctx: Context) {.async.} =
219219
ctx.response.setHeader("Content-Type", "application/json")
220220
resp $(%*{"items": items, "count": items.len})
221221

222-
proc staticHandler(ctx: Context) {.async.} =
222+
let staticHandler: HandlerAsync = proc(ctx: Context) {.async.} =
223223
let filename = ctx.getPathParams("filename")
224224
if filename in staticFiles:
225225
let (data, ct) = staticFiles[filename]

0 commit comments

Comments
 (0)