diff --git a/lib/d/src/thrift/codegen/base.d b/lib/d/src/thrift/codegen/base.d
index 9624012..d697375 100644
--- a/lib/d/src/thrift/codegen/base.d
+++ b/lib/d/src/thrift/codegen/base.d
@@ -782,14 +782,14 @@
     // WORKAROUND: To stop LDC from emitting the manifest constant »meta« below
     // into the writeStruct function body this is inside the string mixin
     // block – the code wouldn't depend on it (this is an LDC bug, and because
-    // of it a new array would be allocate on each method invocation at runtime).
+    // of it a new array would be allocated on each method invocation at runtime).
     foreach (name; StaticFilter!(
       Compose!(isNullable, PApply!(MemberType, T)),
       FieldNames!T
     )) {
        static if (memberReq!(T, name, fieldMetaData) == TReq.REQUIRED) {
-         code ~= `enforce(__traits(getMember, s, name) !is null,
-           new TException("Required field '` ~ name ~ `' is null."));\n`;
+         code ~= "enforce(__traits(getMember, s, `" ~ name ~ "`) !is null,
+           new TException(`Required field '" ~ name ~ "' is null.`));\n";
        }
     }
 
@@ -908,6 +908,40 @@
   p.writeStructEnd();
 }
 
+unittest {
+  // Ensure that the generated code at least compiles for the basic field type
+  // combinations. Functionality checks are covered by the rest of the test
+  // suite.
+
+  struct Test {
+    // Non-nullable.
+    int a1;
+    int a2;
+    int a3;
+    int a4;
+
+    // Nullable.
+    string b1;
+    string b2;
+    string b3;
+    string b4;
+
+    mixin TStructHelpers!([
+      TFieldMeta("a1", 1, TReq.OPT_IN_REQ_OUT),
+      TFieldMeta("a2", 2, TReq.OPTIONAL),
+      TFieldMeta("a3", 3, TReq.REQUIRED),
+      TFieldMeta("a4", 4, TReq.IGNORE),
+      TFieldMeta("b1", 5, TReq.OPT_IN_REQ_OUT),
+      TFieldMeta("b2", 6, TReq.OPTIONAL),
+      TFieldMeta("b3", 7, TReq.REQUIRED),
+      TFieldMeta("b4", 8, TReq.IGNORE),
+    ]);
+  }
+
+  static assert(__traits(compiles, { Test t; t.read(cast(TProtocol)null); }));
+  static assert(__traits(compiles, { Test t; t.write(cast(TProtocol)null); }));
+}
+
 private {
   /*
    * Returns a D code string containing the matching TType value for a passed
