OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [testsuite/] [gfortran.dg/] [structure_constructor_8.f03] - Diff between revs 302 and 384

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 302 Rev 384
! { dg-do compile }
! { dg-do compile }
! Test for errors when setting private components inside a structure constructor
! Test for errors when setting private components inside a structure constructor
! or when constructing a private structure.
! or when constructing a private structure.
MODULE privmod
MODULE privmod
  IMPLICIT NONE
  IMPLICIT NONE
  TYPE :: haspriv_t
  TYPE :: haspriv_t
    INTEGER :: a
    INTEGER :: a
    INTEGER, PRIVATE :: b = 42
    INTEGER, PRIVATE :: b = 42
  END TYPE haspriv_t
  END TYPE haspriv_t
  TYPE :: allpriv_t
  TYPE :: allpriv_t
    PRIVATE
    PRIVATE
    INTEGER :: a = 25
    INTEGER :: a = 25
  END TYPE allpriv_t
  END TYPE allpriv_t
  TYPE, PRIVATE :: ispriv_t
  TYPE, PRIVATE :: ispriv_t
    INTEGER :: x
    INTEGER :: x
  END TYPE ispriv_t
  END TYPE ispriv_t
CONTAINS
CONTAINS
  SUBROUTINE testfunc ()
  SUBROUTINE testfunc ()
    IMPLICIT NONE
    IMPLICIT NONE
    TYPE(haspriv_t) :: struct1
    TYPE(haspriv_t) :: struct1
    TYPE(allpriv_t) :: struct2
    TYPE(allpriv_t) :: struct2
    TYPE(ispriv_t) :: struct3
    TYPE(ispriv_t) :: struct3
    ! This should succeed from within the module, no error.
    ! This should succeed from within the module, no error.
    struct1 = haspriv_t (1, 2)
    struct1 = haspriv_t (1, 2)
    struct2 = allpriv_t (42)
    struct2 = allpriv_t (42)
    struct3 = ispriv_t (42)
    struct3 = ispriv_t (42)
  END SUBROUTINE testfunc
  END SUBROUTINE testfunc
END MODULE privmod
END MODULE privmod
PROGRAM test
PROGRAM test
  USE privmod
  USE privmod
  IMPLICIT NONE
  IMPLICIT NONE
  TYPE(haspriv_t) :: struct1
  TYPE(haspriv_t) :: struct1
  TYPE(allpriv_t) :: struct2
  TYPE(allpriv_t) :: struct2
  ! This should succeed, not giving value to private component
  ! This should succeed, not giving value to private component
  struct1 = haspriv_t (5)
  struct1 = haspriv_t (5)
  struct2 = allpriv_t ()
  struct2 = allpriv_t ()
  ! These should fail
  ! These should fail
  struct1 = haspriv_t (1, 2) ! { dg-error "is a PRIVATE component" }
  struct1 = haspriv_t (1, 2) ! { dg-error "is a PRIVATE component" }
  struct1 = haspriv_t (b = 2, a = 1) ! { dg-error "is a PRIVATE component" }
  struct1 = haspriv_t (b = 2, a = 1) ! { dg-error "is a PRIVATE component" }
  ! This should fail as all components are private
  ! This should fail as all components are private
  struct2 = allpriv_t (5) ! { dg-error "is a PRIVATE component" }
  struct2 = allpriv_t (5) ! { dg-error "is a PRIVATE component" }
  ! This should fail as the type itself is private, and the expression should
  ! This should fail as the type itself is private, and the expression should
  ! be deduced as call to an undefined function.
  ! be deduced as call to an undefined function.
  WRITE (*,*) ispriv_t (5) ! { dg-error "has no IMPLICIT type" }
  WRITE (*,*) ispriv_t (5) ! { dg-error "has no IMPLICIT type" }
END PROGRAM test
END PROGRAM test
! { dg-final { cleanup-modules "privmod" } }
! { dg-final { cleanup-modules "privmod" } }
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.