c2nim compiles again

This commit is contained in:
Araq
2011-12-12 19:11:31 +01:00
parent 3c53c4c2b0
commit 4487b614e1
5 changed files with 15 additions and 10 deletions

View File

@@ -283,7 +283,7 @@ proc parsePegLit(p: var TParser): TPeg =
try:
result = parsePeg(
pattern = if p.tok.xkind == pxStrLit: p.tok.s else: escapePeg(p.tok.s),
filename = p.lex.filename,
filename = p.lex.fileIdx.ToFilename,
line = p.lex.linenumber,
col = col)
getTok(p)

View File

@@ -410,23 +410,23 @@ proc newFileInfo(fullPath, projPath: string): TFileInfo =
proc fileInfoIdx*(filename: string): int32 =
var
canonical: string
canon: string
pseudoPath = false
try:
canonical = canonicalizePath(filename)
canon = canonicalizePath(filename)
except:
canonical = filename
canon = filename
# The compiler uses "filenames" such as `command line` or `stdin`
# This flag indicates that we are working with such a path here
pseudoPath = true
if filenameToIndexTbl.hasKey(canonical):
result = filenameToIndexTbl[canonical]
if filenameToIndexTbl.hasKey(canon):
result = filenameToIndexTbl[canon]
else:
result = fileInfos.len.int32
fileInfos.add(newFileInfo(canonical, if pseudoPath: "" else: canonical.shortenDir))
filenameToIndexTbl[canonical] = result
fileInfos.add(newFileInfo(canon, if pseudoPath: "" else: canon.shortenDir))
filenameToIndexTbl[canon] = result
proc newLineInfo*(fileInfoIdx: int32, line, col: int): TLineInfo =
result.fileIndex = fileInfoIdx
@@ -478,6 +478,10 @@ proc ToFilename*(info: TLineInfo): string =
if info.fileIndex < 0: result = "???"
else: result = fileInfos[info.fileIndex].projPath
proc ToFilename*(fileIdx: int32): string =
if fileIdx < 0: result = "???"
else: result = fileInfos[fileIdx].projPath
proc toFullPath*(info: TLineInfo): string =
if info.fileIndex < 0: result = "???"
else: result = fileInfos[info.fileIndex].fullPath

View File

@@ -420,7 +420,7 @@ proc newObjRC1(typ: PNimType, size: int): pointer {.compilerRtl.} =
if framePtr != nil and framePtr.prev != nil:
res.filename = framePtr.prev.filename
res.line = framePtr.prev.line
res.refcount = rcIncrement # refcount is 1
res.refcount = rcIncrement # refcount is 1
sysAssert(isAllocatedPtr(gch.region, res), "newObj: 3")
when logGC: writeCell("new cell", res)
gcTrace(res, csAllocated)

View File

@@ -52,7 +52,7 @@ proc copyStrLast(s: NimString, start, last: int): NimString {.compilerProc.} =
c_memcpy(result.data, addr(s.data[start]), len * sizeof(Char))
result.data[len] = '\0'
else:
result = mnewString(0)
result = rawNewString(len)
proc copyStr(s: NimString, start: int): NimString {.compilerProc.} =
result = copyStrLast(s, start, s.len-1)

View File

@@ -5,6 +5,7 @@ version 0.8.14
- compiler should optimize string creation
- marker procs for the GC
- need to generate code to prevent tail call optimization
- write barrier specialization
- warning for implicit openArray -> varargs convention
- implement explicit varargs; **but** ``len(varargs)`` problem remains!
--> solve by implicit conversion from varargs to openarray