< prev index next >

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

Print this page

        

@@ -66,10 +66,17 @@
                 "Ljava/nicl/metadata/Header;", true);
         av.visit("path", owner.path.toAbsolutePath().toString());
         av.visitEnd();
     }
 
+    private void handleException(Exception ex) {
+        System.err.println(Main.format("cannot.write.class.file", owner.pkgName + "." + owner.clsName, ex));
+        if (Main.DEBUG) {
+            ex.printStackTrace(System.err);
+        }
+    }
+
     private void annotateC(ClassVisitor cw, Cursor dcl) {
         AnnotationVisitor av = cw.visitAnnotation(
                 "Ljava/nicl/metadata/C;", true);
         SourceLocation src = dcl.getSourceLocation();
         SourceLocation.Location loc = src.getFileLocation();

@@ -201,11 +208,11 @@
                 .forEachOrdered(cx -> addField(cw, cx, cursor.type()));
         // Write class
         try {
             writeClassFile(cw, owner.clsName + "$" + intf);
         } catch (IOException ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
         }
     }
 
     private void createEnum(Cursor cursor) {
         String nativeName = Utils.getIdentifier(cursor);

@@ -244,11 +251,11 @@
                 .forEachOrdered(cx -> addConstant(cw, cx));
         // Write class
         try {
             writeClassFile(cw, owner.clsName + "$" + intf);
         } catch (IOException ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
         }
     }
 
     private void createAnnotationCls(Cursor dcl) {
         String nativeName = Utils.getIdentifier(dcl);

@@ -283,11 +290,11 @@
                 ACC_PUBLIC | ACC_STATIC | ACC_ABSTRACT | ACC_INTERFACE | ACC_ANNOTATION);
         // Write class
         try {
             writeClassFile(cw, owner.clsName + "$" + intf);
         } catch (IOException ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
         }
     }
 
     private void createFunctionalInterface(JType2 jt2) {
         JType.FnIf fnif = (JType.FnIf) jt2.getDelegate();

@@ -326,11 +333,11 @@
         mv.visitEnd();
         // Write class
         try {
             writeClassFile(cw, owner.clsName + "$" + intf);
         } catch (IOException ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
         }
     }
 
     private void createFunctionalInterface(Cursor dcl, JType.FnIf fnif) {
         JType.Function fn = fnif.getFunction();

@@ -379,11 +386,11 @@
         mv.visitEnd();
         // Write class
         try {
             writeClassFile(cw, owner.clsName + "$" + intf);
         } catch (IOException ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
         }
     }
 
     private void defineType(Cursor dcl, TypeAlias alias) {
         if (alias.getAnnotationDescriptor() != null) {

@@ -470,12 +477,14 @@
         if (jt instanceof JType2) {
             jt2 = (JType2) jt;
             jt = jt2.getDelegate();
         } else {
             logger.warning(() -> "Should have JType2 in addType");
+            if (Main.DEBUG) {
             new Throwable().printStackTrace(System.err);
         }
+        }
         if (cursor == null) {
             assert (jt2 != null);
             if (jt instanceof JType.FnIf) {
                 createFunctionalInterface(jt2);
             }

@@ -508,11 +517,11 @@
                     logger.warning(() -> "Unsupported declaration Cursor:");
                     logger.fine(() -> Printer.Stringifier(p -> p.dumpCursor(cursor, true)));
                     break;
             }
         } catch (Exception ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
             logger.warning("Cursor causing above exception is: " + cursor.spelling());
             logger.fine(() -> Printer.Stringifier(p -> p.dumpCursor(cursor, true)));
         }
         return this;
     }

@@ -692,11 +701,11 @@
     @Override
     protected void produce() {
         try {
             writeClassFile(global_cw, owner.clsName);
         } catch (IOException ex) {
-            ex.printStackTrace(System.err);
+            handleException(ex);
         }
     }
 
     @Override
     protected Map<String, byte[]> collect() {
< prev index next >