@@ -78,14 +78,18 @@ proc semGenericStmtSymbol(c: PContext, n: PNode, s: PSym,
7878 if macroToExpandSym (s):
7979 onUse (n.info, s)
8080 result = semTemplateExpr (c, n, s, {efNoSemCheck})
81+ c.friendModules.add (s.owner.getModule)
8182 result = semGenericStmt (c, result , {}, ctx)
83+ discard c.friendModules.pop ()
8284 else :
8385 result = symChoice (c, n, s, scOpen)
8486 of skMacro:
8587 if macroToExpandSym (s):
8688 onUse (n.info, s)
8789 result = semMacroExpr (c, n, n, s, {efNoSemCheck})
90+ c.friendModules.add (s.owner.getModule)
8891 result = semGenericStmt (c, result , {}, ctx)
92+ discard c.friendModules.pop ()
8993 else :
9094 result = symChoice (c, n, s, scOpen)
9195 of skGenericParam:
@@ -245,7 +249,9 @@ proc semGenericStmt(c: PContext, n: PNode,
245249 if macroToExpand (s) and sc.safeLen <= 1 :
246250 onUse (fn.info, s)
247251 result = semMacroExpr (c, n, n, s, {efNoSemCheck})
252+ c.friendModules.add (s.owner.getModule)
248253 result = semGenericStmt (c, result , flags, ctx)
254+ discard c.friendModules.pop ()
249255 else :
250256 n[0 ] = sc
251257 result = n
@@ -254,7 +260,9 @@ proc semGenericStmt(c: PContext, n: PNode,
254260 if macroToExpand (s) and sc.safeLen <= 1 :
255261 onUse (fn.info, s)
256262 result = semTemplateExpr (c, n, s, {efNoSemCheck})
263+ c.friendModules.add (s.owner.getModule)
257264 result = semGenericStmt (c, result , flags, ctx)
265+ discard c.friendModules.pop ()
258266 else :
259267 n[0 ] = sc
260268 result = n
@@ -493,6 +501,20 @@ proc semGenericStmt(c: PContext, n: PNode,
493501 of nkExprColonExpr, nkExprEqExpr:
494502 checkMinSonsLen (n, 2 , c.config)
495503 result [1 ] = semGenericStmt (c, n[1 ], flags, ctx)
504+ of nkObjConstr:
505+ for i in 0 ..< n.len:
506+ result [i] = semGenericStmt (c, n[i], flags, ctx)
507+ if result [0 ].kind == nkSym:
508+ let fmoduleId = getModule (result [0 ].sym).id
509+ var isVisable = false
510+ for module in c.friendModules:
511+ if module.id == fmoduleId:
512+ isVisable = true
513+ break
514+ if isVisable:
515+ for i in 1 ..< result .len:
516+ if result [i].kind == nkExprColonExpr:
517+ result [i][1 ].flags.incl nfSkipFieldChecking
496518 else :
497519 for i in 0 ..< n.len:
498520 result [i] = semGenericStmt (c, n[i], flags, ctx)
0 commit comments