From ea1aa4079b5a4182d4308cfed1358bb9eebe13d7 Mon Sep 17 00:00:00 2001 From: Renaud Pawlak Date: Fri, 11 Sep 2020 13:04:25 +0200 Subject: [PATCH] fix occasional npe and cast exceptions when parsing Java code with compilation errors --- .../org/jsweet/transpiler/AsyncAwaitPropagationScanner.java | 3 +++ .../org/jsweet/transpiler/GlobalBeforeTranslationScanner.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/transpiler/src/main/java/org/jsweet/transpiler/AsyncAwaitPropagationScanner.java b/transpiler/src/main/java/org/jsweet/transpiler/AsyncAwaitPropagationScanner.java index 83dff012..8d7407fd 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/AsyncAwaitPropagationScanner.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/AsyncAwaitPropagationScanner.java @@ -65,6 +65,9 @@ public class AsyncAwaitPropagationScanner extends AbstractTreeScanner { @Override public void visitApply(JCMethodInvocation invocation) { try { + if (!(invocation.meth.getClass().getField("sym").get(invocation.meth) instanceof MethodSymbol)) { + return; + } MethodSymbol method = (MethodSymbol) invocation.meth.getClass().getField("sym").get(invocation.meth); if (context.hasAnnotationType(method, JSweetConfig.ANNOTATION_ASYNC) && !"void".equals(method.getReturnType().toString())) { diff --git a/transpiler/src/main/java/org/jsweet/transpiler/GlobalBeforeTranslationScanner.java b/transpiler/src/main/java/org/jsweet/transpiler/GlobalBeforeTranslationScanner.java index d4451d7c..e69e6598 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/GlobalBeforeTranslationScanner.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/GlobalBeforeTranslationScanner.java @@ -146,7 +146,7 @@ public class GlobalBeforeTranslationScanner extends AbstractTreeScanner { context.countStaticInitializer(classdecl.sym); } } - if (def instanceof JCMethodDecl) { + if (def instanceof JCMethodDecl && ((JCMethodDecl) def).sym != null) { if (globals && ((JCMethodDecl) def).sym.isStatic()) { context.registerGlobalMethod(classdecl, (JCMethodDecl) def); } else {