···581 // This path is relative to each package output directory
582 prelude_location: Utf8PathBuf::from("../prelude.mjs"),
583 },
00584 };
585586 let mut compiler = PackageCompiler::new(
···581 // This path is relative to each package output directory
582 prelude_location: Utf8PathBuf::from("../prelude.mjs"),
583 },
584+585+ Target::Cranelift => super::TargetCodegenConfiguration::Cranelift {},
586 };
587588 let mut compiler = PackageCompiler::new(
···3359 match current_target {
3360 Target::Erlang => "Erlang",
3361 Target::JavaScript => "JavaScript",
03362 }
3363 );
3364 let hint = wrap("Did you mean to build for a different target?");
···3387 let target = match target {
3388 Target::Erlang => "Erlang",
3389 Target::JavaScript => "JavaScript",
03390 };
3391 let text = wrap_format!(
3392 "The `{name}` function is public but doesn't have an \
···4353 "You can not set a runtime for Erlang. Did you mean to target JavaScript?"
4354 .into(),
4355 ),
00004356 };
43574358 vec![Diagnostic {
···3359 match current_target {
3360 Target::Erlang => "Erlang",
3361 Target::JavaScript => "JavaScript",
3362+ Target::Cranelift => "Cranelift",
3363 }
3364 );
3365 let hint = wrap("Did you mean to build for a different target?");
···3388 let target = match target {
3389 Target::Erlang => "Erlang",
3390 Target::JavaScript => "JavaScript",
3391+ Target::Cranelift => "Cranelift",
3392 };
3393 let text = wrap_format!(
3394 "The `{name}` function is public but doesn't have an \
···4355 "You can not set a runtime for Erlang. Did you mean to target JavaScript?"
4356 .into(),
4357 ),
4358+ Target::Cranelift => Some(
4359+ "You can not set a runtime for Cranelift. Did you mean to target JavaScript?"
4360+ .into()
4361+ )
4362 };
43634364 vec![Diagnostic {
···234 /// - `uses_javascript_externals: true` the function is using JavaScript
235 /// external code.
236 uses_javascript_externals: bool,
0000237 /// Whether the function can be called on the Erlang target, either due to a
238 /// pure Gleam implementation or an implementation that uses some Erlang
239 /// externals.
···242 /// to a pure Gleam implementation or an implementation that uses some
243 /// JavaScript externals.
244 can_run_on_javascript: bool,
0000245}
246247impl ImplementationsInterface {
···259 gleam,
260 uses_erlang_externals,
261 uses_javascript_externals,
262-263 can_run_on_erlang,
264 can_run_on_javascript,
0265 } = implementations;
266267 ImplementationsInterface {
268 gleam: *gleam,
269 uses_erlang_externals: *uses_erlang_externals,
270 uses_javascript_externals: *uses_javascript_externals,
0271 can_run_on_erlang: *can_run_on_erlang,
272 can_run_on_javascript: *can_run_on_javascript,
0273 }
274 }
275}
···234 /// - `uses_javascript_externals: true` the function is using JavaScript
235 /// external code.
236 uses_javascript_externals: bool,
237+ /// Set to `true` if the const/function is defined using Cranelift external
238+ /// code. That means that the function will use Cranelift code through FFI when
239+ /// compiled for the Cranelift target.
240+ uses_cranelift_externals: bool,
241 /// Whether the function can be called on the Erlang target, either due to a
242 /// pure Gleam implementation or an implementation that uses some Erlang
243 /// externals.
···246 /// to a pure Gleam implementation or an implementation that uses some
247 /// JavaScript externals.
248 can_run_on_javascript: bool,
249+ /// Whether the function can be called on the Cranelift target, either due to a
250+ /// pure Gleam implementation or an implementation that uses some Cranelift
251+ /// externals.
252+ can_run_on_cranelift: bool,
253}
254255impl ImplementationsInterface {
···267 gleam,
268 uses_erlang_externals,
269 uses_javascript_externals,
270+ uses_cranelift_externals,
271 can_run_on_erlang,
272 can_run_on_javascript,
273+ can_run_on_cranelift,
274 } = implementations;
275276 ImplementationsInterface {
277 gleam: *gleam,
278 uses_erlang_externals: *uses_erlang_externals,
279 uses_javascript_externals: *uses_javascript_externals,
280+ uses_cranelift_externals: *uses_cranelift_externals,
281 can_run_on_erlang: *can_run_on_erlang,
282 can_run_on_javascript: *can_run_on_javascript,
283+ can_run_on_cranelift: *can_run_on_cranelift,
284 }
285 }
286}