Skip to content

Commit

Permalink
ignore compiler generated annotations during Kotlin live reload
Browse files Browse the repository at this point in the history
instrument live-reload will compare class structure to make sure this class can be "redefine"
But the classes generated by Kotlin compiler contains debug annotations, the comparison always fail.

Exclude the annotations which generated by Kotlin compiler.
  • Loading branch information
lujun2 committed Aug 7, 2024
1 parent b5231da commit 594ccc8
Showing 1 changed file with 12 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;

Expand All @@ -19,6 +21,13 @@
import org.jboss.jandex.Type;

public class ClassComparisonUtil {
static Set<DotName> ignores = new HashSet<>();

static {
ignores.add(DotName.createSimple("kotlin.jvm.internal.SourceDebugExtension"));
ignores.add(DotName.createSimple("kotlin.Metadata"));
}

static boolean isSameStructure(ClassInfo clazz, ClassInfo old) {
if (clazz.flags() != old.flags()) {
return false;
Expand Down Expand Up @@ -161,6 +170,9 @@ private static void methodMap(Collection<AnnotationInstance> b, List<AnnotationI
}

private static boolean compareAnnotation(AnnotationInstance a, AnnotationInstance b) {
if (ignores.contains(a.name())) {
return true;
}
List<AnnotationValue> valuesA = a.values();
List<AnnotationValue> valuesB = b.values();
if (valuesA.size() != valuesB.size()) {
Expand Down

0 comments on commit 594ccc8

Please sign in to comment.