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.

(cherry picked from commit 28f062d)
  • Loading branch information
lujun2 authored and gsmet committed Aug 8, 2024
1 parent 518aa41 commit b92e58f
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 b92e58f

Please sign in to comment.