Skip to content

[Bug] Returning an unmanaged class results in a retain #761

Closed
@jtenner

Description

@jtenner
@unmanaged
class ExampleClass {}

function returnExample(): ExampleClass {
  return new ExampleClass();
}

let t = returnExample();
 (func $start (; 13 ;) (type $FUNCSIG$v)
  (local $0 i32)
  call $~lib/rt/tlsf/__alloc
  local.tee $0
  i32.const 160
  i32.gt_u
  if
   local.get $0
   i32.const 16
   i32.sub
   call $~lib/rt/pure/increment
  end
  local.get $0
  global.set $rc/unmanaged-return/t
 )

It's not accounting for the @unmanaged Example class.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions