summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/wordrecg.nim8
-rw-r--r--tests/misc/treservedcidentsasfields.nim39
2 files changed, 43 insertions, 4 deletions
diff --git a/compiler/wordrecg.nim b/compiler/wordrecg.nim
index 640a7e02f..41bdc9fcb 100644
--- a/compiler/wordrecg.nim
+++ b/compiler/wordrecg.nim
@@ -73,9 +73,9 @@ type
     wConst_cast, wDefault, wDelete, wDouble, wDynamic_cast,
     wExplicit, wExtern, wFalse, wFloat, wFriend,
     wGoto, wInt, wLong, wMutable, wNamespace, wNew, wOperator,
-    wPrivate, wProtected, wPublic, wRegister, wReinterpret_cast,
+    wPrivate, wProtected, wPublic, wRegister, wReinterpret_cast, wRestrict,
     wShort, wSigned, wSizeof, wStatic_cast, wStruct, wSwitch,
-    wThis, wThrow, wTrue, wTypedef, wTypeid, wTypename,
+    wThis, wThrow, wTrue, wTypedef, wTypeid, wTypeof, wTypename,
     wUnion, wPacked, wUnsigned, wVirtual, wVoid, wVolatile, wWchar_t,
 
     wAlignas, wAlignof, wConstexpr, wDecltype, wNullptr, wNoexcept,
@@ -161,9 +161,9 @@ const
     "dynamic_cast", "explicit", "extern", "false",
     "float", "friend", "goto", "int", "long", "mutable",
     "namespace", "new", "operator",
-    "private", "protected", "public", "register", "reinterpret_cast",
+    "private", "protected", "public", "register", "reinterpret_cast", "restrict",
     "short", "signed", "sizeof", "static_cast", "struct", "switch",
-    "this", "throw", "true", "typedef", "typeid",
+    "this", "throw", "true", "typedef", "typeid", "typeof",
     "typename", "union", "packed", "unsigned", "virtual", "void", "volatile",
     "wchar_t",
 
diff --git a/tests/misc/treservedcidentsasfields.nim b/tests/misc/treservedcidentsasfields.nim
new file mode 100644
index 000000000..76bf60638
--- /dev/null
+++ b/tests/misc/treservedcidentsasfields.nim
@@ -0,0 +1,39 @@
+discard """

+  targets: "c cpp"

+"""

+

+import macros

+

+macro make_test_type(idents: varargs[untyped]): untyped =

+  result = nnkStmtList.newTree()

+

+  var ident_defs: seq[NimNode] = @[]

+  for i in idents:

+    ident_defs.add newIdentDefs(i, ident("int"))

+

+  result.add newTree(nnkTypeSection,

+    newTree(nnkTypeDef,

+      ident("TestType"),

+      newEmptyNode(),

+      newTree(nnkObjectTy,

+        newEmptyNode(),

+        newEmptyNode(),

+        newTree(nnkRecList,

+          ident_defs

+        )

+      )

+    )

+  )

+

+make_test_type(

+  auto, bool, catch, char, class, const_cast, default, delete, double,

+  dynamic_cast, explicit, extern, false, float, friend, goto, int, long,

+  mutable, namespace, new, operator, private, protected, public, register,

+  reinterpret_cast, restrict, short, signed, sizeof, static_cast, struct, switch,

+  this, throw, true, typedef, typeid, typeof, typename, union, packed, unsigned,

+  virtual, void, volatile, wchar_t, alignas, alignof, constexpr, decltype, nullptr,

+  noexcept, thread_local, static_assert, char16_t, char32_t

+)

+

+# Make sure the type makes it to codegen.

+var test_instance: TestType