Skip to content

Commit 92db45e

Browse files
authored
fixes std imports (#567)
* always add lib/ to the search path
1 parent 0864216 commit 92db45e

18 files changed

Lines changed: 61 additions & 53 deletions

src/gear2/modnames.nim

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,7 @@ proc moduleSuffix*(path: string; searchPaths: openArray[string]): string =
5959
id = id div 36'u32
6060

6161
when isMainModule:
62-
echo moduleSuffix("/Users/rumpf/projects/nim/lib/system.nim")
63-
echo moduleSuffix("/Users/araq/projects/nim/lib/system.nim")
62+
#echo moduleSuffix("/Users/rumpf/projects/nim/lib/system.nim")
63+
#echo moduleSuffix("/Users/araq/projects/nim/lib/system.nim")
64+
echo moduleSuffix("/Users/rumpf/projects/nimony/lib/std/system.nim", [])
65+
echo moduleSuffix("/Users/rumpf/projects/nimony/lib/std/system.nim", ["/Users/rumpf/projects/nimony/lib"])

src/hexer/lifter.nim

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import std/[assertions, tables]
1818

1919
include nifprelude
2020
import nifindexes, symparser, treemangler, typekeys
21-
import ".." / nimony / [nimony_model, decls, programs, typenav, expreval, xints]
21+
import ".." / nimony / [nimony_model, decls, programs, typenav, expreval, xints, builtintypes]
2222

2323
type
2424
TypeCursor = Cursor
@@ -63,8 +63,7 @@ proc hasHook(c: var LiftingCtx; s: SymId): bool =
6363
false
6464

6565
proc getCompilerProc(c: var LiftingCtx; name: string): SymId =
66-
const systemSuffix = "sys9azlf"
67-
result = pool.syms.getOrIncl(name & ".0." & systemSuffix)
66+
result = pool.syms.getOrIncl(name & ".0." & SystemModuleSuffix)
6867

6968
proc isTrivialForFields(c: var LiftingCtx; n: Cursor): bool =
7069
var n = n

src/nimony/builtintypes.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ proc tagToken(tag: string; info: PackedLineInfo = NoLineInfo): PackedToken {.inl
2121
parLeToken(pool.tags.getOrIncl(tag), info)
2222

2323
const
24-
SystemModuleSuffix* = "sys9azlf"
24+
SystemModuleSuffix* = "sysvq0asl" # "sys9azlf"
2525
StringName* = "string.0." & SystemModuleSuffix
2626
StringAField* = "a.0." & SystemModuleSuffix
2727
StringIField* = "i.0." & SystemModuleSuffix

src/nimony/nimony.nim

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,8 @@ proc handleCmdLine() =
139139
quit "too few command line arguments"
140140
elif args.len > 2 - int(cmd == FullProject):
141141
quit "too many command line arguments"
142-
if useEnv:
143-
let nimPath = getEnv("NIMPATH")
144-
for entry in split(nimPath, PathSep):
145-
if entry.strip != "":
146-
config.paths.add entry
142+
semos.setupPaths(config, useEnv)
143+
147144
case cmd
148145
of None:
149146
quit "command missing"

src/nimony/nimsem.nim

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,7 @@ proc handleCmdLine() =
105105
of cmdEnd: assert false, "cannot happen"
106106
if args.len != 3:
107107
quit "want exactly 3 command line arguments"
108-
if useEnv:
109-
let nimPath = getEnv("NIMPATH")
110-
for entry in split(nimPath, PathSep):
111-
if entry.strip != "":
112-
config.paths.add entry
108+
semos.setupPaths(config, useEnv)
113109
case cmd
114110
of None:
115111
quit "command missing"

src/nimony/semos.nim

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
## Path handling and `exec` like features as `sem.nim` needs it.
88

9-
from std / strutils import multiReplace
9+
from std / strutils import multiReplace, split, strip
1010
import std / [tables, sets, os, syncio, formatfloat, assertions]
1111
include nifprelude
1212
import ".." / lib / nifchecksums
@@ -17,13 +17,27 @@ import nimony_model, symtabs, builtintypes, decls, symparser, asthelpers,
1717

1818
import ".." / gear2 / modnames
1919

20-
proc stdlibFile*(f: string): string =
20+
proc stdlibDir*(): string =
2121
let appDir = getAppDir()
2222
let (head, tail) = splitPath(appDir)
2323
if tail == "bin":
24-
result = head / "lib" / f
24+
result = head / "lib"
25+
else:
26+
result = appDir / "lib"
27+
28+
proc setupPaths*(config: var NifConfig; useEnv: bool) =
29+
if useEnv:
30+
let nimPath = getEnv("NIMPATH")
31+
for entry in split(nimPath, PathSep):
32+
if entry.strip != "":
33+
config.paths.add entry
34+
if config.paths.len == 0:
35+
config.paths.add stdlibDir()
2536
else:
26-
result = appDir / "lib" / f
37+
config.paths.add stdlibDir()
38+
39+
proc stdlibFile*(f: string): string =
40+
result = stdlibDir() / f
2741

2842
proc binDir*(): string =
2943
let appDir = getAppDir()

tests/nimony/generics/texplicitprocinst.nif

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
(discard .))) 8,4
3333
(proc :foo.3.texhjoap . ~8,~3 .
3434
(at foo.1.texhjoap 4,~1
35-
(i -1) 9 string.0.sys9azlf) 6,~3
35+
(i -1) 9 string.0.sysvq0asl) 6,~3
3636
(params 1
3737
(param :x.6 . . ~3,2
3838
(i -1) .) 7
39-
(param :y.2 . . ~4,3 string.0.sys9azlf .)) ~8,~3 . ~8,~3 . ~8,~3 . 21,~3
39+
(param :y.2 . . ~4,3 string.0.sysvq0asl .)) ~8,~3 . ~8,~3 . ~8,~3 . 21,~3
4040
(stmts
4141
(discard .))) 28,10
4242
(proc :importedGeneric.0.texhjoap . 0,1,tests/nimony/generics/deps/mgenericproc.nim .

tests/nimony/nosystem/t2.nif

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
(typedesc 1 T.1.t2er4ggt1) 35
2424
(pragmas 2
2525
(magic 7 TypeOf)) . .) 10,9
26-
(type ~8 :string.0.t2er4ggt1 x . . string.0.sys9azlf) ,12
26+
(type ~8 :string.0.t2er4ggt1 x . . string.0.sysvq0asl) ,12
2727
(proc 5 :\2B.0.t2er4ggt1
2828
(add -3) . . 9
2929
(params 1
@@ -38,12 +38,12 @@
3838
(params 1
3939
(param :x.2 . . 3
4040
(i -1) .) 9
41-
(param :y.1 . . string.0.sys9azlf .)) 21
41+
(param :y.1 . . string.0.sysvq0asl .)) 21
4242
(i -1) . . 2,1
4343
(stmts 4
4444
(result :result.0 . . 10,~3
4545
(i -1) .) 4
46-
(var :x.4 . . string.0.sys9azlf 4 "abc") 7,1
46+
(var :x.4 . . string.0.sysvq0asl 4 "abc") 7,1
4747
(asgn ~7 result.0 2 +4) 2,2
4848
(asgn ~2 x.4 2 "34") ~2,~1
4949
(ret result.0))) ,19

tests/nimony/nosystem/tbool.nif

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
(proc :dollar`.bool.0.tbokvwxm9 x . .
1818
(params
1919
(param :e.0 . .
20-
(bool) .)) string.0.sys9azlf . .
20+
(bool) .)) string.0.sysvq0asl . .
2121
(stmts 23
22-
(result :result.0 . . string.0.sys9azlf .) 23
22+
(result :result.0 . . string.0.sysvq0asl .) 23
2323
(case e.0 ~18,1
2424
(of
2525
(ranges ~8

tests/nimony/nosystem/tdistinct.nif

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
(typedesc 1 T.1.tdiuhv8dm) 35
3232
(pragmas 2
3333
(magic 7 TypeOf)) . .) 10,11
34-
(type ~8 :string.0.tdiuhv8dm x . . string.0.sys9azlf) ,13
34+
(type ~8 :string.0.tdiuhv8dm x . . string.0.sysvq0asl) ,13
3535
(proc 5 :\2B.0.tdiuhv8dm
3636
(add -3) . . 9
3737
(params 1

0 commit comments

Comments
 (0)