summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--appveyor.yml5
-rw-r--r--compiler/ccgexprs.nim9
-rw-r--r--koch.nim5
-rw-r--r--lib/system/sysio.nim5
-rw-r--r--tests/ccgbugs/tgeneric_smallobj_asgn_opt.nim26
-rw-r--r--web/bountysource.nim.cfg1
-rw-r--r--web/inactive_sponsors.csv33
-rw-r--r--web/news/e031_version_0_16_2.rst4
-rw-r--r--web/sponsors.csv72
9 files changed, 101 insertions, 59 deletions
diff --git a/appveyor.yml b/appveyor.yml
index 87640b192..ea98b8507 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -7,10 +7,7 @@ cache:
 # - i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z
 
 matrix:
-  fast_finish: true     # set this flag to immediately finish build once one of the jobs fails.
-  allow_failures:
-    - platform: x64
-#   - platform: x86
+  fast_finish: true
 
 environment:
   matrix:
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim
index 95a7beada..6f7e83c18 100644
--- a/compiler/ccgexprs.nim
+++ b/compiler/ccgexprs.nim
@@ -220,7 +220,7 @@ proc genOptAsgnTuple(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
                      optAsgnLoc(src, t, field), newflags)
 
 proc genOptAsgnObject(p: BProc, dest, src: TLoc, flags: TAssignmentFlags,
-                      t: PNode) =
+                      t: PNode, typ: PType) =
   if t == nil: return
   let newflags =
     if src.s == OnStatic:
@@ -232,10 +232,11 @@ proc genOptAsgnObject(p: BProc, dest, src: TLoc, flags: TAssignmentFlags,
   case t.kind
   of nkSym:
     let field = t.sym
+    if field.loc.r == nil: fillObjectFields(p.module, typ)
     genAssignment(p, optAsgnLoc(dest, field.typ, field.loc.r),
                      optAsgnLoc(src, field.typ, field.loc.r), newflags)
   of nkRecList:
-    for child in items(t): genOptAsgnObject(p, dest, src, newflags, child)
+    for child in items(t): genOptAsgnObject(p, dest, src, newflags, child, typ)
   else: discard
 
 proc genGenericAsgn(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
@@ -315,9 +316,9 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
       genGenericAsgn(p, dest, src, flags)
     elif needsComplexAssignment(ty):
       if ty.sons[0].isNil and asgnComplexity(ty.n) <= 4:
-        discard getTypeDesc(p.module, dest.t)
+        discard getTypeDesc(p.module, ty)
         internalAssert ty.n != nil
-        genOptAsgnObject(p, dest, src, flags, ty.n)
+        genOptAsgnObject(p, dest, src, flags, ty.n, ty)
       else:
         genGenericAsgn(p, dest, src, flags)
     else:
diff --git a/koch.nim b/koch.nim
index 825b360a0..109dcc3f1 100644
--- a/koch.nim
+++ b/koch.nim
@@ -223,8 +223,9 @@ proc bundleWinTools() =
   copyExe("tools/finish".exe, "finish".exe)
   removeFile("tools/finish".exe)
   nimexec("c -o:bin/vccexe.exe tools/vccenv/vccexe")
-  nimexec(r"c --cc:vcc --app:gui -o:bin\downloader.exe -d:ssl --noNimblePath " &
-          r"--path:..\ui tools\downloader.nim")
+  when false:
+    nimexec(r"c --cc:vcc --app:gui -o:bin\downloader.exe -d:ssl --noNimblePath " &
+            r"--path:..\ui tools\downloader.nim")
 
 proc zip(args: string) =
   bundleNimbleSrc()
diff --git a/lib/system/sysio.nim b/lib/system/sysio.nim
index fa1bdbb4e..7444661e3 100644
--- a/lib/system/sysio.nim
+++ b/lib/system/sysio.nim
@@ -215,7 +215,10 @@ proc rawFileSize(file: File): int =
   discard c_fseek(file, clong(oldPos), 0)
 
 proc endOfFile(f: File): bool =
-  result = c_feof(f) != 0
+  var c = c_fgetc(f)
+  discard c_ungetc(c, f)
+  return c < 0'i32
+  #result = c_feof(f) != 0
 
 proc readAllFile(file: File, len: int): string =
   # We acquire the filesize beforehand and hope it doesn't change.
diff --git a/tests/ccgbugs/tgeneric_smallobj_asgn_opt.nim b/tests/ccgbugs/tgeneric_smallobj_asgn_opt.nim
new file mode 100644
index 000000000..919dc3fc1
--- /dev/null
+++ b/tests/ccgbugs/tgeneric_smallobj_asgn_opt.nim
@@ -0,0 +1,26 @@
+discard """
+  output: '''false'''
+"""
+
+# bug #5402
+
+import lists
+
+type
+  Container[T] = ref object
+    obj: T
+
+  ListOfContainers[T] = ref object
+    list: DoublyLinkedList[Container[T]]
+
+proc contains[T](this: ListOfContainers[T], obj: T): bool =
+  for item in this.list.items():
+    if item.obj == obj: return true
+  return false
+
+proc newListOfContainers[T](): ListOfContainers[T] =
+  new(result)
+  result.list = initDoublyLinkedList[Container[T]]()
+
+let q = newListOfContainers[int64]()
+echo q.contains(123)
diff --git a/web/bountysource.nim.cfg b/web/bountysource.nim.cfg
new file mode 100644
index 000000000..521e21de4
--- /dev/null
+++ b/web/bountysource.nim.cfg
@@ -0,0 +1 @@
+-d:ssl
diff --git a/web/inactive_sponsors.csv b/web/inactive_sponsors.csv
index d466f3f31..6352bc194 100644
--- a/web/inactive_sponsors.csv
+++ b/web/inactive_sponsors.csv
@@ -1,26 +1,40 @@
 logo, name, url, this_month, all_time, since, level
 ,bogen,,0,1010,"Jul 23, 2016",1
 ,mikra,,0,400,"Apr 28, 2016",1
-,linkmonitor,,0,180,"Jan 28, 2016",1
+,shkolnick-kun,,0,375,"Jul 6, 2016",1
+,"Chris Heller",,0,350,"May 19, 2016",1
+,linkmonitor,,0,280,"Jan 28, 2016",1
 ,avsej,,0,110,"Jun 10, 2016",1
 ,WilRubin,,0,100,"Aug 11, 2015",1
 ,"Benny Luypaert",,0,100,"Apr 10, 2016",1
-,"Chris Heller",,0,100,"May 19, 2016",1
 ,PhilipWitte,,0,100,"Aug 5, 2016",1
+,skunkiferous,,0,100,"Oct 2, 2016",1
+,"Jonathan Arnett",,0,90,"May 20, 2016",1
 ,Boxifier,,0,75,"Apr 12, 2016",1
 ,iolloyd,,0,75,"Apr 29, 2016",1
+,btbytes,,0,70,"Apr 6, 2016",1
 ,rb01,,0,50,"May 4, 2016",1
+,barcharcraz,,0,50,"Jun 2, 2016",1
+,zachaysan,,0,50,"Jun 7, 2016",1
+,kunev,,0,50,"Dec 26, 2016",1
+,iboB,,0,50,"Jan 28, 2017",1
 ,TedSinger,,0,45,"Apr 9, 2016",1
+,johnnovak,,0,45,"Apr 30, 2016",1
+,"Matthew Baulch",,0,40,"Jun 7, 2016",1
+,"Matthew Newton",,0,35,"Apr 20, 2016",1
 ,martinbbjerregaard,,0,35,"Jun 9, 2016",1
 ,RationalG,,0,30,"Jun 17, 2016",1
 ,benbve,,0,30,"Jul 12, 2016",1
-,barcharcraz,,0,25,"Jun 2, 2016",1
+,multikatt,,0,30,"Nov 2, 2016",1
 ,"Landon Bass",,0,25,"Jun 7, 2016",1
 ,jimrichards,,0,25,"Jun 8, 2016",1
 ,jjzazuet,,0,25,"Jul 10, 2016",1
-,moigagoo,,0,20,"May 13, 2016",1
 ,kteza1,,0,20,"Jun 10, 2016",1
 ,tomkeus,,0,20,"Sep 4, 2016",1
+,csoriano89,,0,20,"Sep 7, 2016",1
+,juanjux,,0,20,"Oct 29, 2016",1
+,zagfai,,0,20,"Nov 3, 2016",1
+,hellcoderz,,0,20,"Jan 24, 2017",1
 ,mirek,,0,15,"Apr 9, 2016",1
 ,DateinAsia,,0,15,"Jul 30, 2016",1
 ,rickc,,0,15,"Jul 31, 2016",1
@@ -38,13 +52,6 @@ logo, name, url, this_month, all_time, since, level
 ,Blumenversand,,0,10,"Jul 21, 2016",1
 ,cinnabardk,,0,10,"Aug 6, 2016",1
 ,reddec,,0,10,"Aug 31, 2016",1
+,cupen,,0,10,"Nov 21, 2016",1
+,yay,,0,10,"Jan 25, 2017",1
 ,niv,,0,5,"Apr 6, 2016",1
-,goniz,,0,5,"Apr 7, 2016",1
-,genunix,,0,5,"Apr 12, 2016",1
-,CynepHy6,,0,5,"Apr 14, 2016",1
-,ivanflorentin,,0,5,"May 3, 2016",1
-,stevenyhw,,0,5,"May 20, 2016",1
-,"Sanjay Singh",,0,5,"Jun 6, 2016",1
-,yuttie,,0,5,"Jun 7, 2016",1
-,hron,,0,5,"Jun 11, 2016",1
-,laszlowaty,,0,5,"Jun 17, 2016",1
diff --git a/web/news/e031_version_0_16_2.rst b/web/news/e031_version_0_16_2.rst
index 2d725028e..171e4cef1 100644
--- a/web/news/e031_version_0_16_2.rst
+++ b/web/news/e031_version_0_16_2.rst
@@ -21,8 +21,8 @@ Changes affecting backwards compatibility
 - A hash procedure has been added for ``cstring`` type in ``hashes`` module.
   Previously, hash of a ``cstring`` would be calculated as a hash of the
   pointer. Now the hash is calculated from the contents of the string, assuming
-  ``cstring`` is a null-terminated string. Equal ``string``s and ``cstring``s
-  produce equal hash value.
+  ``cstring`` is a null-terminated string. Equal ``string`` and ``cstring``
+  values produce an equal hash value.
 
 Library Additions
 -----------------
diff --git a/web/sponsors.csv b/web/sponsors.csv
index 0701575d5..7136808c6 100644
--- a/web/sponsors.csv
+++ b/web/sponsors.csv
@@ -1,34 +1,40 @@
 logo, name, url, this_month, all_time, since, level
-assets/bountysource/secondspectrum.png,Second Spectrum,http://www.secondspectrum.com/,250,1250,"May 5, 2016",250
-assets/bountysource/xored.svg,"Xored Software, Inc.",http://xored.com/,250,1000,"Jun 20, 2016",250
-,shkolnick-kun,https://github.com/shkolnick-kun,75,225,"Jul 6, 2016",75
-,flyx,http://flyx.org,35,210,"Apr 7, 2016",75
-,"Yuriy Glukhov",,25,150,"Apr 6, 2016",25
-,endragor,https://github.com/endragor,25,150,"Apr 7, 2016",25
-,FedericoCeratto,http://firelet.net,25,150,"Apr 7, 2016",25
-,"Adrian Veith",,25,150,"Apr 20, 2016",25
-,skunkiferous,https://github.com/skunkiferous,100,100,"Oct 2, 2016",150
-,euantorano,http://euantorano.co.uk,25,100,"Jun 7, 2016",25
-,xxlabaza,https://github.com/xxlabaza,25,95,"Jun 17, 2016",25
-,btbytes,https://www.btbytes.com/,10,60,"Apr 6, 2016",10
-,niebaopeng,https://github.com/niebaopeng,10,50,"Apr 15, 2016",10
-,"Jonathan Arnett",,10,50,"May 20, 2016",10
-,swalf,https://github.com/swalf,5,45,"May 9, 2016",5
-,zolern,https://github.com/zolern,10,40,"Apr 15, 2016",10
-,"pyloor ",https://schwarz-weiss.cc/,10,40,"May 16, 2016",10
-,zachaysan,http://venn.lc,10,40,"Jun 7, 2016",10
-,"Matthew Baulch",,10,40,"Jun 7, 2016",10
-,"Oskari Timperi",,10,40,"Jun 8, 2016",10
-,"Handojo Goenadi",,5,35,"Apr 19, 2016",5
-,"Matthew Newton",,5,30,"Apr 20, 2016",5
-,johnnovak,http://www.johnnovak.net/,5,30,"Apr 29, 2016",5
-,RyanMarcus,http://rmarcus.info,5,15,"Jul 19, 2016",5
-,lenzenmi,https://github.com/lenzenmi,5,15,"Jul 28, 2016",5
-,cpunion,https://github.com/cpunion,10,10,"Sep 9, 2016",10
-,pandada8,https://github.com/pandada8,5,10,"Aug 12, 2016",5
-,abeaumont,http://alfredobeaumont.org/blog,5,10,"Aug 12, 2016",5
-,"Svend Knudsen",,1,6,"Apr 11, 2016",1
-,"Michael D. Sklaroff",,1,6,"Apr 27, 2016",1
-,csoriano89,https://github.com/csoriano89,5,5,"Sep 7, 2016",5
-,nicck,,1,2,"Aug 9, 2016",1
-,campbellr,,1,1,"Sep 4, 2016",1
+assets/bountysource/secondspectrum.png,Second Spectrum,http://www.secondspectrum.com/,250,2250,"May 5, 2016",250
+assets/bountysource/xored.svg,"Xored Software, Inc.",http://xored.com/,250,1000,250,2000,"Jun 20, 2016",250
+,Varriount,https://github.com/Varriount,250,750,"Nov 18, 2016",250
+,flyx,http://flyx.org,35,350,"Apr 7, 2016",75
+,"Yuriy Glukhov",,25,250,"Apr 6, 2016",25
+,endragor,https://github.com/endragor,25,250,"Apr 7, 2016",25
+,FedericoCeratto,http://firelet.net,25,250,"Apr 7, 2016",25
+,"Adrian Veith",,25,250,"Apr 20, 2016",25
+,euantorano,http://euantorano.co.uk,25,200,"Jun 7, 2016",25
+,xxlabaza,https://github.com/xxlabaza,25,170,"Jun 17, 2016",25
+,devted,https://github.com/devted,25,100,"Oct 19, 2016",25
+,"pyloor ",https://schwarz-weiss.cc/,10,95,"May 16, 2016",10
+,niebaopeng,https://github.com/niebaopeng,10,90,"Apr 15, 2016",10
+,zolern,https://github.com/zolern,10,80,"Apr 15, 2016",10
+,"Oskari Timperi",,10,80,"Jun 8, 2016",10
+,jcosborn,https://github.com/jcosborn,25,75,"Nov 21, 2016",25
+,swalf,https://github.com/swalf,5,65,"May 9, 2016",5
+,"Handojo Goenadi",,5,55,"Apr 19, 2016",5
+,cpunion,https://github.com/cpunion,10,50,"Sep 9, 2016",10
+,D-L,https://github.com/D-L,5,50,"Apr 7, 2016",5
+,moigagoo,http://sloth-ci.com,10,40,"May 13, 2016",10
+,enthus1ast,http://code0.xyz/,10,40,"Oct 28, 2016",10
+,RyanMarcus,http://rmarcus.info,5,35,"Jul 19, 2016",5
+,lenzenmi,https://github.com/lenzenmi,5,35,"Jul 28, 2016",5
+,"Christian Bagley",,10,30,"Oct 11, 2016",10
+,pandada8,https://github.com/pandada8,5,30,"Aug 12, 2016",5
+,abeaumont,http://alfredobeaumont.org/blog,5,30,"Aug 12, 2016",5
+,opendragon,http://www.opendragon.com,25,25,"Jan 18, 2017",25
+,"Eric Raible",,10,20,"Dec 23, 2016",10
+,zefciu,http://pythonista.net,10,20,"Dec 29, 2016",10
+,"Andrey ",https://github.com/Andrey,5,20,"Oct 10, 2016",5
+,syrol,https://github.com/syrol,5,10,"Dec 12, 2016",5
+,"Svend Knudsen",,1,10,"Apr 11, 2016",1
+,"Michael D. Sklaroff",,1,10,"Apr 27, 2016",1
+,nicck,,1,6,"Aug 9, 2016",1
+,cnygaard,,5,5,"Jan 17, 2017",5
+,Aldrog,,5,5,"Feb 11, 2017",5
+,mpachecofaulk55,,5,5,"Feb 11, 2017",5
+,campbellr,,1,5,"Sep 4, 2016",1