Skip to content

Commit 066f801

Browse files
committed
Detect unexpected supertypes in CLDC11 compatibility check
1 parent 1a2edbd commit 066f801

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

.github/scripts/cldc11_api_compat_check.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,19 +269,36 @@ def ensure_subset(
269269
target_cache: Dict[str, Optional[ApiSurface]] = {}
270270

271271
for index, class_name in enumerate(sorted(source_classes), start=1):
272-
source_api = build_full_api(class_name, source_lookup, source_cache)
273-
if source_api is None:
272+
source_info = source_lookup(class_name)
273+
if source_info is None:
274274
ok = False
275275
messages.append(f"Failed to read {class_name} from source classes")
276276
continue
277277

278+
source_api = build_full_api(class_name, source_lookup, source_cache)
279+
assert source_api is not None
280+
278281
if index % 25 == 0:
279282
log(f" Processed {index}/{len(source_classes)} classes for {target_label} subset check...")
280283

284+
target_info = target_lookup(class_name)
285+
if target_info is None:
286+
ok = False
287+
messages.append(f"Missing class in {target_label}: {class_name}")
288+
continue
289+
281290
target_api = build_full_api(class_name, target_lookup, target_cache)
282291
if target_api is None:
283292
ok = False
284-
messages.append(f"Missing class in {target_label}: {class_name}")
293+
messages.append(f"Failed to read {class_name} from {target_label}")
294+
continue
295+
296+
extra_supers = [stype for stype in source_info.supers if stype not in target_info.supers]
297+
if extra_supers:
298+
ok = False
299+
messages.append(f"Incompatibilities for {class_name} against {target_label}:")
300+
for stype in extra_supers:
301+
messages.append(f" - supertype: {stype} not present in {target_label} declaration")
285302
continue
286303

287304
missing_methods, missing_fields = source_api.missing_from(target_api)

0 commit comments

Comments
 (0)