diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart
index 51cf303..a685a3b 100644
--- a/packages/pigeon/lib/pigeon_lib.dart
+++ b/packages/pigeon/lib/pigeon_lib.dart
@@ -380,7 +380,7 @@
   final List<Error> result = <Error>[];
   final List<String> customClasses =
       root.classes.map((Class x) => x.name).toList();
-  final List<String> customEnums = root.enums.map((Enum x) => x.name).toList();
+  final Iterable<String> customEnums = root.enums.map((Enum x) => x.name);
   for (final Class klass in root.classes) {
     for (final Field field in klass.fields) {
       if (field.typeArguments != null) {
@@ -416,6 +416,20 @@
           lineNumber: _calculateLineNumberNullable(source, method.offset),
         ));
       }
+      if (customEnums.contains(method.argType)) {
+        result.add(Error(
+          message:
+              'Enums aren\'t yet supported for primitive arguments: "${method.argType}" in API: "${api.name}" method: "${method.name}" (https://github.com/flutter/flutter/issues/87307)',
+          lineNumber: _calculateLineNumberNullable(source, method.offset),
+        ));
+      }
+      if (customEnums.contains(method.returnType)) {
+        result.add(Error(
+          message:
+              'Enums aren\'t yet supported for primitive return types: "${method.returnType}" in API: "${api.name}" method: "${method.name}" (https://github.com/flutter/flutter/issues/87307)',
+          lineNumber: _calculateLineNumberNullable(source, method.offset),
+        ));
+      }
     }
   }
 
diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart
index b171fea..278e0d4 100644
--- a/packages/pigeon/test/pigeon_lib_test.dart
+++ b/packages/pigeon/test/pigeon_lib_test.dart
@@ -576,4 +576,42 @@
     expect(parseResult.errors[0].message, contains('static field'));
     expect(parseResult.errors[0].lineNumber, isNotNull);
   });
+
+  test('enums argument', () {
+    // TODO(gaaclarke): Make this not an error: https://github.com/flutter/flutter/issues/87307
+    const String code = '''
+
+enum Foo {
+  one,
+  two,
+}
+
+@HostApi()
+abstract class Api {
+  void doit(Foo foo);
+}
+''';
+    final ParseResults parseResult = _parseSource(code);
+    expect(parseResult.errors.length, equals(1));
+    expect(parseResult.errors[0].message, contains('Enums'));
+  });
+
+  test('enums return value', () {
+    // TODO(gaaclarke): Make this not an error: https://github.com/flutter/flutter/issues/87307
+    const String code = '''
+
+enum Foo {
+  one,
+  two,
+}
+
+@HostApi()
+abstract class Api {
+  Foo doit();
+}
+''';
+    final ParseResults parseResult = _parseSource(code);
+    expect(parseResult.errors.length, equals(1));
+    expect(parseResult.errors[0].message, contains('Enums'));
+  });
 }
