Skip to content

Commit

Permalink
Fixes assert in type_check_encode_buffer_empty. (#6364)
Browse files Browse the repository at this point in the history
## Description

Assert in type_check_encode_buffer_empty was causing the compiler to
crash.

We now throw a CompileError to avoid crashing.

Fixes #6338.

## Checklist

- [x] I have linked to any relevant issues.
- [x] I have commented my code, particularly in hard-to-understand
areas.
- [ ] I have updated the documentation where relevant (API docs, the
reference, and the Sway book).
- [ ] If my change requires substantial documentation changes, I have
[requested support from the DevRel
team](https://github.com/FuelLabs/devrel-requests/issues/new/choose)
- [x] I have added tests that prove my fix is effective or that my
feature works.
- [x] I have added (or requested a maintainer to add) the necessary
`Breaking*` or `New Feature` labels where relevant.
- [x] I have done my best to ensure that my PR adheres to [the Fuel Labs
Code Review
Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md).
- [x] I have requested a review from the relevant team or maintainers.
  • Loading branch information
esdrubal authored Aug 7, 2024
1 parent 5d796fb commit a906afa
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ impl ty::TyIntrinsicFunctionKind {
type_check_contract_ret(handler, ctx, kind, arguments, type_arguments, span)
}
Intrinsic::EncodeBufferEmpty => {
type_check_encode_buffer_empty(ctx, kind, arguments, type_arguments, span)
type_check_encode_buffer_empty(handler, ctx, kind, arguments, type_arguments, span)
}
Intrinsic::EncodeBufferAppend => {
type_check_encode_append(handler, ctx, kind, arguments, type_arguments, span)
Expand Down Expand Up @@ -417,13 +417,20 @@ fn new_encoding_buffer_tuple(
}

fn type_check_encode_buffer_empty(
handler: &Handler,
ctx: TypeCheckContext,
kind: sway_ast::Intrinsic,
arguments: &[Expression],
_type_arguments: &[TypeArgument],
span: Span,
) -> Result<(ty::TyIntrinsicFunctionKind, TypeId), ErrorEmitted> {
assert!(arguments.is_empty());
if !arguments.is_empty() {
return Err(handler.emit_err(CompileError::IntrinsicIncorrectNumArgs {
name: kind.to_string(),
expected: 0,
span,
}));
}

let type_engine = ctx.engines.te();
let engines = ctx.engines();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[[package]]
name = "core"
source = "path+from-root-BABDDF1B461AF6DA"

[[package]]
name = "encode_buffer_empty_with_args"
source = "member"
dependencies = ["core"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[project]
authors = ["Fuel Labs <[email protected]>"]
license = "Apache-2.0"
name = "encode_buffer_empty_with_args"
entry = "main.sw"

[dependencies]
core = { path = "../../../../../../sway-lib-core" }
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
library;

struct Buffer {
buffer: (raw_ptr, u64, u64),
}

impl Buffer {
pub fn new() -> Self {
Buffer {
buffer: __encode_buffer_empty(self),
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
category = "fail"

# check: $()buffer: __encode_buffer_empty(self),
# nextln: $()Call to "encode_buffer_empty" expects 0 arguments

0 comments on commit a906afa

Please sign in to comment.