GetFirefly/firefly

Implement function reference constant building

KronicDeth opened this issue · 1 comments

After fixing #544, this occurs

not yet implemented: build function reference constant for Some(value29) = Static(FunctionIdent { module: Ident<init SourceSpan { source_id: SourceId(4294967295), start: ByteIndex(0), end: ByteIndex(0) }>, name: Ident<return_from_export SourceSpan { source_id: SourceId(4294967295), start: ByteIndex(0), end: ByteIndex(0) }>, arity: 0 })', compiler/codegen/src/builder/ops/builders/call.rs:106:9

init.erl

-module(init).
-export([start/0]).
-import(erlang, [apply/2, display/1]).

start() ->
  from_fun().

from_fun() ->
  Fun = fun return_from_export/0,
  Return = apply(Fun, []),
  display(Return).


return_from_export() ->
  from_fun.

Affects the following files in OTP:

  • erts/preloaded/src/init.erl
  • lib/common_test/src/ct_config_xml.erl
  • lib/compiler/src/beam_clean.erl
  • lib/compiler/src/beam_ssa_funs.erl
  • lib/compiler/src/core_pp.erl
  • lib/compiler/src/sys_core_alias.erl
  • lib/compiler/src/sys_core_bsm.erl
  • lib/compiler/src/sys_core_inline.erl
  • lib/compiler/src/sys_core_prepare.erl
  • lib/compiler/src/v3_kernel_pp.erl
  • lib/debugger/src/dbg_iload.erl
  • lib/dialyzer/src/dialyzer_callgraph.erl
  • lib/dialyzer/src/dialyzer_dep.erl
  • lib/diameter/src/compiler/diameter_dict_scanner.erl
  • lib/diameter/src/info/diameter_dbg.erl
  • lib/diameter/src/info/diameter_info.erl
  • lib/diameter/src/transport/diameter_tcp.erl
  • lib/inets/src/inets_app/inets_trace.erl
  • lib/kernel/src/raw_file_io.erl
  • lib/mnesia/src/mnesia_text.erl
  • lib/mnesia/src/mnesia_log.erl
  • lib/stdlib/src/digraph_utils.erl
  • lib/stdlib/src/pool.erl
  • lib/syntax_tools/src/epp_dodger.erl
  • lib/syntax_tools/src/erl_syntax_lib.erl
  • lib/syntax_tools/src/merl.erl
  • lib/syntax_tools/src/prettypr.erl
  • lib/xmerl/src/xmerl_simple.erl
  • lib/xmerl/src/xmerl_xlate.erl
  • lib/xmerl/src/xmerl_xs.erl