36 lines
1.1 KiB
Fortran
36 lines
1.1 KiB
Fortran
! Test that private component names are mangled inside fir.record
|
|
! in a way that allow components with the same name to be added in
|
|
! type extensions.
|
|
! RUN: bbc -emit-hlfir -o - %s | FileCheck %s
|
|
|
|
module name_clash
|
|
type:: t
|
|
integer, private :: i
|
|
end type
|
|
type(t), parameter :: cst = t(42)
|
|
end module
|
|
|
|
!CHECK-LABEL: func.func @_QPuser_clash(
|
|
!CHECK-SAME: !fir.ref<!fir.type<_QFuser_clashTt2{t:!fir.type<_QMname_clashTt{_QMname_clashTt.i:i32}>,i:i32}>>
|
|
!CHECK-SAME: !fir.ref<!fir.type<_QMname_clashTt{_QMname_clashTt.i:i32}>>
|
|
subroutine user_clash(a, at)
|
|
use name_clash
|
|
type,extends(t) :: t2
|
|
integer :: i = 2
|
|
end type
|
|
type(t2) :: a, b
|
|
type(t) :: at
|
|
print *, a%i
|
|
print *, t2(t=at)
|
|
a = b
|
|
end subroutine
|
|
|
|
! CHECK-LABEL: func.func @_QPclash_with_intrinsic_module(
|
|
! CHECK-SAME: !fir.ref<!fir.type<_QFclash_with_intrinsic_moduleTmy_class{ieee_class_type:!fir.type<_QMieee_arithmeticTieee_class_type{_QMieee_arithmeticTieee_class_type.which:i8}>,which:i8}>>
|
|
subroutine clash_with_intrinsic_module(a)
|
|
use ieee_arithmetic
|
|
type, extends(ieee_class_type) :: my_class
|
|
integer(1) :: which
|
|
end type
|
|
type(my_class) :: a
|
|
end subroutine
|