nim-lang / Nim

Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
https://nim-lang.org
Other
16.55k stars 1.47k forks source link

config file resolution might be broken or reported incorrectly #16526

Closed saem closed 3 years ago

saem commented 3 years ago

Config file resolution for Nimscript evaluation is either incorrect, misreported, or surprising if as it should be.

The resolution of files reports on the command line from least to most specific. When evaluating a Nimscript (project.nims) the resolution considered the config.nims more specific than a project.nim.cfg. This seems surprising.

Example

$ touch foo.nim
$ touch foo.nims
$ touch foo.nim.cfg
$ touch config.nims
$ touch nim.cfg
$ nim e foo.nims

Current Output

Hint: used config file '/home/saem/Development/nim/Nim/config/nim.cfg' [Conf]
Hint: used config file '/home/saem/Development/nim/Nim/config/config.nims' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/nim.cfg' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/foo.nim.cfg' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/config.nims' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/foo.nims' [Conf]

Expected Output

Hint: used config file '/home/saem/Development/nim/Nim/config/nim.cfg' [Conf]
Hint: used config file '/home/saem/Development/nim/Nim/config/config.nims' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/nim.cfg' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/config.nims' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/foo.nim.cfg' [Conf]
Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/foo.nims' [Conf]

Possible Solution

$ nim --version
Nim Compiler Version 1.5.1 [Linux: amd64]
Compiled at 2020-12-31
Copyright (c) 2006-2020 by Andreas Rumpf

git hash: 876fa3e62e41cd366b89137cc3c4f6b5b8b2bee8
active boot switches:
Clyybber commented 3 years ago

@timotheecour ping

timotheecour commented 3 years ago

indeed, this is a bug (likely preexisting, not a regression)

Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/config.nims' [Conf] should indeed be before Hint: used config file '/home/saem/Development/nim/nim-misc/config-loading-issue/foo.nim.cfg' [Conf]