diff --git a/syntax/check.rs b/syntax/check.rs
index f6e46fd..0d25e77 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -1,6 +1,6 @@
 use crate::syntax::atom::Atom::{self, *};
 use crate::syntax::{
-    error, ident, Api, ExternFn, Lang, Receiver, Ref, Slice, Struct, Ty1, Type, Types,
+    error, ident, Api, ExternFn, ExternType, Lang, Receiver, Ref, Slice, Struct, Ty1, Type, Types,
 };
 use proc_macro2::{Delimiter, Group, Ident, TokenStream};
 use quote::{quote, ToTokens};
@@ -39,6 +39,7 @@
     for api in cx.apis {
         match api {
             Api::Struct(strct) => check_api_struct(cx, strct),
+            Api::CxxType(ty) | Api::RustType(ty) => check_api_type(cx, ty),
             Api::CxxFunction(efn) | Api::RustFunction(efn) => check_api_fn(cx, efn),
             _ => {}
         }
@@ -119,6 +120,8 @@
 }
 
 fn check_api_struct(cx: &mut Check, strct: &Struct) {
+    check_reserved_name(cx, &strct.ident);
+
     if strct.fields.is_empty() {
         let span = span_for_struct_error(strct);
         cx.error(span, "structs without any fields are not supported");
@@ -139,6 +142,10 @@
     }
 }
 
+fn check_api_type(cx: &mut Check, ty: &ExternType) {
+    check_reserved_name(cx, &ty.ident);
+}
+
 fn check_api_fn(cx: &mut Check, efn: &ExternFn) {
     if let Some(receiver) = &efn.receiver {
         if !cx.types.structs.contains_key(&receiver.ty)
@@ -228,6 +235,12 @@
     }
 }
 
+fn check_reserved_name(cx: &mut Check, ident: &Ident) {
+    if ident == "Box" || ident == "UniquePtr" || Atom::from(ident).is_some() {
+        cx.error(ident, "reserved name");
+    }
+}
+
 fn is_unsized(cx: &mut Check, ty: &Type) -> bool {
     let ident = match ty {
         Type::Ident(ident) => ident,
