Check the availability of types against SDK version

List<interface>, interface[]: at least Tiramisu in Java
ParcelableHolder: at least 31

Build system uses "current" as default min_sdk_version for
aidl_interface modules.

Bug: 205070744
Test: aidl_unittests
Test: aidl_integration_test
Change-Id: I8f7e86c4f87a8fd64b6f5b995000b3e32d7328b0
diff --git a/aidl.cpp b/aidl.cpp
index 90b593a..568ccb8 100644
--- a/aidl.cpp
+++ b/aidl.cpp
@@ -40,6 +40,7 @@
 #include "aidl_dumpapi.h"
 #include "aidl_language.h"
 #include "aidl_typenames.h"
+#include "check_valid.h"
 #include "generate_aidl_mappings.h"
 #include "generate_cpp.h"
 #include "generate_java.h"
@@ -596,6 +597,10 @@
     VisitTopDown([](const AidlNode& n) { n.MarkVisited(); }, *doc);
   }
 
+  if (!CheckValid(*document, options)) {
+    return AidlError::BAD_TYPE;
+  }
+
   if (!ValidateAnnotationContext(*document)) {
     return AidlError::BAD_TYPE;
   }