This commit is contained in:
Araq 2013-08-30 22:47:14 +02:00
commit 4d9b2f671a
4 changed files with 25 additions and 13 deletions

View file

@ -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")

View file

@ -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

View 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()

View file

@ -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: