[pigeon] added an error until we support primitive enums (#423)

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'));
+  });
 }