Check file exists in {.compile.} pragma (#21105)

* Add test

* Check file exists before adding it into compilation

* Make error message look like other error messages

i.e. following the format `error msg: file`
This commit is contained in:
Jake Leahy
2022-12-16 05:22:45 +11:00
committed by GitHub
parent 8054be6e52
commit d00477dffb
2 changed files with 10 additions and 2 deletions

View File

@@ -513,8 +513,11 @@ proc processCompile(c: PContext, n: PNode) =
var cf = Cfile(nimname: splitFile(src).name,
cname: src, obj: dest, flags: {CfileFlag.External},
customArgs: customArgs)
extccomp.addExternalFileToCompile(c.config, cf)
recordPragma(c, it, "compile", src.string, dest.string, customArgs)
if not fileExists(src):
localError(c.config, n.info, "cannot find: " & src.string)
else:
extccomp.addExternalFileToCompile(c.config, cf)
recordPragma(c, it, "compile", src.string, dest.string, customArgs)
proc getStrLit(c: PContext, n: PNode; i: int): string =
n[i] = c.semConstExpr(c, n[i])

View File

@@ -0,0 +1,5 @@
discard """
joinable: false
errormsg: "cannot find: noexist.c"
"""
{.compile: "noexist.c".}