fix nnkAccQuoted entry processing in config-file

fixes #47
This commit is contained in:
jangko 2022-04-16 18:26:33 +07:00
parent 60d71e8029
commit 8f8f715f76
No known key found for this signature in database
GPG Key ID: 31702AE10541E6B9
2 changed files with 36 additions and 3 deletions

View File

@ -66,8 +66,16 @@ proc traversePostfix(postfix: NimNode, typ: NimNode, isDiscriminator: bool,
isCommandOrArgument = false, defaultValue = "",
namePragma = ""): ConfFileSection =
postfix.expectKind nnkPostfix
traverseIdent(postfix[1], typ, isDiscriminator, isCommandOrArgument,
defaultValue, namePragma)
case postfix[1].kind
of nnkIdent:
traverseIdent(postfix[1], typ, isDiscriminator, isCommandOrArgument,
defaultValue, namePragma)
of nnkAccQuoted:
traverseIdent(postfix[1][0], typ, isDiscriminator, isCommandOrArgument,
defaultValue, namePragma)
else:
raiseAssert "[Postfix] Unsupported child node:\n" & postfix[1].treeRepr
proc shortEnumName(n: NimNode): NimNode =
if n.kind == nnkDotExpr:
@ -111,10 +119,14 @@ proc traversePragmaExpr(pragmaExpr: NimNode, typ: NimNode,
pragmaExpr.expectKind nnkPragmaExpr
let (isCommandOrArgument, defaultValue, namePragma) =
traversePragma(pragmaExpr[1])
case pragmaExpr[0].kind
of nnkIdent:
traverseIdent(pragmaExpr[0], typ, isDiscriminator, isCommandOrArgument,
defaultValue, namePragma)
of nnkAccQuoted:
traverseIdent(pragmaExpr[0][0], typ, isDiscriminator, isCommandOrArgument,
defaultValue, namePragma)
of nnkPostfix:
traversePostfix(pragmaExpr[0], typ, isDiscriminator, isCommandOrArgument,
defaultValue, namePragma)
@ -130,6 +142,8 @@ proc traverseIdentDefs(identDefs: NimNode, parent: ConfFileSection,
case child.kind
of nnkIdent:
result.add traverseIdent(child, typ, isDiscriminator)
of nnkAccQuoted:
result.add traverseIdent(child[0], typ, isDiscriminator)
of nnkPostfix:
result.add traversePostfix(child, typ, isDiscriminator)
of nnkPragmaExpr:
@ -146,7 +160,7 @@ proc traverseOfBranch(ofBranch: NimNode, parent: ConfFileSection): ConfFileSecti
result = ConfFileSection(fieldName: repr(shortEnumName(ofBranch[0])), isCaseBranch: true)
for child in ofBranch:
case child.kind:
of nnkIdent, nnkDotExpr:
of nnkIdent, nnkDotExpr, nnkAccQuoted:
discard
of nnkRecList:
result.children.add traverseRecList(child, result)

View File

@ -27,6 +27,7 @@ type
VCStartUpCmd = enum
VCNoCommand
`import`
ValidatorKeyPath = TypedInputFile[ValidatorPrivKey, Txt, "privkey"]
@ -98,6 +99,24 @@ type
desc: "Delay in seconds between retries after unsuccessful attempts to connect to a beacon node"
name: "retry-delay" }: int
of `import`:
blocksFile* {.
argument
desc: "Import RLP encoded block(s) from a file, validate, write to database and quit"
defaultValue: ""
name: "blocks-file" }: InputFile
`type`* {.
desc: "Test nnkAccQuoted of public sub command entry"
defaultValue: ""
name: "import-type" }: string
`seq` {.
desc: "Test nnkAccQuoted of private sub command entry"
defaultValue: ""
name: "import-seq" }: string
func defaultDataDir(conf: TestConf): string =
discard