diff --git a/build.gradle b/build.gradle index 2de75cf..890f0f6 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ compileJava { } dependencies { - implementation 'com.github.javaparser:javaparser-symbol-solver-core:3.22.1' + implementation 'com.github.javaparser:javaparser-symbol-solver-core:3.24.2' implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.beust:jcommander:1.81' implementation 'org.jsoup:jsoup:1.13.1' diff --git a/src/main/java/io/github/bensku/tsbind/AstGenerator.java b/src/main/java/io/github/bensku/tsbind/AstGenerator.java index db79463..6ab7cfc 100644 --- a/src/main/java/io/github/bensku/tsbind/AstGenerator.java +++ b/src/main/java/io/github/bensku/tsbind/AstGenerator.java @@ -94,6 +94,11 @@ public Optional parseType(SourceUnit source) { } catch (UnsolvedSymbolException e) { System.err.println("failed to resolve symbol " + e.getName() + " in " + source.name + "; omitting entire type!"); return Optional.empty(); + } catch (Exception e) { + // RecordDeclaration doesn't get caught by the above. + // StructuresLocateEvent in Paper 1.18 is triggering this. + System.err.println("failed to resolve in " + source.name + "; omitting entire type!"); + return Optional.empty(); } } else { return Optional.empty(); @@ -302,7 +307,7 @@ private static class PublicFilterResult { private PublicFilterResult filterPublicTypes(List types) { PublicFilterResult result = new PublicFilterResult(); for (ClassOrInterfaceType type : types) { - ResolvedReferenceType resolved = type.resolve(); + ResolvedReferenceType resolved = type.resolve().asReferenceType(); if (isPublic(resolved.getTypeDeclaration().orElse(null))) { result.publicTypes.add(resolved); } else {