1*6c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1 2e17e7173SPete Steinfeldmodule m 3e17e7173SPete Steinfeld!C778 The same binding-attr shall not appear more than once in a given 4e17e7173SPete Steinfeld!binding-attr-list. 5e17e7173SPete Steinfeld! 6e17e7173SPete Steinfeld!R749 type-bound-procedure-stmt 7e17e7173SPete Steinfeld! PROCEDURE [ [ ,binding-attr-list] :: ]type-bound-proc-decl-list 8e17e7173SPete Steinfeld! or PROCEDURE (interface-name),binding-attr-list::binding-name-list 9e17e7173SPete Steinfeld! 10e17e7173SPete Steinfeld! 11e17e7173SPete Steinfeld! binding-attr values are: 12e17e7173SPete Steinfeld! PUBLIC, PRIVATE, DEFERRED, NON_OVERRIDABLE, NOPASS, PASS [ (arg-name) ] 13e17e7173SPete Steinfeld! 14e17e7173SPete Steinfeld type, abstract :: boundProcType 15e17e7173SPete Steinfeld contains 16e17e7173SPete Steinfeld !WARNING: Attribute 'PUBLIC' cannot be used more than once 17e17e7173SPete Steinfeld procedure(subPublic), public, deferred, public :: publicBinding 18e17e7173SPete Steinfeld !WARNING: Attribute 'PRIVATE' cannot be used more than once 19e17e7173SPete Steinfeld procedure(subPrivate), private, deferred, private :: privateBinding 20e17e7173SPete Steinfeld !WARNING: Attribute 'DEFERRED' cannot be used more than once 21e17e7173SPete Steinfeld procedure(subDeferred), deferred, public, deferred :: deferredBinding 22e17e7173SPete Steinfeld !WARNING: Attribute 'NON_OVERRIDABLE' cannot be used more than once 23e17e7173SPete Steinfeld procedure, non_overridable, public, non_overridable :: subNon_overridable; 24e17e7173SPete Steinfeld !WARNING: Attribute 'NOPASS' cannot be used more than once 25e17e7173SPete Steinfeld procedure(subNopass), nopass, deferred, nopass :: nopassBinding 26e17e7173SPete Steinfeld !WARNING: Attribute 'PASS' cannot be used more than once 27e17e7173SPete Steinfeld procedure(subPass), pass, deferred, pass :: passBinding 28e17e7173SPete Steinfeld !ERROR: Attributes 'PASS' and 'NOPASS' conflict with each other 29b752a8caSsameeran joshi procedure(subPassNopass), pass, deferred, nopass :: passNopassBinding ! C781 30e17e7173SPete Steinfeld end type boundProcType 31e17e7173SPete Steinfeld 32e17e7173SPete Steinfeldcontains 33e17e7173SPete Steinfeld subroutine subPublic(x) 34e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 35e17e7173SPete Steinfeld end subroutine subPublic 36e17e7173SPete Steinfeld 37e17e7173SPete Steinfeld subroutine subPrivate(x) 38e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 39e17e7173SPete Steinfeld end subroutine subPrivate 40e17e7173SPete Steinfeld 41e17e7173SPete Steinfeld subroutine subDeferred(x) 42e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 43e17e7173SPete Steinfeld end subroutine subDeferred 44e17e7173SPete Steinfeld 45e17e7173SPete Steinfeld subroutine subNon_overridable(x) 46e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 47e17e7173SPete Steinfeld end subroutine subNon_overridable 48e17e7173SPete Steinfeld 49e17e7173SPete Steinfeld subroutine subNopass(x) 50e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 51e17e7173SPete Steinfeld end subroutine subNopass 52e17e7173SPete Steinfeld 53e17e7173SPete Steinfeld subroutine subPass(x) 54e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 55e17e7173SPete Steinfeld end subroutine subPass 56e17e7173SPete Steinfeld 57e17e7173SPete Steinfeld subroutine subPassNopass(x) 58e17e7173SPete Steinfeld class(boundProcType), intent(in) :: x 59e17e7173SPete Steinfeld end subroutine subPassNopass 60e17e7173SPete Steinfeld 61e17e7173SPete Steinfeldend module m 62