Skip to content

Commit 38c42b7

Browse files
committed
Revert "try method #1"
2f0382b
1 parent 090a4d1 commit 38c42b7

File tree

2 files changed

+1
-49
lines changed

2 files changed

+1
-49
lines changed

sway-core/src/asm_generation/checks.rs

-40
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use crate::asm_lang::*;
77
use crate::error::*;
88

99
use sway_error::error::CompileError;
10-
use sway_ir::*;
1110

1211
/// Checks for disallowed opcodes in non-contract code.
1312
/// i.e., if this is a script or predicate, we can't use certain contract opcodes.
@@ -75,42 +74,3 @@ fn check_for_contract_opcodes(ops: &[AllocatedOp]) -> CompileResult<()> {
7574
err(vec![], errors)
7675
}
7776
}
78-
79-
pub fn check_invalid_return(ir: &Context, module: &Module) -> CompileResult<()> {
80-
let default_span = sway_types::span::Span::new("no span found".into(), 0, 1, None).unwrap();
81-
match module.get_kind(ir) {
82-
Kind::Contract | Kind::Library => ok((), vec![], vec![]),
83-
Kind::Predicate | Kind::Script => {
84-
let entry_point_function = module
85-
.function_iter(ir)
86-
.find(|func| {
87-
func.get_name(ir) == sway_types::constants::DEFAULT_ENTRY_POINT_FN_NAME
88-
})
89-
.unwrap();
90-
91-
let ret_ty = entry_point_function.get_return_type(ir);
92-
93-
if type_has_ptr(ir, &ret_ty) {
94-
err(
95-
vec![],
96-
vec![CompileError::PointerReturnNotAllowedInMain { span: default_span }],
97-
)
98-
} else {
99-
ok((), vec![], vec![])
100-
}
101-
}
102-
}
103-
}
104-
105-
fn type_has_ptr(ir: &Context, ty: &Type) -> bool {
106-
match ty {
107-
Type::Pointer(_) => true,
108-
Type::Array(aggregate) | Type::Union(aggregate) | Type::Struct(aggregate) => {
109-
match aggregate.get_content(ir) {
110-
AggregateContent::ArrayType(ty, _) => type_has_ptr(ir, ty),
111-
AggregateContent::FieldTypes(tys) => tys.iter().any(|ty| type_has_ptr(ir, ty)),
112-
}
113-
}
114-
_ => false,
115-
}
116-
}

sway-core/src/asm_generation/from_ir.rs

+1-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use super::{
22
asm_builder::AsmBuilder,
3-
checks::{check_invalid_opcodes, check_invalid_return},
3+
checks::check_invalid_opcodes,
44
finalized_asm::FinalizedAsm,
55
programs::{AbstractProgram, ProgramKind},
66
register_sequencer::RegisterSequencer,
@@ -26,14 +26,6 @@ pub fn compile_ir_to_asm(
2626
let mut errors: Vec<CompileError> = Vec::new();
2727

2828
let module = ir.module_iter().next().unwrap();
29-
30-
check!(
31-
check_invalid_return(ir, &module),
32-
return err(warnings, errors),
33-
warnings,
34-
errors
35-
);
36-
3729
let abstract_program = check!(
3830
compile_module_to_asm(RegisterSequencer::new(), ir, module),
3931
return err(warnings, errors),

0 commit comments

Comments
 (0)