Skip to content

Commit dd8665f

Browse files
committed
When merging two ApexClass objects we prefer members we willingly overwrite a members type with a primitive if it's currently Object, additionally, when encountering a member during a merge operation that is an ApexClass we recursively call merge on all of that ApexClass' members.
1 parent 1b1a407 commit dd8665f

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

app/models/ApexClass.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ boolean membersEqual(Map<ApexMember, ApexType> other) {
6464

6565
void mergeFields(ApexClass other) {
6666
for (ApexMember key : other.getMembers().keySet() ) {
67-
if (members.get(key) == null) {
67+
if (members.get(key) instanceof ApexClass && other.getMembers().get(key) instanceof ApexClass) {
68+
((ApexClass) members.get(key)).mergeFields((ApexClass) other.getMembers().get(key));
69+
}
70+
71+
if (members.get(key) == null || members.get(key) == ApexPrimitive.OBJECT) {
6872
members.put(key, other.getMembers().get(key));
6973
}
7074
}

0 commit comments

Comments
 (0)