diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2019-08-08 22:43:58 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-08-08 22:43:58 +0200 |
commit | 81ddc67785fe4eb25f50ec56d6e22010246a7e0f (patch) | |
tree | ff690b4af66f5e6105bed05f968c0d630deaf99f /compiler | |
parent | 04708742e7ccf7936f2fb5c97ef7d28016673caf (diff) | |
download | Nim-81ddc67785fe4eb25f50ec56d6e22010246a7e0f.tar.gz |
[refactoring] compiler: simplified markUsed
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/patterns.nim | 2 | ||||
-rw-r--r-- | compiler/sem.nim | 2 | ||||
-rw-r--r-- | compiler/semcall.nim | 4 | ||||
-rw-r--r-- | compiler/semexprs.nim | 72 | ||||
-rw-r--r-- | compiler/semstmts.nim | 2 | ||||
-rw-r--r-- | compiler/semtempl.nim | 2 | ||||
-rw-r--r-- | compiler/semtypes.nim | 6 | ||||
-rw-r--r-- | compiler/sigmatch.nim | 6 | ||||
-rw-r--r-- | compiler/suggest.nim | 4 |
9 files changed, 50 insertions, 50 deletions
diff --git a/compiler/patterns.nim b/compiler/patterns.nim index 623a04406..3f2e2e86e 100644 --- a/compiler/patterns.nim +++ b/compiler/patterns.nim @@ -295,7 +295,7 @@ proc applyRule*(c: PContext, s: PSym, n: PNode): PNode = # constraint not fulfilled: if not ok: return nil - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) if ctx.subMatch: assert m.len == 3 m.sons[1] = result diff --git a/compiler/sem.nim b/compiler/sem.nim index b857f7e23..119393e25 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -450,7 +450,7 @@ proc semMacroExpr(c: PContext, n, nOrig: PNode, sym: PSym, pushInfoContext(c.config, nOrig.info, sym.detailedInfo) let info = getCallLineInfo(n) - markUsed(c, info, sym, c.graph.usageSym) + markUsed(c, info, sym) onUse(info, sym) if sym == c.p.owner: globalError(c.config, info, "recursive dependency: '$1'" % sym.name.s) diff --git a/compiler/semcall.nim b/compiler/semcall.nim index 5796abbff..f86784214 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -475,7 +475,7 @@ proc semResolvedCall(c: PContext, x: TCandidate, assert x.state == csMatch var finalCallee = x.calleeSym let info = getCallLineInfo(n) - markUsed(c, info, finalCallee, c.graph.usageSym) + markUsed(c, info, finalCallee) onUse(info, finalCallee) assert finalCallee.ast != nil if x.hasFauxMatch: @@ -585,7 +585,7 @@ proc explicitGenericSym(c: PContext, n: PNode, s: PSym): PNode = var newInst = generateInstance(c, s, m.bindings, n.info) newInst.typ.flags.excl tfUnresolved let info = getCallLineInfo(n) - markUsed(c, info, s, c.graph.usageSym) + markUsed(c, info, s) onUse(info, s) result = newSymNode(newInst, info) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index dc3076ceb..f567d6341 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -25,7 +25,7 @@ const proc semTemplateExpr(c: PContext, n: PNode, s: PSym, flags: TExprFlags = {}): PNode = let info = getCallLineInfo(n) - markUsed(c, info, s, c.graph.usageSym) + markUsed(c, info, s) onUse(info, s) # Note: This is n.info on purpose. It prevents template from creating an info # context when called from an another template @@ -305,7 +305,7 @@ proc semConv(c: PContext, n: PNode): PNode = let it = op.sons[i] let status = checkConvertible(c, result.typ, it) if status in {convOK, convNotNeedeed}: - markUsed(c, n.info, it.sym, c.graph.usageSym) + markUsed(c, n.info, it.sym) onUse(n.info, it.sym) markIndirect(c, it.sym) return it @@ -1106,7 +1106,7 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = let s = getGenSym(c, sym) case s.kind of skConst: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) onUse(n.info, s) let typ = skipTypes(s.typ, abstractInst-{tyTypeDesc}) case typ.kind @@ -1138,7 +1138,7 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = of skMacro: if efNoEvaluateGeneric in flags and s.ast[genericParamsPos].len > 0 or (n.kind notin nkCallKinds and s.requiredParams > 0): - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) onUse(n.info, s) result = symChoice(c, n, s, scClosed) else: @@ -1148,13 +1148,13 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = (n.kind notin nkCallKinds and s.requiredParams > 0) or sfCustomPragma in sym.flags: let info = getCallLineInfo(n) - markUsed(c, info, s, c.graph.usageSym) + markUsed(c, info, s) onUse(info, s) result = symChoice(c, n, s, scClosed) else: result = semTemplateExpr(c, n, s, flags) of skParam: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) onUse(n.info, s) if s.typ != nil and s.typ.kind == tyStatic and s.typ.n != nil: # XXX see the hack in sigmatch.nim ... @@ -1178,7 +1178,7 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = if s.magic == mNimvm: localError(c.config, n.info, "illegal context for 'nimvm' magic") - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) onUse(n.info, s) result = newSymNode(s, n.info) # We cannot check for access to outer vars for example because it's still @@ -1196,7 +1196,7 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = n.typ = s.typ return n of skType: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) onUse(n.info, s) if s.typ.kind == tyStatic and s.typ.base.kind != tyNone and s.typ.n != nil: return s.typ.n @@ -1218,7 +1218,7 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = if f != nil and fieldVisible(c, f): # is the access to a public field or in the same module or in a friend? doAssert f == s - markUsed(c, n.info, f, c.graph.usageSym) + markUsed(c, n.info, f) onUse(n.info, f) result = newNodeIT(nkDotExpr, n.info, f.typ) result.add makeDeref(newSymNode(p.selfSym)) @@ -1231,12 +1231,12 @@ proc semSym(c: PContext, n: PNode, sym: PSym, flags: TExprFlags): PNode = if ty.sons[0] == nil: break ty = skipTypes(ty.sons[0], skipPtrs) # old code, not sure if it's live code: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) onUse(n.info, s) result = newSymNode(s, n.info) else: let info = getCallLineInfo(n) - markUsed(c, info, s, c.graph.usageSym) + markUsed(c, info, s) onUse(info, s) result = newSymNode(s, info) @@ -1258,7 +1258,7 @@ proc builtinFieldAccess(c: PContext, n: PNode, flags: TExprFlags): PNode = result = symChoice(c, n, s, scClosed) if result.kind == nkSym: result = semSym(c, n, s, flags) else: - markUsed(c, n.sons[1].info, s, c.graph.usageSym) + markUsed(c, n.sons[1].info, s) result = semSym(c, n, s, flags) onUse(n.sons[1].info, s) return @@ -1322,7 +1322,7 @@ proc builtinFieldAccess(c: PContext, n: PNode, flags: TExprFlags): PNode = result = newSymNode(f) result.info = n.info result.typ = ty - markUsed(c, n.info, f, c.graph.usageSym) + markUsed(c, n.info, f) onUse(n.info, f) return of tyObject, tyTuple: @@ -1357,7 +1357,7 @@ proc builtinFieldAccess(c: PContext, n: PNode, flags: TExprFlags): PNode = else: true if not visibilityCheckNeeded or fieldVisible(c, f): # is the access to a public field or in the same module or in a friend? - markUsed(c, n.sons[1].info, f, c.graph.usageSym) + markUsed(c, n.sons[1].info, f) onUse(n.sons[1].info, f) n.sons[0] = makeDeref(n.sons[0]) n.sons[1] = newSymNode(f) # we now have the correct field @@ -1371,7 +1371,7 @@ proc builtinFieldAccess(c: PContext, n: PNode, flags: TExprFlags): PNode = elif ty.kind == tyTuple and ty.n != nil: f = getSymFromList(ty.n, i) if f != nil: - markUsed(c, n.sons[1].info, f, c.graph.usageSym) + markUsed(c, n.sons[1].info, f) onUse(n.sons[1].info, f) n.sons[0] = makeDeref(n.sons[0]) n.sons[1] = newSymNode(f) @@ -1902,7 +1902,7 @@ proc semExpandToAst(c: PContext, n: PNode): PNode = if expandedSym.kind == skError: return n macroCall.sons[0] = newSymNode(expandedSym, macroCall.info) - markUsed(c, n.info, expandedSym, c.graph.usageSym) + markUsed(c, n.info, expandedSym) onUse(n.info, expandedSym) if isCallExpr(macroCall): @@ -1927,7 +1927,7 @@ proc semExpandToAst(c: PContext, n: PNode): PNode = else: let info = macroCall.sons[0].info macroCall.sons[0] = newSymNode(cand, info) - markUsed(c, info, cand, c.graph.usageSym) + markUsed(c, info, cand) onUse(info, cand) # we just perform overloading resolution here: @@ -2130,42 +2130,42 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = result = n case s.magic # magics that need special treatment of mAddr: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) checkSonsLen(n, 2, c.config) result[0] = newSymNode(s, n[0].info) result[1] = semAddrArg(c, n.sons[1], s.name.s == "unsafeAddr") result.typ = makePtrType(c, result[1].typ) of mTypeOf: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semTypeOf(c, n) of mDefined: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semDefined(c, setMs(n, s), false) of mDefinedInScope: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semDefined(c, setMs(n, s), true) of mCompiles: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semCompiles(c, setMs(n, s), flags) of mIs: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semIs(c, setMs(n, s), flags) of mShallowCopy: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semShallowCopy(c, n, flags) of mExpandToAst: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semExpandToAst(c, n, s, flags) of mQuoteAst: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semQuoteAst(c, n) of mAstToStr: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) checkSonsLen(n, 2, c.config) result = newStrNodeT(renderTree(n[1], {renderNoComments}), n, c.graph) result.typ = getSysType(c.graph, n.info, tyString) of mParallel: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) if parallel notin c.features: localError(c.config, n.info, "use the {.experimental.} pragma to enable 'parallel'") result = setMs(n, s) @@ -2175,7 +2175,7 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = result.sons[1] = semStmt(c, x, {}) dec c.inParallelStmt of mSpawn: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) when defined(leanCompiler): localError(c.config, n.info, "compiler was built without 'spawn' support") result = n @@ -2193,12 +2193,12 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = else: result.add c.graph.emptyNode of mProcCall: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = setMs(n, s) result.sons[1] = semExpr(c, n.sons[1]) result.typ = n[1].typ of mPlugin: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) # semDirectOp with conditional 'afterCallActions': let nOrig = n.copyTree #semLazyOpAux(c, n) @@ -2215,7 +2215,7 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = if callee.magic != mNone: result = magicsAfterOverloadResolution(c, result, flags) of mRunnableExamples: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) if c.config.cmd == cmdDoc and n.len >= 2 and n.lastSon.kind == nkStmtList: when false: # some of this dead code was moved to `prepareExamples` @@ -2233,7 +2233,7 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode = else: result = c.graph.emptyNode of mSizeOf: - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) result = semSizeof(c, setMs(n, s)) else: result = semDirectOp(c, n, flags) @@ -2470,7 +2470,7 @@ proc semExportExcept(c: PContext, n: PNode): PNode = s.name.id notin exceptSet and sfError notin s.flags: strTableAdd(c.module.tab, s) result.add newSymNode(s, n.info) - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) s = nextIter(i, exported.tab) proc semExport(c: PContext, n: PNode): PNode = @@ -2491,7 +2491,7 @@ proc semExport(c: PContext, n: PNode): PNode = strTableAdd(c.module.tab, it) result.add newSymNode(it, a.info) it = nextIter(ti, s.tab) - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) else: while s != nil: if s.kind == skEnumField: @@ -2500,7 +2500,7 @@ proc semExport(c: PContext, n: PNode): PNode = if s.kind in ExportableSymKinds+{skModule} and sfError notin s.flags: result.add(newSymNode(s, a.info)) strTableAdd(c.module.tab, s) - markUsed(c, n.info, s, c.graph.usageSym) + markUsed(c, n.info, s) s = nextOverloadIter(o, c, a) proc semTupleConstr(c: PContext, n: PNode, flags: TExprFlags): PNode = diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index 402816078..ba88a6359 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -812,7 +812,7 @@ proc handleCaseStmtMacro(c: PContext; n: PNode): PNode = errors, false) if r.state == csMatch: var match = r.calleeSym - markUsed(c, n[0].info, match, c.graph.usageSym) + markUsed(c, n[0].info, match) onUse(n[0].info, match) # but pass 'n' to the 'match' macro, not 'n[0]': diff --git a/compiler/semtempl.nim b/compiler/semtempl.nim index 1b9b9e8a9..ddc0667e4 100644 --- a/compiler/semtempl.nim +++ b/compiler/semtempl.nim @@ -64,7 +64,7 @@ proc symChoice(c: PContext, n: PNode, s: PSym, r: TSymChoiceRule): PNode = # (s.kind notin routineKinds or s.magic != mNone): # for instance 'nextTry' is both in tables.nim and astalgo.nim ... result = newSymNode(s, info) - markUsed(c, info, s, c.graph.usageSym) + markUsed(c, info, s) onUse(info, s) else: # semantic checking requires a type; ``fitNode`` deals with it diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index cece00ba0..3038a1a6b 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -353,7 +353,7 @@ proc semTypeIdent(c: PContext, n: PNode): PSym = if result.isNil: result = qualifiedLookUp(c, n, {checkAmbiguity, checkUndeclared}) if result != nil: - markUsed(c, n.info, result, c.graph.usageSym) + markUsed(c, n.info, result) onUse(n.info, result) if result.kind == skParam and result.typ.kind == tyTypeDesc: @@ -1063,7 +1063,7 @@ proc liftParamType(c: PContext, procKind: TSymKind, genericParams: PNode, result = addImplicitGeneric(copyType(paramType, getCurrOwner(c), false)) of tyGenericParam: - markUsed(c, paramType.sym.info, paramType.sym, c.graph.usageSym) + markUsed(c, paramType.sym.info, paramType.sym) onUse(paramType.sym.info, paramType.sym) if tfWildcard in paramType.flags: paramType.flags.excl tfWildcard @@ -1754,7 +1754,7 @@ proc semTypeNode(c: PContext, n: PNode, prev: PType): PType = else: assignType(prev, t) result = prev - markUsed(c, n.info, n.sym, c.graph.usageSym) + markUsed(c, n.info, n.sym) onUse(n.info, n.sym) else: if s.kind != skError: diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index b2ca88359..952c8f991 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -107,7 +107,7 @@ type const isNilConversion = isConvertible # maybe 'isIntConv' fits better? -proc markUsed*(c: PContext; info: TLineInfo, s: PSym; usageSym: var PSym) +proc markUsed*(c: PContext; info: TLineInfo, s: PSym) template hasFauxMatch*(c: TCandidate): bool = c.fauxMatch != tyNone @@ -1889,7 +1889,7 @@ proc userConvMatch(c: PContext, m: var TCandidate, f, a: PType, dest = generateTypeInstance(c, m.bindings, arg, dest) let fdest = typeRel(m, f, dest) if fdest in {isEqual, isGeneric} and not (dest.kind == tyLent and f.kind == tyVar): - markUsed(c, arg.info, c.converters[i], c.graph.usageSym) + markUsed(c, arg.info, c.converters[i]) var s = newSymNode(c.converters[i]) s.typ = c.converters[i].typ s.info = arg.info @@ -2218,7 +2218,7 @@ proc paramTypesMatch*(m: var TCandidate, f, a: PType, else: result = nil else: # only one valid interpretation found: - markUsed(m.c, arg.info, arg.sons[best].sym, m.c.graph.usageSym) + markUsed(m.c, arg.info, arg.sons[best].sym) onUse(arg.info, arg.sons[best].sym) result = paramTypesMatchAux(m, f, arg.sons[best].typ, arg.sons[best], argOrig) diff --git a/compiler/suggest.nim b/compiler/suggest.nim index 620f4830a..38ebb85e0 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -542,7 +542,7 @@ proc markOwnerModuleAsUsed(c: PContext; s: PSym) = else: inc i -proc markUsed(c: PContext; info: TLineInfo; s: PSym; usageSym: var PSym) = +proc markUsed(c: PContext; info: TLineInfo; s: PSym) = let conf = c.config incl(s.flags, sfUsed) if s.kind == skEnumField and s.owner != nil: @@ -553,7 +553,7 @@ proc markUsed(c: PContext; info: TLineInfo; s: PSym; usageSym: var PSym) = if sfDeprecated in s.flags: warnAboutDeprecated(conf, info, s) if sfError in s.flags: userError(conf, info, s) when defined(nimsuggest): - suggestSym(conf, info, s, usageSym, false) + suggestSym(conf, info, s, c.graph.usageSym, false) if {optStyleHint, optStyleError} * conf.globalOptions != {}: styleCheckUse(conf, info, s) markOwnerModuleAsUsed(c, s) |