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 authored and gsmet committed Aug 8, 2024
1 parent b5231da commit 28f062d
Showing 1 changed file with 8 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
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 +20,10 @@
import org.jboss.jandex.Type;

public class ClassComparisonUtil {
private static final Set<DotName> IGNORED_ANNOTATIONS = Set.of(
DotName.createSimple("kotlin.jvm.internal.SourceDebugExtension"),
DotName.createSimple("kotlin.Metadata"));

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

private static boolean compareAnnotation(AnnotationInstance a, AnnotationInstance b) {
if (IGNORED_ANNOTATIONS.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 28f062d

Please sign in to comment.