# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# The following comment until the empty line must be a valid YAML document
# containing exact copies of ISA specification assertions relevant to this test.
#---
#- title: Get field from object
#  description: 'Get field value from an object by field id and put it into accumulator.
#
#'
#  instructions:
#  - sig: ldobj.64 v:in:ref, field_id
#    acc: out:b64
#    format:
#    - op_v_8_id_32
#  verification:
#  - field_id_size

## runner-option: verifier-failure
## runner-option: bugid: 1834
## runner-option: tags: verifier

# Test description:
#   Check that verifier reports an error when the field resolves to a field with size or type that is not corresponding to bytecode 


.language PandaAssembly

.record panda.Object <external>

.record Q {}
.function void Q.ctor(Q a0) {
  return.void
}

.record R {
  u1             fu1
  u8             fu8
  i8             fi8
  u16            fu16
  i16            fi16
  u32            fu32
  i32            fi32
  u64            fu64
  i64            fi64
  f32            ff32
  f64            ff64

  i32[]          fi32Array
  Q              fQ
  Q[]            fQArray
  panda.Object   fObj
  panda.Object[] fObjArray
} 
.function void R.ctor(R a0) <ctor> {
  return.void
}

.function i32 main() {
  initobj.short R.ctor
  sta.obj v0
  ldobj.64 v0, R.fu1
#
    ldai 0
    return
}