Skip to content

Commit

Permalink
Force mixin & ME annotations to be indexed
Browse files Browse the repository at this point in the history
  • Loading branch information
Matyrobbrt committed Feb 2, 2025
1 parent 6f94a19 commit 45897d7
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions src/main/java/net/neoforged/waifu/index/IndexingClassVisitor.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public void visitFieldInsn(int opcode, String owner, String name, String descrip

@Override
public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) {
if (includeAnnotations && visible && shouldVisitAnnotations(descriptor)) {
if (includeAnnotations && shouldVisitAnnotations(visible, descriptor)) {
var info = new ClassData.AnnotationInfo(Type.getType(descriptor), new HashMap<>(2));
method.annotations().add(info);
return visitor(info);
Expand All @@ -97,7 +97,7 @@ public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) {

@Override
public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) {
if (current != null && includeAnnotations && visible && shouldVisitAnnotations(descriptor)) {
if (current != null && includeAnnotations && shouldVisitAnnotations(visible, descriptor)) {
var info = new ClassData.AnnotationInfo(Type.getType(descriptor), new HashMap<>(2));
current.annotations().add(info);
return visitor(info);
Expand All @@ -112,7 +112,7 @@ public FieldVisitor visitField(int access, String name, String descriptor, Strin
return includeAnnotations ? new FieldVisitor(Opcodes.ASM9) {
@Override
public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) {
if (visible && shouldVisitAnnotations(descriptor)) {
if (shouldVisitAnnotations(visible, descriptor)) {
var info = new ClassData.AnnotationInfo(Type.getType(descriptor), new HashMap<>(2));
field.annotations().add(info);
return visitor(info);
Expand All @@ -131,7 +131,7 @@ public void visit(String name, Object value) {

@Override
public AnnotationVisitor visitAnnotation(String name, String descriptor) {
if (shouldVisitAnnotations(descriptor)) {
if (shouldVisitAnnotations(true, descriptor)) {
var newAn = new ClassData.AnnotationInfo(Type.getType(descriptor), new HashMap<>(2));
annotationInfo.members().put(name, newAn);
return visitor(newAn);
Expand All @@ -156,7 +156,7 @@ public void visit(String name, Object value) {

@Override
public AnnotationVisitor visitAnnotation(String name, String descriptor) {
if (shouldVisitAnnotations(descriptor)) {
if (shouldVisitAnnotations(true, descriptor)) {
var newAn = new ClassData.AnnotationInfo(Type.getType(descriptor), new HashMap<>(2));
lst.add(newAn);
return visitor(newAn);
Expand All @@ -173,8 +173,11 @@ public void visitEnum(String name, String descriptor, String value) {
};
}

private boolean shouldVisitAnnotations(String ann) {
private boolean shouldVisitAnnotations(boolean isVisible, String ann) {
// scala(3)/reflect/ScalaSignature
return !ann.endsWith("kotlin/Metadata;") && !ann.contains("scala/reflect/") && !ann.contains("scala3/reflect/");
if (ann.endsWith("kotlin/Metadata;") || ann.contains("scala/reflect/") || ann.contains("scala3/reflect/")) {
return false;
}
return isVisible || ann.startsWith("Lorg/spongepowered/asm/mixin/") || ann.contains("/mixinextras/");
}
}

0 comments on commit 45897d7

Please sign in to comment.