changed the compiler's path handling; fixes #546

This commit is contained in:
Andreas Rumpf
2016-05-31 03:04:36 +02:00
parent 1e5926458c
commit 893be3a5a4
11 changed files with 32 additions and 17 deletions

View File

@@ -262,15 +262,7 @@ proc processPath(path: string, info: TLineInfo,
else:
options.gProjectPath / path
try:
result = unixToNativePath(p % ["nimrod", getPrefixDir(),
"nim", getPrefixDir(),
"lib", libpath,
"home", removeTrailingDirSep(os.getHomeDir()),
"config", info.toFullPath().splitFile().dir,
"projectname", options.gProjectName,
"projectpath", options.gProjectPath])
if '~' in result:
result = result.replace("~", os.getHomeDir())
result = pathSubs(p, info.toFullPath().splitFile().dir)
except ValueError:
localError(info, "invalid path: " & p)
result = p

View File

@@ -22,7 +22,11 @@ proc getModuleName*(n: PNode): string =
# The proc won't perform any checks that the path is actually valid
case n.kind
of nkStrLit, nkRStrLit, nkTripleStrLit:
result = unixToNativePath(n.strVal)
try:
result = pathSubs(n.strVal, n.info.toFullPath().splitFile().dir)
except ValueError:
localError(n.info, "invalid path: " & n.strVal)
result = n.strVal
of nkIdent:
result = n.ident.s
of nkSym:

View File

@@ -242,7 +242,7 @@ proc mainCommand* =
clearPasses()
gLastCmdTime = epochTime()
appendStr(searchPaths, options.libpath)
if gProjectFull.len != 0:
when false: # gProjectFull.len != 0:
# current path is always looked first for modules
prependStr(searchPaths, gProjectPath)
setId(100)

View File

@@ -7,7 +7,7 @@ path:"$projectPath/.."
path:"$lib/packages/docutils"
define:booting
import:testability
#import:"$projectpath/testability"
@if windows:
cincludes: "$lib/wrappers/libffi/common"

View File

@@ -242,6 +242,21 @@ proc getNimcacheDir*: string =
result = if nimcacheDir.len > 0: nimcacheDir else: gProjectPath.shortenDir /
genSubDir
proc pathSubs*(p, config: string): string =
let home = removeTrailingDirSep(os.getHomeDir())
result = unixToNativePath(p % [
"nim", getPrefixDir(),
"lib", libpath,
"home", home,
"config", config,
"projectname", options.gProjectName,
"projectpath", options.gProjectPath,
"projectdir", options.gProjectPath,
"nimcache", getNimcacheDir()])
if '~' in result:
result = result.replace("~", home)
template newPackageCache(): expr =
newStringTable(when FileSystemCaseSensitive:
modeCaseInsensitive

View File

@@ -2514,7 +2514,7 @@ template newException*(exceptn: typedesc, message: string): expr =
e
when hostOS == "standalone":
include panicoverride
include "$projectpath/panicoverride"
when not declared(sysFatal):
when hostOS == "standalone":

View File

@@ -1,6 +1,6 @@
import
sfml, chipmunk,
sg_assets, sfml_stuff, keineschweine
sg_assets, sfml_stuff, "../keineschweine"
proc accel*(obj: PVehicle, dt: float) =

View File

@@ -1,2 +1,3 @@
# this file only exists to mark 'main.nim' as the main file
--path:"$projectpath"

View File

@@ -1,6 +1,6 @@
import
tri_engine/config,
tri_engine/math/vec
../config,
vec
type
TCircle* = tuple[p: TV2[TR], r: TR]

View File

@@ -1,6 +1,6 @@
import
macros,
tri_engine/config
"../config"
type
TV2*[T:SomeNumber=TR] = array[0..1, T]

View File

@@ -42,6 +42,9 @@ Changes affecting backwards compatibility
- The procs related to ``random`` number generation in ``math.nim`` have
been moved to its own ``random`` module and been reimplemented in pure
Nim.
- The path handling changed. The project directory is not added to the
search path automatically anymore. Add this line to your project's
config to get back the old behaviour: ``--path:"$projectdir"``.
Library Additions