mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* fixes #19795; remove parse pipeline * isScript * fixes nimscriptapi * don't touch reorder * check script * fixes tests * it seems implicit imports of system cause troubles * access the first child of `nkStmtList` * ignore comments * minor messages * perhaps increases hloLoopDetector * the module is a stmtList, which changes the errors * fixes nimdoc * fixes tlinter * fixes nim secret tests * fixes arc_misc * fixes nim secret tests again * safe; fixes one more test * GlobalError is the root cause too * fixes parsing errors * put emit types to the cfsForwardTypes section * fixes #11852; `{.push checks:off}` now works in procs * disable navigator * fixes nimdoc * add tests for JS * fixes nimsuggest
26 lines
930 B
Nim
26 lines
930 B
Nim
import pragmas, options, ast, trees
|
|
|
|
proc pushBackendOption(optionsStack: var seq[TOptions], options: var TOptions) =
|
|
optionsStack.add options
|
|
|
|
proc popBackendOption(optionsStack: var seq[TOptions], options: var TOptions) =
|
|
options = optionsStack[^1]
|
|
optionsStack.setLen(optionsStack.len-1)
|
|
|
|
proc processPushBackendOption*(optionsStack: var seq[TOptions], options: var TOptions,
|
|
n: PNode, start: int) =
|
|
pushBackendOption(optionsStack, options)
|
|
for i in start..<n.len:
|
|
let it = n[i]
|
|
if it.kind in nkPragmaCallKinds and it.len == 2 and it[1].kind == nkIntLit:
|
|
let sw = whichPragma(it[0])
|
|
let opts = pragmaToOptions(sw)
|
|
if opts != {}:
|
|
if it[1].intVal != 0:
|
|
options.incl opts
|
|
else:
|
|
options.excl opts
|
|
|
|
template processPopBackendOption*(optionsStack: var seq[TOptions], options: var TOptions) =
|
|
popBackendOption(optionsStack, options)
|