diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-06-04 11:17:41 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-06-04 11:17:41 +0200 |
commit | c59bc0cc183ccaed25e8e4a3cc286f2bb351405b (patch) | |
tree | ddafde8d4c3c0901ac1f3c02e3df298753cd3f8e /compiler/semexprs.nim | |
parent | 42c9bb3acedd524be23263a8217f34d0100779d9 (diff) | |
download | Nim-c59bc0cc183ccaed25e8e4a3cc286f2bb351405b.tar.gz |
first steps to allow easy functors via macros
Diffstat (limited to 'compiler/semexprs.nim')
-rw-r--r-- | compiler/semexprs.nim | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 59fa208d2..9c93d54a3 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -880,20 +880,6 @@ proc lookupInRecordAndBuildCheck(c: PContext, n, r: PNode, field: PIdent, if r.sym.name.id == field.id: result = r.sym else: illFormedAst(n) -proc makeDeref(n: PNode): PNode = - var t = skipTypes(n.typ, {tyGenericInst, tyAlias}) - result = n - if t.kind == tyVar: - result = newNodeIT(nkHiddenDeref, n.info, t.sons[0]) - addSon(result, n) - t = skipTypes(t.sons[0], {tyGenericInst, tyAlias}) - while t.kind in {tyPtr, tyRef}: - var a = result - let baseTyp = t.lastSon - result = newNodeIT(nkHiddenDeref, n.info, baseTyp) - addSon(result, a) - t = skipTypes(baseTyp, {tyGenericInst, tyAlias}) - const tyTypeParamsHolders = {tyGenericInst, tyCompositeTypeClass} tyDotOpTransparent = {tyVar, tyPtr, tyRef, tyAlias} @@ -920,7 +906,7 @@ proc readTypeParameter(c: PContext, typ: PType, else: discard - + if typ.kind != tyUserTypeClass: let ty = if typ.kind == tyCompositeTypeClass: typ.sons[1].skipGenericAlias else: typ.skipGenericAlias @@ -2285,14 +2271,14 @@ proc semExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode = pragma = n[1] pragmaName = considerQuotedIdent(pragma[0]) flags = flags - + case whichKeyword(pragmaName) of wExplain: flags.incl efExplain else: # what other pragmas are allowed for expressions? `likely`, `unlikely` invalidPragma(n) - + result = semExpr(c, n[0], flags) of nkPar: case checkPar(n) |