Skip to content

Commit 2011bfd

Browse files
fabricio-pmetagn
authored andcommitted
Make DSL interpret sym nodes as ident nodes (mratsim#671)
1 parent 1bb8567 commit 2011bfd

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Diff for: src/arraymancer/nn/nn_dsl.nim

+13-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import
66
macros
77

8+
const IdentLike = {nnkIdent, nnkSym, nnkOpenSymChoice}
89

910
type
1011
SectionInfo = object
@@ -63,17 +64,25 @@ proc createLayerInfo(sectionInfo: SectionInfo): seq[LayerInfo] =
6364

6465
if layer.kind != nnkCall or
6566
layer.len != 2 or
66-
layer[0].kind != nnkIdent or
67+
layer[0].kind notin IdentLike or
6768
layer[1].kind != nnkStmtList or
6869
layer[1].len != 1 or
6970
layer[1][0].kind != nnkCall or
7071
layer[1][0].len < 1 or
71-
layer[1][0][0].kind != nnkIdent:
72+
layer[1][0][0].kind notin IdentLike:
7273
error("Unknown configuration of layer section: \"" & $toStrLit(layer) & "\"", layer)
7374

75+
let
76+
nameNode = layer[0]
77+
typeNameNode = layer[1][0][0]
78+
7479
result.add LayerInfo(
75-
name: layer[0],
76-
typeName: layer[1][0][0]
80+
name:
81+
if nameNode.kind != nnkOpenSymChoice: nameNode
82+
else: nameNode.repr.ident(),
83+
typeName:
84+
if typeNameNode.kind != nnkOpenSymChoice: typeNameNode
85+
else: typeNameNode.repr.ident(),
7786
)
7887
if layer[1][0].len >= 2:
7988
result[^1].arguments = layer[1][0][1..^1]

0 commit comments

Comments
 (0)