fixes #578
This commit is contained in:
parent
cf689f7472
commit
4d9b2f671a
4 changed files with 25 additions and 13 deletions
|
|
@ -74,7 +74,7 @@ proc getSysType(kind: TTypeKind): PType =
|
||||||
of tyUInt64: result = sysTypeFromName("uint64")
|
of tyUInt64: result = sysTypeFromName("uint64")
|
||||||
of tyFloat: result = sysTypeFromName("float")
|
of tyFloat: result = sysTypeFromName("float")
|
||||||
of tyFloat32: result = sysTypeFromName("float32")
|
of tyFloat32: result = sysTypeFromName("float32")
|
||||||
of tyFloat64: result = sysTypeFromName("float64")
|
of tyFloat64: return sysTypeFromName("float64")
|
||||||
of tyFloat128: result = sysTypeFromName("float128")
|
of tyFloat128: result = sysTypeFromName("float128")
|
||||||
of tyBool: result = sysTypeFromName("bool")
|
of tyBool: result = sysTypeFromName("bool")
|
||||||
of tyChar: result = sysTypeFromName("char")
|
of tyChar: result = sysTypeFromName("char")
|
||||||
|
|
|
||||||
|
|
@ -1205,7 +1205,7 @@ proc semStmtList(c: PContext, n: PNode): PNode =
|
||||||
if n.sons[i].typ == EnforceVoidContext or usesResult(n.sons[i]):
|
if n.sons[i].typ == EnforceVoidContext or usesResult(n.sons[i]):
|
||||||
voidContext = true
|
voidContext = true
|
||||||
n.typ = EnforceVoidContext
|
n.typ = EnforceVoidContext
|
||||||
elif i != last or voidContext:
|
if i != last or voidContext:
|
||||||
discardCheck(n.sons[i])
|
discardCheck(n.sons[i])
|
||||||
else:
|
else:
|
||||||
n.typ = n.sons[i].typ
|
n.typ = n.sons[i].typ
|
||||||
|
|
|
||||||
12
tests/reject/texprstmt.nim
Normal file
12
tests/reject/texprstmt.nim
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
discard """
|
||||||
|
line: 10
|
||||||
|
errormsg: "value returned by statement has to be discarded"
|
||||||
|
"""
|
||||||
|
|
||||||
|
# bug #578
|
||||||
|
|
||||||
|
proc test: string =
|
||||||
|
result = "blah"
|
||||||
|
result[1 .. -1]
|
||||||
|
|
||||||
|
echo test()
|
||||||
|
|
@ -382,24 +382,24 @@ proc removeDuplicateFiles(c: var TConfigData) =
|
||||||
for cpuB in 1..c.cpus.len:
|
for cpuB in 1..c.cpus.len:
|
||||||
if osB != osA or cpuB != cpuA:
|
if osB != osA or cpuB != cpuA:
|
||||||
var orig = buildDir(osB, cpuB) / f
|
var orig = buildDir(osB, cpuB) / f
|
||||||
if ExistsFile(orig) and ExistsFile(dup) and
|
if existsFile(orig) and existsFile(dup) and
|
||||||
sameFileContent(orig, dup):
|
sameFileContent(orig, dup):
|
||||||
# file is identical, so delete duplicate:
|
# file is identical, so delete duplicate:
|
||||||
RemoveFile(dup)
|
removeFile(dup)
|
||||||
c.cfiles[osA][cpuA][i] = orig
|
c.cfiles[osA][cpuA][i] = orig
|
||||||
|
|
||||||
proc writeInstallScripts(c: var TConfigData) =
|
proc writeInstallScripts(c: var TConfigData) =
|
||||||
if c.installScript:
|
if c.installScript:
|
||||||
writeFile(installShFile, GenerateInstallScript(c), "\10")
|
writeFile(installShFile, generateInstallScript(c), "\10")
|
||||||
if c.uninstallScript:
|
if c.uninstallScript:
|
||||||
writeFile(deinstallShFile, GenerateDeinstallScript(c), "\10")
|
writeFile(deinstallShFile, generateDeinstallScript(c), "\10")
|
||||||
|
|
||||||
proc srcdist(c: var TConfigData) =
|
proc srcdist(c: var TConfigData) =
|
||||||
if not existsDir(getOutputDir(c) / "src"):
|
if not existsDir(getOutputDir(c) / "src"):
|
||||||
createDir(getOutputDir(c) / "src")
|
createDir(getOutputDir(c) / "src")
|
||||||
for x in walkFiles(c.libpath / "lib/*.h"):
|
for x in walkFiles(c.libpath / "lib/*.h"):
|
||||||
echo(getOutputDir(c) / "src" / extractFilename(x))
|
echo(getOutputDir(c) / "src" / extractFilename(x))
|
||||||
CopyFile(dest=getOutputDir(c) / "src" / extractFilename(x), source=x)
|
copyFile(dest=getOutputDir(c) / "src" / extractFilename(x), source=x)
|
||||||
for osA in 1..c.oses.len:
|
for osA in 1..c.oses.len:
|
||||||
for cpuA in 1..c.cpus.len:
|
for cpuA in 1..c.cpus.len:
|
||||||
var dir = getOutputDir(c) / buildDir(osA, cpuA)
|
var dir = getOutputDir(c) / buildDir(osA, cpuA)
|
||||||
|
|
@ -417,18 +417,18 @@ proc srcdist(c: var TConfigData) =
|
||||||
for i in 0 .. c.cfiles[osA][cpuA].len-1:
|
for i in 0 .. c.cfiles[osA][cpuA].len-1:
|
||||||
let dest = dir / extractFilename(c.cfiles[osA][cpuA][i])
|
let dest = dir / extractFilename(c.cfiles[osA][cpuA][i])
|
||||||
let relDest = buildDir(osA, cpuA) / extractFilename(c.cfiles[osA][cpuA][i])
|
let relDest = buildDir(osA, cpuA) / extractFilename(c.cfiles[osA][cpuA][i])
|
||||||
CopyFile(dest=dest, source=c.cfiles[osA][cpuA][i])
|
copyFile(dest=dest, source=c.cfiles[osA][cpuA][i])
|
||||||
c.cfiles[osA][cpuA][i] = relDest
|
c.cfiles[osA][cpuA][i] = relDest
|
||||||
# second pass: remove duplicate files
|
# second pass: remove duplicate files
|
||||||
removeDuplicateFiles(c)
|
removeDuplicateFiles(c)
|
||||||
writeFile(getOutputDir(c) / buildShFile, GenerateBuildShellScript(c), "\10")
|
writeFile(getOutputDir(c) / buildShFile, generateBuildShellScript(c), "\10")
|
||||||
writeFile(getOutputDir(c) / buildBatFile32, GenerateBuildBatchScript(c, tWin32), "\13\10")
|
writeFile(getOutputDir(c) / buildBatFile32, generateBuildBatchScript(c, tWin32), "\13\10")
|
||||||
writeFile(getOutputDir(c) / buildBatFile64, GenerateBuildBatchScript(c, tWin64), "\13\10")
|
writeFile(getOutputDir(c) / buildBatFile64, generateBuildBatchScript(c, tWin64), "\13\10")
|
||||||
writeInstallScripts(c)
|
writeInstallScripts(c)
|
||||||
|
|
||||||
# --------------------- generate inno setup -----------------------------------
|
# --------------------- generate inno setup -----------------------------------
|
||||||
proc setupDist(c: var TConfigData) =
|
proc setupDist(c: var TConfigData) =
|
||||||
var scrpt = GenerateInnoSetup(c)
|
var scrpt = generateInnoSetup(c)
|
||||||
var n = "build" / "install_$#_$#.iss" % [toLower(c.name), c.version]
|
var n = "build" / "install_$#_$#.iss" % [toLower(c.name), c.version]
|
||||||
writeFile(n, scrpt, "\13\10")
|
writeFile(n, scrpt, "\13\10")
|
||||||
when defined(windows):
|
when defined(windows):
|
||||||
|
|
@ -437,7 +437,7 @@ proc setupDist(c: var TConfigData) =
|
||||||
var outcmd = if c.outdir.len == 0: "build" else: c.outdir
|
var outcmd = if c.outdir.len == 0: "build" else: c.outdir
|
||||||
var cmd = "$# $# /O$# $#" % [quoteIfContainsWhite(c.innoSetup.path),
|
var cmd = "$# $# /O$# $#" % [quoteIfContainsWhite(c.innoSetup.path),
|
||||||
c.innoSetup.flags, outcmd, n]
|
c.innoSetup.flags, outcmd, n]
|
||||||
Echo(cmd)
|
echo(cmd)
|
||||||
if execShellCmd(cmd) == 0:
|
if execShellCmd(cmd) == 0:
|
||||||
removeFile(n)
|
removeFile(n)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue