summary refs log tree commit diff stats
path: root/compiler/aliases.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/aliases.nim')
-rw-r--r--compiler/aliases.nim60
1 files changed, 30 insertions, 30 deletions
diff --git a/compiler/aliases.nim b/compiler/aliases.nim
index 3f3d45ff7..3d3fc9a79 100644
--- a/compiler/aliases.nim
+++ b/compiler/aliases.nim
@@ -11,7 +11,7 @@
 
 import
   ast, astalgo, types, trees, intsets, msgs
-  
+
 type
   TAnalysisResult* = enum
     arNo, arMaybe, arYes
@@ -21,42 +21,42 @@ proc isPartOfAux(a, b: PType, marker: var IntSet): TAnalysisResult
 proc isPartOfAux(n: PNode, b: PType, marker: var IntSet): TAnalysisResult =
   result = arNo
   case n.kind
-  of nkRecList: 
-    for i in countup(0, sonsLen(n) - 1): 
+  of nkRecList:
+    for i in countup(0, sonsLen(n) - 1):
       result = isPartOfAux(n.sons[i], b, marker)
       if result == arYes: return
   of nkRecCase:
     assert(n.sons[0].kind == nkSym)
     result = isPartOfAux(n.sons[0], b, marker)
     if result == arYes: return
-    for i in countup(1, sonsLen(n) - 1): 
+    for i in countup(1, sonsLen(n) - 1):
       case n.sons[i].kind
-      of nkOfBranch, nkElse: 
+      of nkOfBranch, nkElse:
         result = isPartOfAux(lastSon(n.sons[i]), b, marker)
         if result == arYes: return
       else: internalError("isPartOfAux(record case branch)")
   of nkSym:
     result = isPartOfAux(n.sym.typ, b, marker)
   else: internalError(n.info, "isPartOfAux()")
-  
-proc isPartOfAux(a, b: PType, marker: var IntSet): TAnalysisResult = 
+
+proc isPartOfAux(a, b: PType, marker: var IntSet): TAnalysisResult =
   result = arNo
-  if a == nil or b == nil: return 
-  if containsOrIncl(marker, a.id): return 
+  if a == nil or b == nil: return
+  if containsOrIncl(marker, a.id): return
   if compareTypes(a, b, dcEqIgnoreDistinct): return arYes
   case a.kind
-  of tyObject: 
+  of tyObject:
     result = isPartOfAux(a.sons[0], b, marker)
     if result == arNo: result = isPartOfAux(a.n, b, marker)
   of tyGenericInst, tyDistinct:
     result = isPartOfAux(lastSon(a), b, marker)
-  of tyArray, tyArrayConstr, tySet, tyTuple: 
-    for i in countup(0, sonsLen(a) - 1): 
+  of tyArray, tyArrayConstr, tySet, tyTuple:
+    for i in countup(0, sonsLen(a) - 1):
       result = isPartOfAux(a.sons[i], b, marker)
-      if result == arYes: return 
+      if result == arYes: return
   else: discard
 
-proc isPartOf(a, b: PType): TAnalysisResult = 
+proc isPartOf(a, b: PType): TAnalysisResult =
   ## checks iff 'a' can be part of 'b'. Iterates over VALUE types!
   var marker = initIntSet()
   # watch out: parameters reversed because I'm too lazy to change the code...
@@ -70,14 +70,14 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
   ## type. Since however type analysis is more expensive, we perform it only
   ## if necessary.
   ##
-  ## cases: 
+  ## cases:
   ##
   ## YES-cases:
   ##  x    <| x   # for general trees
   ##  x[]  <| x
   ##  x[i] <| x
   ##  x.f  <| x
-  ##  
+  ##
   ## NO-cases:
   ## x           !<| y    # depending on type and symbol kind
   ## x[constA]   !<| x[constB]
@@ -88,16 +88,16 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
   ##
   ##  x[] ?<| y[]   iff compatible type
   ##
-  ## 
+  ##
   ##  x[]  ?<| y  depending on type
-  ##  
+  ##
   if a.kind == b.kind:
     case a.kind
     of nkSym:
       const varKinds = {skVar, skTemp, skProc}
       # same symbol: aliasing:
       if a.sym.id == b.sym.id: result = arYes
-      elif a.sym.kind in varKinds or b.sym.kind in varKinds: 
+      elif a.sym.kind in varKinds or b.sym.kind in varKinds:
         # actually, a param could alias a var but we know that cannot happen
         # here. XXX make this more generic
         result = arNo
@@ -110,11 +110,11 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
       if len(a) >= 2 and len(b) >= 2:
         # array accesses:
         if result == arYes and isDeepConstExpr(a[1]) and isDeepConstExpr(b[1]):
-          # we know it's the same array and we have 2 constant indexes; 
-          # if they are 
+          # we know it's the same array and we have 2 constant indexes;
+          # if they are
           var x = if a[1].kind == nkHiddenStdConv: a[1][1] else: a[1]
           var y = if b[1].kind == nkHiddenStdConv: b[1][1] else: b[1]
-          
+
           if sameValue(x, y): result = arYes
           else: result = arNo
         # else: maybe and no are accurate
@@ -122,7 +122,7 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
         # pointer derefs:
         if result != arYes:
           if isPartOf(a.typ, b.typ) != arNo: result = arMaybe
-      
+
     of nkDotExpr:
       result = isPartOf(a[0], b[0])
       if result != arNo:
@@ -135,7 +135,7 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
       # weaken because of indirection:
       if result != arYes:
         if isPartOf(a.typ, b.typ) != arNo: result = arMaybe
-      
+
     of nkHiddenStdConv, nkHiddenSubConv, nkConv:
       result = isPartOf(a[1], b[1])
     of nkObjUpConv, nkObjDownConv, nkCheckedFieldExpr:
@@ -144,7 +144,7 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
     # Calls return a new location, so a default of ``arNo`` is fine.
   else:
     # go down recursively; this is quite demanding:
-    const 
+    const
       Ix0Kinds = {nkDotExpr, nkBracketExpr, nkObjUpConv, nkObjDownConv,
                   nkCheckedFieldExpr}
       Ix1Kinds = {nkHiddenStdConv, nkHiddenSubConv, nkConv}
@@ -153,17 +153,17 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
     of Ix0Kinds:
       # a* !<| b.f  iff  a* !<| b
       result = isPartOf(a, b[0])
-    
+
     of DerefKinds:
-      # a* !<| b[] iff 
+      # a* !<| b[] iff
       if isPartOf(a.typ, b.typ) != arNo:
         result = isPartOf(a, b[0])
         if result == arNo: result = arMaybe
-    
+
     of Ix1Kinds:
       # a* !<| T(b)  iff a* !<| b
       result = isPartOf(a, b[1])
-    
+
     of nkSym:
       # b is an atom, so we have to check a:
       case a.kind
@@ -172,7 +172,7 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
         result = isPartOf(a[0], b)
       of Ix1Kinds:
         result = isPartOf(a[1], b)
-      
+
       of DerefKinds:
         if isPartOf(a.typ, b.typ) != arNo:
           result = isPartOf(a[0], b)