view gcc/testsuite/gfortran.dg/finalize_7.f03 @ 128:fe568345ddd5

fix CbC-example
author mir3636
date Wed, 11 Apr 2018 19:32:28 +0900
parents 04ced10e8804
children
line wrap: on
line source

! { dg-do compile }
! { dg-options "-Wsurprising" }

! Implementation of finalizer procedures.
! Check for expected warnings on dubious FINAL constructs.

MODULE final_type
  IMPLICIT NONE

  TYPE :: type_1
    INTEGER, ALLOCATABLE :: fooarr(:)
    REAL :: foobar
  CONTAINS
    ! Non-scalar procedures should be assumed shape
    FINAL :: fin1_scalar
    FINAL :: fin1_shape_1
    FINAL :: fin1_shape_2
  END TYPE type_1

  TYPE :: type_2 ! { dg-warning "Only array FINAL procedures" }
    REAL :: x
  CONTAINS
    ! No scalar finalizer, only array ones
    FINAL :: fin2_vector
  END TYPE type_2

CONTAINS

  SUBROUTINE fin1_scalar (el)
    IMPLICIT NONE
    TYPE(type_1) :: el
  END SUBROUTINE fin1_scalar

  SUBROUTINE fin1_shape_1 (v) ! { dg-warning "assumed shape" }
    IMPLICIT NONE
    TYPE(type_1) :: v(*)
  END SUBROUTINE fin1_shape_1

  SUBROUTINE fin1_shape_2 (v) ! { dg-warning "assumed shape" }
    IMPLICIT NONE
    TYPE(type_1) :: v(42, 5)
  END SUBROUTINE fin1_shape_2

  SUBROUTINE fin2_vector (v)
    IMPLICIT NONE
    TYPE(type_2) :: v(:)
  END SUBROUTINE fin2_vector

END MODULE final_type

PROGRAM finalizer
  IMPLICIT NONE
  ! Nothing here
END PROGRAM finalizer