Make fileExists and dirExists in os module available at compile time even when --os:any #22203
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR partly fix #19414.
With this PR,
fileExists
anddirExists
works at compile time by importingstd/private/oscommon
even when--os:any
option is set.For example,
testosmod.nim:
By changing code in the same way as this PR, you will be able to import os module and procs and iterators in os module that can be used at compile time become available even when
--os:any
.But changing code in this way is OK?
If there is
fileExists
ordirExists
proc that is called at runtime when--os:any
or target is unsupported OS, it should be a compile error.But how to do so?
I defined following
supportCompileTime
pragma and added it tofileExists
anddirExists
procs so that they havecompileTime
pragma on unsupported OS.But calling them at running doesn't cause compile error.
And cannot forbid using
walkDir
iterator at runtime withcompileTime
pragma because addingcompileTime
pragama to iterators is a compile error.