Skip to content

&& can't be calculated at compile time #2946

@maizi20

Description

@maizi20

Bug description

&& can't be calculated at compile time, but ?: can.

Steps to reproduce

input assemblyscript:

class A{
  foo!:i32
  bar!:i32
}
export const compiletime=offsetof<A>('foo')==0?offsetof<A>('bar')==4:0
export const runtime=offsetof<A>('foo')==0&&offsetof<A>('bar')==4

output wat:

(module
 (type $0 (func))
 (global $example/compiletime i32 (i32.const 1))
 (global $example/runtime (mut i32) (i32.const 0))
 (memory $0 0)
 (table $0 1 1 funcref)
 (elem $0 (i32.const 1))
 (export "compiletime" (global $example/compiletime))
 (export "runtime" (global $example/runtime))
 (export "memory" (memory $0))
 (start $~start)
 (func $start:example
  (local $0 i32)
  i32.const 0
  i32.const 0
  i32.eq
  local.tee $0
  if (result i32)
   i32.const 4
   i32.const 4
   i32.eq
  else
   local.get $0
  end
  i32.const 0
  i32.ne
  global.set $example/runtime
 )
 (func $~start
  call $start:example
 )
)

AssemblyScript version

0.27.37

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