summary refs log tree commit diff stats
path: root/koch.nim
diff options
context:
space:
mode:
authorcooldome <cdome@bk.ru>2020-03-19 19:38:25 +0000
committerGitHub <noreply@github.com>2020-03-19 20:38:25 +0100
commitb3176b881744242b6c0041024a46a17c7b73c788 (patch)
treed18d660c08efb53bea1022d212fed5619032bb26 /koch.nim
parent034dad8e321edcf6cf88a2ad93fceafae267cc74 (diff)
downloadNim-b3176b881744242b6c0041024a46a17c7b73c788.tar.gz
Attempt to finish off araq cpp exceptions (#13695)
* config update
* disable a questionable test
* remove c++ exception handling IDs, new impl doesn't require it anymore
* C++ based exceptions finally work
* fixes bootstrapping problem in C++ mode
* teach GCC it's 2020 now
* more bugfixes for C++ based exception handling
* apply cooldome's patch
* another attempt to enable C++11
* bug fix

Co-authored-by: Araq <rumpf_a@web.de>
Co-authored-by: cooldome <ariabushenko@bk.ru>
Diffstat (limited to 'koch.nim')
-rw-r--r--koch.nim6
1 files changed, 5 insertions, 1 deletions
diff --git a/koch.nim b/koch.nim
index 60d0e3544..dc23488a7 100644
--- a/koch.nim
+++ b/koch.nim
@@ -296,7 +296,11 @@ proc boot(args: string) =
 
   let nimStart = findStartNim().quoteShell()
   for i in 0..2:
-    let defaultCommand = if useCpp: "cpp" else: "c"
+    # Nim versions < (1, 1) expect Nim's exception type to have a 'raiseId' field for
+    # C++ interop. Later Nim versions do this differently and removed the 'raiseId' field.
+    # Thus we always bootstrap the first iteration with "c" and not with "cpp" as
+    # a workaround.
+    let defaultCommand = if useCpp and i > 0: "cpp" else: "c"
     let bootOptions = if args.len == 0 or args.startsWith("-"): defaultCommand else: ""
     echo "iteration: ", i+1
     var extraOption = ""