< 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 >