Improve assertion messages in Module finalization.
When an object being finalized references an object declared as needing a definition, the definition needs to be available. Add asserts to catch this specific case.
This commit is contained in:
@@ -263,7 +263,13 @@ where
|
||||
name: &ir::ExternalName,
|
||||
) -> (Option<&B::CompiledFunction>, &str, &ir::Signature) {
|
||||
let info = self.contents.get_function_info(name);
|
||||
debug_assert!(
|
||||
!info.decl.linkage.is_definable() || info.compiled.is_some(),
|
||||
"Finalization requires a definition for function {}.",
|
||||
name,
|
||||
);
|
||||
debug_assert_eq!(info.decl.linkage.is_definable(), info.compiled.is_some());
|
||||
|
||||
(
|
||||
info.compiled.as_ref(),
|
||||
&info.decl.name,
|
||||
@@ -278,7 +284,13 @@ where
|
||||
name: &ir::ExternalName,
|
||||
) -> (Option<&B::CompiledData>, &str, bool) {
|
||||
let info = self.contents.get_data_info(name);
|
||||
debug_assert!(
|
||||
!info.decl.linkage.is_definable() || info.compiled.is_some(),
|
||||
"Finalization requires a definition for data object {}.",
|
||||
name,
|
||||
);
|
||||
debug_assert_eq!(info.decl.linkage.is_definable(), info.compiled.is_some());
|
||||
|
||||
(info.compiled.as_ref(), &info.decl.name, info.decl.writable)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user