< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/AsmCodeFactory.java

Print this page

        

@@ -89,13 +89,17 @@
         logger.info(() -> "Instantiate AsmCodeFactory for " + header.path);
         this.owner = header;
         this.internal_name = Utils.toInternalName(owner.pkgName, owner.clsName);
         this.global_cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
         this.types = new HashMap<>();
-        global_cw.visit(V1_8, ACC_PUBLIC | ACC_ABSTRACT | ACC_INTERFACE,
-                internal_name,
-                null, "java/lang/Object", null);
+    }
+
+    private String[] getSuperInterfaces() {
+        String[] interfaces = owner.getIncludedFiles().
+            map(hf -> Utils.toInternalName(hf.pkgName, hf.clsName)).
+            toArray(String[]::new);
+        return interfaces.length != 0 ? interfaces : null;
     }
 
     private void generateNativeHeader() {
         generateMacros();
         AnnotationVisitor av = global_cw.visitAnnotation(NATIVE_HEADER, true);

@@ -555,10 +559,13 @@
     protected synchronized void produce() {
         if (built) {
             throw new IllegalStateException("Produce is called multiple times");
         }
         built = true;
+        global_cw.visit(V1_8, ACC_PUBLIC | ACC_ABSTRACT | ACC_INTERFACE,
+                internal_name,
+                null, "java/lang/Object", getSuperInterfaces());
         generateNativeHeader();
         try {
             writeClassFile(global_cw, owner.clsName);
         } catch (IOException ex) {
             handleException(ex);
< prev index next >