summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--changelog.md5
-rw-r--r--compiler/commands.nim6
-rw-r--r--compiler/options.nim1
-rw-r--r--compiler/semtypes.nim3
4 files changed, 13 insertions, 2 deletions
diff --git a/changelog.md b/changelog.md
index 07533c2d2..694d9635f 100644
--- a/changelog.md
+++ b/changelog.md
@@ -248,7 +248,10 @@
   ```
 - `getImpl` on enum type symbols now returns field syms instead of idents. This helps
   with writing typed macros. Old behavior for backwards compatibility can be restored
-  with command line switch `--useVersion:1.0`.
+  with `--useVersion:1.0`.
+- The typed AST for proc headers will now have the arguments be syms instead of idents.
+  This helps with writing typed macros. Old behaviour for backwards compatibility can
+  be restored with `--useVersion:1.0`.
 - ``let`` statements can now be used without a value if declared with
   ``importc``/``importcpp``/``importjs``/``importobjc``.
 - The keyword `from` is now usable as an operator.
diff --git a/compiler/commands.nim b/compiler/commands.nim
index 3c6cc5919..b9199c1b0 100644
--- a/compiler/commands.nim
+++ b/compiler/commands.nim
@@ -883,6 +883,12 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo;
       undefSymbol(conf.symbols, "nimDoesntTrackDefects")
       ast.eqTypeFlags.excl {tfGcSafe, tfNoSideEffect}
       conf.globalOptions.incl optNimV1Emulation
+    of "1.2":
+      defineSymbol(conf.symbols, "NimMajor", "1")
+      defineSymbol(conf.symbols, "NimMinor", "2")
+      # always be compatible with 1.2.100:
+      defineSymbol(conf.symbols, "NimPatch", "100")
+      conf.globalOptions.incl optNimV12Emulation
     else:
       localError(conf, info, "unknown Nim version; currently supported values are: {1.0}")
   of "benchmarkvm":
diff --git a/compiler/options.nim b/compiler/options.nim
index 2f796afe6..3be7c5099 100644
--- a/compiler/options.nim
+++ b/compiler/options.nim
@@ -94,6 +94,7 @@ type                          # please make sure we have under 32 options
     optProduceAsm             # produce assembler code
     optPanics                 # turn panics (sysFatal) into a process termination
     optNimV1Emulation         # emulate Nim v1.0
+    optNimV12Emulation        # emulate Nim v1.2
     optSourcemap
     optProfileVM              # enable VM profiler
     optEnableDeepCopy         # ORC specific: enable 'deepcopy' for all types.
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim
index 9bb7673fa..8ef393839 100644
--- a/compiler/semtypes.nim
+++ b/compiler/semtypes.nim
@@ -1288,7 +1288,8 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode,
       addParamOrResult(c, arg, kind)
       styleCheckDef(c.config, a[j].info, arg)
       onDef(a[j].info, arg)
-      a[j] = newSymNode(arg)
+      if {optNimV1Emulation, optNimV12Emulation} * c.config.globalOptions == {}:
+        a[j] = newSymNode(arg)
 
   var r: PType
   if n[0].kind != nkEmpty: